Sindbad~EG File Manager
from flask import Flask, request, Blueprint, jsonify, redirect, url_for,flash, render_template,session,json
import datetime
from datetime import timedelta,date,datetime
from flask import session, app
from .. import Cryptography,Auth,RouteGroup,Helper
from core.library.email import EMAIL
from core.model.HallLogsModel import HallLogsModel
from core.model.BadgeModel import BadgeModel
import base64
from urllib.parse import unquote
app = Blueprint('halllogs', __name__)
@app.route('/<int:conf_id>/<conf_key>/hall_login', methods = ["GET", "POST"])
def HallLogin(conf_id,conf_key):
return render_template('hall_logs/login.html',conf_id=conf_id,conf_key=conf_key)
@app.route('/<int:conf_id>/<conf_key>/post_hall_login', methods = ["GET", "POST"])
def postHallLogin(conf_id,conf_key):
if request.method == 'POST':
pin_number = request.values.get('pin_number')
pin_number_bytes = pin_number.encode("ascii")
base64_bytes = base64.b64encode(pin_number_bytes)
pin_number_string = base64_bytes.decode("ascii")
return redirect(url_for('halllogs.ScanLogs',conf_id=conf_id,conf_key=conf_key ,pin= pin_number_string))
else:
return "Please Try again"
@app.route('/<int:conf_id>/<conf_key>/scan_logs', methods = ["GET", "POST"])
def ScanLogs(conf_id,conf_key):
pin_number = request.values.get("pin")
try:
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if get_conf :
del_table_name = get_conf["del_table_name"]
else :
return "<h4 style='color:red;'> Invalid URL </h4>"
if pin_number :
pin_number = unquote(pin_number)
b64_pin_number = unquote(pin_number)
base64_bytes = pin_number.encode("ascii")
sample_bytes = base64.b64decode(base64_bytes)
pin_number_str = sample_bytes.decode("ascii")
pin_number = int(pin_number_str)
now = datetime.now()
current_date = now.strftime('%Y-%m-%d')
current_dt = now.strftime('%Y-%m-%d %H:%M:%S')
# current_dt = '2023-08-04 09:40:00'
# current_date = '2023-08-04'
if pin_number > 0 :
hallData = HallLogsModel().gethall(conf_id,pin_number)
session["hallsession"] = hallData
if hallData:
result = HallLogsModel().usp_generate_session_table_scan_logs(conf_id,hallData['abs_hall_id'])
# print(result)
msg = "Scan"
currentsession = HallLogsModel().getActiveSessionHallsModel(get_conf['abs_ses_table_name'],conf_id,hallData['abs_hall_id'],current_date)
# currentsession = HallLogsModel().getCurrentSessionHallsModel(get_conf['abs_ses_table_name'],conf_id,current_dt,hallData['abs_hall_id'],current_date)
# print(currentsession)
confdates = HallLogsModel().getconfdatesHallModel(conf_id)
return render_template('hall_logs/scan_logs.html',conf_id=conf_id,conf_key=conf_key,hallData=hallData,del_table_name=del_table_name,msg=msg,current_date=current_date,currentsession=currentsession,now=now,confdates=confdates,b64_pin_number=b64_pin_number)
else:
flash("Invalid Pin number","errorMsg")
return redirect(url_for('halllogs.HallLogin',conf_id=conf_id,conf_key=conf_key))
else :
flash("Invalid Pin" , "errorMsg")
return redirect(url_for('halllogs.HallLogin',conf_id=conf_id,conf_key=conf_key))
else :
flash("Please try again" , "errorMsg")
return redirect(url_for('halllogs.HallLogin',conf_id=conf_id,conf_key=conf_key))
except Exception as e:
flash(str(e) , "errorMsg")
return redirect(url_for('halllogs.HallLogin',conf_id=conf_id,conf_key=conf_key))
@app.route('/<int:conf_id>/<conf_key>/insert_scan_logs', methods = ["GET", "POST"])
def insertScanLogs(conf_id,conf_key):
try:
if session.get("hallsession") :
msg = ""
bg_color = "red"
audio_id = "error_audio"
delegate_no = request.values.get('delegate_no') or None
if delegate_no :
delegate_no = int(delegate_no)
hall_id = request.values.get('hall_id') or None
if hall_id :
hall_id = int(hall_id)
del_table_name = request.values.get('del_table_name') or None
now = datetime.now()
dt_string = now.strftime("%Y-%m-%d")
datas ={
'delegate_no' : delegate_no,
'hall_id' : hall_id,
'scan_at' : now,
'created_date' : dt_string,
'created_at' : now
}
data = HallLogsModel().usp_save_hall_scanned_data(conf_id,delegate_no,hall_id,del_table_name)
if data:
result = data[0]
msg = result["msg"]
if "Not" not in msg :
audio_id = "thanku"
if "Already" in msg :
bg_color = "orange"
else:
bg_color = "green"
else :
pass
data = {"bg_color":bg_color,"audio_id":audio_id,"msg":msg, 'status': 1}
json_data = json.dumps(data,default=str)
else:
data = {"bg_color" : bg_color,"audio_id":audio_id,"msg":"try again", 'status': 2}
json_data = json.dumps(data,default=str)
return json_data
else:
audio_id = "error_audio"
bg_color = "red"
data = {"bg_color" : bg_color,"audio_id":audio_id, "msg" : "INVALID LOGIN" ,"status" :3}
json_data = json.dumps(data,default=str)
return json_data
except Exception as e:
bg_color = "red"
data = {"bg_color" : bg_color,"audio_id":audio_id,"msg" : str(e) ,"status" : 401}
json_data = json.dumps(data,default=str)
return json_data
@app.route('/<int:conf_id>/<conf_key>/refresh_session', methods = ["GET", "POST"])
def RefreshSession(conf_id,conf_key):
try:
if session.get("hallsession") :
get_conf = BadgeModel().GetConf(conf_id,conf_key)
abs_hall_id = request.values.get('hall_id')
now = datetime.now()
current_date = now.strftime('%Y-%m-%d')
current_dt = now.strftime('%Y-%m-%d %H:%M:%S')
# currentsession = HallLogsModel().getCurrentSessionHallsModel(get_conf['abs_ses_table_name'],conf_id,current_dt,abs_hall_id,current_date)
currentsession = HallLogsModel().getActiveSessionHallsModel(get_conf['abs_ses_table_name'],conf_id,abs_hall_id,current_date)
html_data = render_template('hall_logs/display_session.html',currentsession=currentsession,conf_id=conf_id,conf_key=conf_key)
print(html_data)
data = { 'status': 1,'html_data':html_data}
json_data = json.dumps(data,default=str)
return json_data
else:
bg_color = "red"
data = {"bg_color" : bg_color, "msg" : "INVALID LOGIN" ,"status" :3}
json_data = json.dumps(data,default=str)
return json_data
except Exception as e:
raise e
@app.route('/<int:conf_id>/<conf_key>/close_session', methods = ["GET", "POST"])
def CloseSession(conf_id,conf_key):
try:
if session.get("hallsession") :
get_conf = BadgeModel().GetConf(conf_id,conf_key)
abs_hall_id = request.values.get('hall_id')
current_date = now.strftime('%Y-%m-%d')
current_dt = now.strftime('%Y-%m-%d %H:%M:%S')
# print(currentsession)
data = { 'status': 1,'session_name':currentsession['session_name']}
json_data = json.dumps(data,default=str)
return json_data
else:
bg_color = "red"
data = {"bg_color" : bg_color, "msg" : "INVALID LOGIN" ,"status" :3}
json_data = json.dumps(data,default=str)
return json_data
except Exception as e:
raise e
@app.route('/<int:conf_id>/<conf_key>/hall_logout', methods = ["GET", "POST"])
def HallLogout(conf_id,conf_key):
if session.get("hallsession") :
session.pop('hallsession', None)
else :
pass
return redirect(url_for('halllogs.HallLogin' ,conf_id = conf_id,conf_key= conf_key))
@app.route('/<int:conf_id>/<conf_key>/refresh_hall_report', methods = ["GET", "POST"])
def Refreshhallreport(conf_id,conf_key):
try:
if session.get("hallsession") :
abs_hall_id = request.values.get('hall_id')
current_date = request.values.get('current_date')
report_data = HallLogsModel().gethallreportHallsModel(conf_key,abs_hall_id,current_date)
html_data = render_template('hall_logs/hall_report_table_v1.html',hallData=report_data,conf_id=conf_id,conf_key=conf_key)
data = { 'status': 1,'html_data':html_data}
json_data = json.dumps(data,default=str)
return json_data
else:
bg_color = "red"
data = {"bg_color" : bg_color, "msg" : "INVALID LOGIN" ,"status" :3}
json_data = json.dumps(data,default=str)
return json_data
except Exception as e:
raise e
@app.route('/<int:conf_id>/<conf_key>/refresh_session_hall_report', methods = ["GET", "POST"])
def Refreshhallsessionreport(conf_id,conf_key):
try:
if session.get("hallsession") :
abs_hall_id = request.values.get('hall_id')
current_date = request.values.get('current_date')
report_data = HallLogsModel().gethallsessionreportHallsModel(conf_key,abs_hall_id,current_date)
html_data = render_template('hall_logs/hall_session_report_table_v1.html',hallData=report_data,conf_id=conf_id,conf_key=conf_key)
data = { 'status': 1,'html_data':html_data}
json_data = json.dumps(data,default=str)
return json_data
else:
bg_color = "red"
data = {"bg_color" : bg_color, "msg" : "INVALID LOGIN" ,"status" :3}
json_data = json.dumps(data,default=str)
return json_data
except Exception as e:
raise e
@app.route('/send_hall_report_mail',methods = [ "POST"])
def SendHALLReportMail():
print("yes comming ")
total_count = 0
scan_count = 0
# system_wise_report=1&role_wise_report=1
now = datetime.now()
current_dt = now.strftime("%d-%m-%Y %H:%M:%S")
current_date = now.strftime("%d-%m-%Y")
mail_ids = request.form['mail_id']
conf_id = request.form['conf_id']
conf_key = request.form['conf_key']
abs_hall_id = request.values.get('hall_id')
curr_date = now.strftime("%d")
get_conf = BadgeModel().GetConf(conf_id,conf_key)
conf_name = get_conf["conf_name"]
b64_pin_number = request.form['b64_pin_number']
# role_wise_report = 1
if mail_ids:
last_char = mail_ids[-1:]
# check last character is commma
if "," == last_char :
mail_ids = re.sub(r".$", "", mail_ids)
# check white spance in given inputs ,if exist then replace as empty
if " " in mail_ids :
mail_ids = mail_ids.replace(" " ,"")
# set list from a string using comma character
mail_list = list(mail_ids.split(","))
if session.get("hallsession") :
session_data = session.get("hallsession")
report_data = HallLogsModel().gethallreportHallsModel(conf_key,abs_hall_id,curr_date)
# print("....................................",report_data)
if report_data:
mail_template = render_template('hall_logs/hall_report_mail.html' , hallData = report_data,conf_id=conf_id)
# subject = " "+ conf_name+"- Food counter Report on " + current_date
subject = f"{conf_name} - Hall Count Report"
for email in mail_list:
# parsing the element from a list using for loop
# send mail here
EMAIL.FcReportMail(subject,mail_template,email)
flash("Report mail has been sent. ","successMsg")
return redirect(url_for('halllogs.ScanLogs',conf_id=conf_id,conf_key=conf_key ,pin= b64_pin_number))
else :
flash("Invalid session" , "errorMsg")
return redirect(url_for('halllogs.ScanLogs' ,conf_id = conf_id , conf_key=conf_key))
else :
flash("Please enter atleast one mail-id ." ,"errorMsg")
return redirect(url_for('halllogs.ScanLogs' ,conf_id = conf_id , conf_key=conf_key))
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists