Sindbad~EG File Manager
from flask import request, Blueprint, jsonify, redirect, url_for,flash, render_template,session,json
from core.model.BadgeModel import BadgeModel
from core.model.FoodSessionModel import FoodSessionModel
from core.model.BadgeUserModel import BadgeUserModel
from .. import Cryptography
from flask import app
from random import randint
import datetime
from datetime import timedelta,date,datetime,time
from werkzeug.utils import secure_filename
from os.path import join, dirname, realpath
import os
import pandas as pd
import numpy as np
from core.library.BackgroundTasks import BackgroundTasks
app = Blueprint('badge_user', __name__)
# Testing
@app.route('/background', methods = ["GET", "POST"])
def Background():
print(" Background function calling ...")
t = BackgroundTasks()
t.start()
return "success"
# Testing end
@app.route('/badge/<int:conf_id>/<conf_key>', methods = ["GET", "POST"])
def BadgeHome(conf_id,conf_key):
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if session.get('badge'):
BadgeUserModel().createConfTables(conf_id,conf_key,curr_dt)
return redirect(url_for('badge_user.BadgeDashborad' ,conf_id=conf_id,conf_key=conf_key))
if get_conf :
BadgeUserModel().createConfTables(conf_id,conf_key,curr_dt)
return render_template('badge_users/login_screen.html' ,conf_data = get_conf,conf_id=conf_id,conf_key=conf_key)
else :
flash("Invalid URL" , "errorMsg")
return redirect (url_for('badge_user.BadgeLogin',conf_id=conf_id ,conf_key=conf_key))
else:
return redirect (url_for('badge_user.BadgeLogin',conf_id=conf_id ,conf_key=conf_key))
### ---------------------------------------------------------------------- ###
@app.route('/<int:conf_id>/<conf_key>/badge_login', methods = ["GET"])
def BadgeLogin(conf_id,conf_key):
conf_name = None
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if get_conf :
conf_name = get_conf["conf_name"]
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
BadgeUserModel().createConfTables(conf_id,conf_key,curr_dt)
else :
return "<h4 style='color:red;'>Invalid URL </h4>"
if session.get('badge'):
if get_conf :
return redirect(url_for('badge_user.BadgeDashborad' ,conf_id=conf_id,conf_key=conf_key))
else:
flash("Invalid URL" , "errorMsg")
return redirect (url_for('badge_user.BadgeLogin',conf_id=conf_id ,conf_key=conf_key))
else:
if get_conf :
return render_template('badge_users/login_screen.html' ,conf_data = get_conf,conf_id=conf_id ,conf_key= conf_key,conf_name=conf_name)
else:
flash("Invalid URL" , "errorMsg")
return redirect (url_for('badge_user.BadgeLogin',conf_id=conf_id ,conf_key=conf_key))
# Post_login1
@app.route('/badge_post_login', methods = ["POST"])
def BadgePostLogin():
if request.method =="POST" :
username = request.form['username']
password = request.form['password']
conf_id = request.form['conf_id']
conf_key = request.form['conf_key']
get_conf = BadgeModel().checkUsername(username,conf_id)
if get_conf :
db_pass = get_conf['badge_login_password']
if password == db_pass:
admin_id = get_conf['conf_id']
session['badge'] = get_conf
encrypted_admin_id = Cryptography.encrypt(conf_id)
return redirect (url_for('badge_user.BadgeDashborad',conf_id=conf_id ,conf_key = conf_key))
else:
flash("Password is mismatch" , "errorMsg")
return redirect (url_for('badge_user.BadgeLogin',conf_id=conf_id ,conf_key= conf_key))
else:
flash("Username is not registered." , "errorMsg")
return redirect (url_for('badge_user.BadgeLogin',conf_id=conf_id ,conf_key= conf_key))
else :
return "Method not allowed"
# logout route
@app.route('/<int:conf_id>/<conf_key>/badge_logout', methods = ["GET", "POST"])
def BadgeLogout(conf_id,conf_key):
if session.get('badge'):
session.pop('badge')
else :
pass
session.pop('_flashes', None)
return redirect(url_for('badge_user.BadgeLogin',conf_id=conf_id,conf_key=conf_key))
@app.route('/<int:conf_id>/<conf_key>/badge_dashboard', methods = ["GET", "POST"])
def BadgeDashborad(conf_id,conf_key):
if session.get('badge'):
conf_data = session.get('badge')
conf_name = conf_data['conf_name']
return render_template('badge_users/dashbord.html',conf_id=conf_id ,conf_key=conf_key,conf_name=conf_name)
else:
flash("Invalid Login" , "errorMsg")
return redirect (url_for('badge_user.BadgeLogin',conf_id=conf_id ,conf_key=conf_key))
@app.route('/<int:conf_id>/<conf_key>/registered_users', methods = ["GET"])
def RegisteredUsers(conf_id,conf_key):
if session.get('badge'):
conf_data = session.get('badge')
conf_name = conf_data['conf_name']
del_table_name = conf_data['del_table_name']
get_conf = BadgeModel().GetConf(conf_id,conf_key)
get_role_data = BadgeModel().getRole(conf_id)
if get_conf :
registered_users = BadgeModel().AllRegUsers(conf_id,del_table_name)
return render_template('badge/registered_users.html' ,conf_data = get_conf,conf_id=conf_id ,conf_key= conf_key,registered_users =registered_users,conf_name=conf_name,b_role =get_role_data)
else :
flash("Invalid URL" , "errorMsg")
return redirect (url_for('badge_user.BadgeLogin',conf_id=conf_id ,conf_key=conf_key))
else :
flash("Invalid URL" , "errorMsg")
return redirect (url_for('badge_user.BadgeLogin',conf_id=conf_id ,conf_key=conf_key))
@app.route('/<int:conf_id>/<conf_key>/edit_data/<int:delegate_id>', methods = ["GET","POST"])
def EditData(conf_id,conf_key,delegate_id):
if session.get('badge'):
conf_data = session.get('badge')
conf_name = conf_data['conf_name']
del_table_name = conf_data['del_table_name']
states = BadgeModel().get_states()
data = BadgeModel().EditRegisteredData(conf_id,delegate_id,del_table_name)
return render_template('badge/edit_data.html',data=data,states=states,conf_id=conf_id ,conf_key=conf_key,conf_name=conf_name)
else :
flash("Invalid URL" , "errorMsg")
return redirect (url_for('badge_user.BadgeLogin',conf_id=conf_id ,conf_key=conf_key))
@app.route('/<int:conf_id>/<conf_key>/post_edit_data',methods = ['POST', 'GET'])
def PostEditData(conf_id,conf_key):
now = datetime.now()
current_dt = now.strftime("%Y-%m-%d %H:%M:%S")
if request.method=="POST":
if session.get('badge'):
conf_data = session.get('badge')
conf_name = conf_data['conf_name']
# del_table_name = conf_data['del_table_name']
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if get_conf :
del_table_name = get_conf["del_table_name"]
else :
flash("Invalid login" , "errorMsg")
return redirect (url_for('badge_user.BadgeLogin',conf_id=conf_id ,conf_key=conf_key))
delegate_id = request.values.get('delegate_id')
delegate_id = int(delegate_id)
full_name = request.values.get('full_name' ,'') or ''
email = request.values.get('email' ,'') or ''
mobile = request.values.get('mobile' ,'') or ''
city = request.values.get('city' ,'') or ''
state_name = request.values.get('state_name' ,'') or ''
company_name = request.values.get('company_name') or ''
counter = request.values.get('counter') or 0
batch = request.values.get('batch' ,'') or ''
role = request.values.get('role' ,'') or ''
if batch :
batch = batch.upper()
if role :
role = role.upper()
#######
update_stmt = "update "+ del_table_name + " set full_name = '"+full_name +"' , email = '"+ email +"' ,mobile='"+mobile+"' , city = '"+city+"' , state = '"+state_name+"' ,company_name='"+company_name+"', counter = "+str(counter)+" , batch = '"+batch+"' , role = '"+role+"' ,updated_at = '"+current_dt+"' where delegate_id = " + str(delegate_id) + " ;"
updated_data = BadgeModel().UpdateDelegates(update_stmt,delegate_id,conf_id)
flash("Record updated ." , "successMsg")
return redirect(url_for('badge_user.RegisteredUsers',conf_id=conf_id ,conf_key= conf_key))
####
# check_email = BadgeModel().check_email_for_update(email,delegate_id,del_table_name)
# if (check_email ['email_count'] >=1):
# flash('Email Id Already Exists.','errorMsg')
# return redirect (url_for ('badge_user.EditData',delegate_id=delegate_id,conf_id=conf_id ,conf_key= conf_key))
# else:
# update_stmt = "update "+ del_table_name + " set full_name = '"+full_name +"' , email = '"+ email +"' , city = '"+city+"' , state = '"+state_name+"' where delegate_id = " + str(delegate_id) + " ;"
# updated_data = BadgeModel().UpdateDelegates(update_stmt,delegate_id,conf_id)
# flash("Record updated ." , "successMsg")
# return redirect(url_for('badge_user.RegisteredUsers',conf_id=conf_id ,conf_key= conf_key))
else :
flash("Invalid URL" , "errorMsg")
return redirect (url_for('badge_user.BadgeLogin',conf_id=conf_id ,conf_key=conf_key))
else:
flash("Please try again")
return redirect(url_for('badge_user.EditData',delegate_id=delegate_id,conf_id=conf_id ,conf_key= conf_key))
#Move delegate records from delegates table into conf-delegate table
@app.route('/<int:conf_id>/<conf_key>/move_delegates', methods = ["GET","POST"])
def MoveDelegates(conf_id,conf_key):
now = datetime.now()
current_dt = now.strftime("%Y-%m-%d %H:%M:%S")
getFcConfData = FoodSessionModel().getFcConfData(conf_id,conf_key)
if getFcConfData :
conf_del_table = getFcConfData["del_table_name"]
checkMaxDelegate = BadgeModel().getMaxDelegateNo(conf_del_table)
max_del_no = checkMaxDelegate['delegate_no']
if max_del_no :
pass
else :
max_del_no = 0
move_records = BadgeModel().delegateMoveToConfDelegate(conf_id,conf_del_table,max_del_no,current_dt)
flash(move_records ,"successMsg")
return redirect (url_for('badge_user.BadgeDashborad',conf_id=conf_id,conf_key=conf_key))
else :
return "Invalid URL"
##### # nov 07 2022
@app.route('/<int:conf_id>/<conf_key>/role_update', methods = ["GET","POST"])
def RoleUpdate(conf_id,conf_key):
update_stmt = ""
counter = request.form['counter']
batch = request.form['batch']
role = request.form['role']
delegate_no_from = request.form['delegate_no_from']
delegate_no_to = request.form['delegate_no_to'] or 0
delegate_no_from = int(delegate_no_from)
delegate_no_to = int(delegate_no_to)
batch = batch.upper()
role = role.upper()
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if get_conf :
del_table_name = get_conf["del_table_name"]
else :
flash("Invalid login" ,"errorMsg")
return redirect (url_for('badge_user.BadgeLogin',conf_id=conf_id ,conf_key=conf_key))
if delegate_no_from and delegate_no_to == 0 :
update_stmt = update_stmt + " update " + del_table_name + " set counter = "+(counter)+", batch ='"+str(batch)+"', role ='" +role+"' ,updated_at = '"+curr_dt+"' where delegate_no >= "+str(delegate_no_from)+"; \n"
else :
if delegate_no_from < delegate_no_to :
# if from delgate number is less than delegate to number
update_stmt = update_stmt + " update " + del_table_name + " set counter = "+(counter)+", batch ='"+str(batch)+"', role ='" +role+"', updated_at = '"+curr_dt+"' where delegate_no between "+str(delegate_no_from)+" and "+str(delegate_no_to)+"; \n"
else :
flash("To delegate number must be greater than from delegate number" ,"errorMsg")
return redirect(url_for('badge_user.RegisteredUsers' ,conf_id=conf_id,conf_key= conf_key))
update_role = BadgeModel().updateCouterBatch(update_stmt)
if update_role == "success" :
flash("Successfully role updated" , "successMsg")
return redirect(url_for('badge_user.RegisteredUsers' ,conf_id=conf_id,conf_key= conf_key))
else :
msg = update_role
flash(msg , "errorMsg")
return redirect(url_for('badge_user.RegisteredUsers' ,conf_id=conf_id,conf_key= conf_key))
# ------------ -------------- -------------
# csv import into conference-delegates records
@app.route('/<int:conf_id>/<conf_key>/bulk_upload', methods = ["GET","POST"])
def BulkUpload(conf_id,conf_key):
conf_data = BadgeModel().GetConf(conf_id,conf_key)
if conf_data :
del_table_name = conf_data["del_table_name"]
del_table_columns = BadgeUserModel().getDelegatesTableColumn(conf_id,del_table_name)
# if del_table_columns :
return render_template('badge_users/upload_screen.html',conf_id=conf_id,conf_key=conf_key,conf_data=conf_data,del_table_columns=del_table_columns,del_table_name=del_table_name)
else :
flash("Invalid URL" , "errorMsg")
return redirect (url_for('badge_user.BadgeLogin',conf_id=conf_id ,conf_key=conf_key))
@app.route('/<int:conf_id>/<conf_key>/post_upload_excel' , methods = ["POST"])
def PostUploadExcel(conf_id,conf_key):
try:
data_2 = {}
all_data = []
del_nos = []
dub_del_nos = []
check_dublicate_records = None
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
columnss = request.values.get("column_name", "None")
file = request.files['filess']
del_table_name = request.values.get("del_table_name", "None")
fileExtension = request.values.get("fileExtension", "None")
columns_1 = columnss.split(",")
if fileExtension :
fileExtension = fileExtension.lower()
if fileExtension == "csv" :
data = pd.read_csv(file)
elif fileExtension == "xlsx" or fileExtension == "xls" :
data = pd.read_excel(file)
else :
return_data = { "html_data" :"" ,"msg" : "CSV and xlsx file type only allowed to upload." ,"status" : 2}
json_data = json.dumps(return_data,default=str)
return json_data
df = data.to_dict('split')
col_1 = df['columns']
val_1 = df['data']
delegate_no_index = columns_1.index('delegate_no')
insert_values = "("
insert_stmt = " INSERT INTO temp_badge_delegates ("+columnss+",created_at,conf_id"+")"+"values"
if delegate_no_index >= 0 :
for i in val_1:
index_value = 0
for column in columns_1 :
if delegate_no_index == index_value :
del_no = i[index_value]
del_nos.append(del_no)
else :
pass
values_1 = i[index_value]
if pd.isnull(values_1) :
# value_2 = None
value_2 = ""
insert_stmt = insert_stmt + " "
else :
value_2 = str(values_1)
data_2[column] = value_2
index_value = index_value +1
# data_2["created_at"] = curr_dt
if ".0" in value_2 :
value_2 = value_2.replace(".0","")
insert_values = insert_values+"'"+value_2+"',"
insert_values = insert_values+ "'"+curr_dt+"','"+str(conf_id) +"'"
insert_values = insert_values+"),("
all_data.append(data_2)
data_2 = {} # clear the temp dictionary
insert_values = insert_values[:-2]
insert_query = insert_stmt+insert_values
else :
return_data = { "html_data" :"" ,"msg" : "You must select delegate Number field" ,"status" : 3}
json_data = json.dumps(return_data,default=str)
return json_data
if len(del_nos) > 0 :
columnss = columnss + ",created_at,conf_id"
del_nos = str(del_nos)
del_nos = del_nos.replace("[" ,"")
del_nos = del_nos.replace("]" ,"")
preview_records = BadgeUserModel().insertBulkUploadTempTable(conf_id,insert_query,columnss,del_table_name,del_nos)
# print(preview_records)
for index ,value in enumerate(preview_records) :
if index == 0 :
all_data = value
if index == 1:
check_dublicate_records = value
# check_dublicate_records = BadgeUserModel().checkDuplicateRecords(del_nos,del_table_name,columnss)
if len(check_dublicate_records) == 0:
check_dublicate_records = None
else :
for index,value in enumerate(check_dublicate_records) :
dub_del_no = value['delegate_no']
dub_del_nos.append(dub_del_no)
if len(dub_del_nos)== 0 :
dub_del_nos = None
else:
pass
print(dub_del_nos)
html_data = render_template('badge_users/excel_data_preview_table.html' ,all_data =all_data,columns_1 = columns_1,str=str, dulicate_records =check_dublicate_records,dub_del_nos=dub_del_nos)
return_data = { "html_data" :html_data ,"msg" : "success" ,"status" : 1,'dub_del_nos' : dub_del_nos}
json_data = json.dumps(return_data,default=str)
return json_data
except Exception as e:
msg = "Please select exact columns and correct order"
return_data = { "html_data" :"" ,"msg" : str(e) ,"status" : 401,'dub_del_nos' : dub_del_nos}
json_data = json.dumps(return_data,default=str)
return json_data
@app.route('/<int:conf_id>/<conf_key>/save_excel_data' , methods = ["POST"])
def SaveExcelData(conf_id,conf_key):
try:
data_2 = {}
all_data = []
# Added on Jan 09, 2023
del_nos = []
dub_del_nos = []
check_dublicate_records = None
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
columnss = request.values.get("column_name", "None")
file = request.files['filess']
del_table_name = request.values.get("del_table_name", "None")
fileExtension = request.values.get("fileExtension", "None")
common_del_nos = request.values.get("common_del_nos", "None")
print(common_del_nos)
columns_1 = columnss.split(",")
if fileExtension :
fileExtension = fileExtension.lower()
if fileExtension == "csv" :
data = pd.read_csv(file)
elif fileExtension == "xlsx" or fileExtension == "xls" :
data = pd.read_excel(file)
else :
return_data = { "html_data" :"" ,"msg" : "CSV and xlsx file type only allowed to upload." ,"status" : 2}
json_data = json.dumps(return_data,default=str)
return json_data
df = data.to_dict('split')
col_1 = df['columns']
val_1 = df['data']
insert_values = "("
insert_stmt = " INSERT INTO " + del_table_name + "("+columnss+",created_at,conf_id"+")"+"values"
for i in val_1:
index_value = 0
for column in columns_1 :
values_1 = i[index_value]
if pd.isnull(values_1) :
# value_2 = None
value_2 = ""
insert_stmt = insert_stmt + " "
else :
value_2 = str(values_1)
data_2[column] = value_2
index_value = index_value +1
# data_2["created_at"] = curr_dt
if ".0" in value_2 :
value_2 = value_2.replace(".0","")
insert_values = insert_values+"'"+value_2+"',"
# insert_values = insert_values+ "'"+curr_dt+"'"
insert_values = insert_values+ "'"+curr_dt+"','"+str(conf_id) +"'"
# insert_values = insert_values[:-1]
insert_values = insert_values+"),("
all_data.append(data_2)
data_2 = {} # clear the temp dictionary
insert_values = insert_values[:-2]
insert_query = insert_stmt+insert_values
insert_to_db = BadgeUserModel().insertBulkUpload(conf_id,del_table_name,insert_query)
if insert_to_db == "success" :
return_data = { "html_data" :"" ,"msg" : "Successfully uploaded." ,"status" : 1}
else :
return_data = { "html_data" :"" ,"msg" : str(insert_to_db) ,"status" : 2}
json_data = json.dumps(return_data,default=str)
return json_data
except Exception as e:
msg = "Please select exact columns and correct order"
return_data = { "html_data" :"" ,"msg" : str(e) ,"status" : 401}
json_data = json.dumps(return_data,default=str)
return json_data
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists