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.FCModel import FCModel
from core.model.FoodSessionModel import FoodSessionModel
from core.model.BadgeUserModel import BadgeUserModel
from core.model.KitSessionModel import KitSessionModel
from core.library.email import EMAIL
from .. import Cryptography,Helper
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
import ast
import csv
from io import StringIO
import io
from flask import Response
import xlwt
from flask import Flask, make_response
import pyexcel as pe
import boto3, botocore
from botocore.exceptions import ClientError
from core.library.BackgroundTasks import BackgroundTasks
# import for img upload
import os
import base64
from PIL import Image
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('/<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"]
# else :
# pass
# 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))
# Updated on Jan 12 , 2023
@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")
conf_end_time = get_conf["conf_end_time"]
if datetime.strptime(curr_dt, "%Y-%m-%d %H:%M:%S") < conf_end_time:
BadgeUserModel().createConfTables(conf_id,conf_key,curr_dt)
if session.get('badge'):
return redirect(url_for('badge_user.BadgeDashborad' ,conf_id=conf_id,conf_key=conf_key))
else:
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:
return "<h4 style='color:red;text-align:center;'>Conference Closed</h4>"
else :
return "<h4 style='color:red;text-align:center;'>Invalid URL </h4>"
# 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/dashboard.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)
del_table_columns = BadgeUserModel().getDelegatesTableColumn(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,del_table_columns=del_table_columns)
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")
main_db = "numerotech_primary_db"
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)
delegate_no = request.values.get('delegate_no')
delegate_no = int(delegate_no)
prefix = request.values.get('prefix' ,'') or ''
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_state_id = request.values.get('state_name' ,'') or ''
state_name = ''.join(filter(lambda x: not x.isdigit(), state_name_state_id))
state_id = ''.join(filter(str.isdigit, state_name_state_id))
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 ''
role_in_cert = request.values.get('role_in_cert' ,'') or ''
if batch :
batch = batch.upper()
# if role :
# role = role.upper()
#######
insert_stmt = "INSERT INTO delegates_logs SELECT NULL,d.*,'"+current_dt+"' FROM "+main_db+".delegates d WHERE d.delegate_no = "+str(delegate_no)+" and d.conference_id = "+str(conf_id)+";"
print(insert_stmt)
update_stmt = "update "+ del_table_name + " set prefix = '"+prefix +"' ,full_name = '"+full_name +"' , email = '"+ email +"' , city = '"+city+"' , state = '"+state_name+"' ,mobile='"+mobile+"',company_name='"+company_name+"', counter = "+str(counter)+" , batch = '"+batch+"' , role = '"+role+"' ,updated_at = '"+current_dt+"',role_in_cert = '"+role_in_cert+"' where delegate_id = " + str(delegate_id) + " ;"
update_stmt_1 = "update "+ main_db + ".delegates set prefix = '"+prefix +"' ,full_name = '"+full_name +"' , email = '"+ email +"' , city = '"+city+"' ,mobile='"+mobile+"', role = '"+role+"' , state_id = '"+state_id+"' ,updated_at = '"+current_dt+"' where conference_id = " +str(conf_id)+ " and delegate_no = " +str(delegate_no)+ " ;"
# update_stmt = "update " + del_table_name + " fkd inner join "+ main_db +".delegates pd on fkd.conf_id = pd.conference_id and fkd.delegate_no = pd.delegate_no set fkd.prefix = '"+prefix+"',pd.prefix = '"+prefix+"',fkd.full_name = '"+full_name+"',pd.full_name= '"+full_name+"', fkd.email = '"+ email +"' , fkd.city = '"+city+"' , fkd.state = '"+state_name+"' ,fkd.mobile='"+mobile+"',fkd.company_name='"+company_name+"', fkd.counter = "+str(counter)+" , fkd.batch = '"+batch+"' , fkd.role = '"+role+"' ,fkd.updated_at = '"+current_dt+"',fkd.role_in_cert = '"+role_in_cert+"' where fkd.conf_id = "+str(conf_id)+" and fkd.delegate_no = " + str(delegate_no) + " ; "
insert_records = BadgeModel().insert_delegates_logs_recored(insert_stmt)
updated_data = BadgeModel().UpdateFKDelegates(update_stmt,delegate_id,conf_id)
updated_data_1 = BadgeModel().UpdatePrimaryDelegates(update_stmt_1,delegate_no,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() # commented on Jan 19,2023
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_preview' , methods = ["POST"])
def PostUploadExcelPreview(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 bulk_upload ("+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 column == "delegate_no" :
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().insertBulkUploadTempTablePreview(conf_id,insert_query,columnss,del_table_name,del_nos)
# for index ,value in enumerate(preview_records) :
# if index == 0 :
# all_data = value
# if index == 1:
# check_dublicate_records = value
all_data = BadgeUserModel().bulkuploadPreview1(conf_id,insert_query,columnss,del_table_name,del_nos)
check_dublicate_records = BadgeUserModel().bulkuploadDublicatePreview2(conf_id,insert_query,columnss,del_table_name,del_nos)
if check_dublicate_records:
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
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,type=type)
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") or None
file = request.files['filess']
del_table_name = request.values.get("del_table_name") or None
fileExtension = request.values.get("fileExtension") or None
dub_del_nos = request.values.get("common_del_nos") or None
checked_del_nos = request.values.get("checked_del_nos") or 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 bulk_upload ("+columnss+",created_at,conf_id"+")"+"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
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[:-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
columnss = columnss + ",created_at,conf_id"
insert_to_db = BadgeUserModel().bulkuploadSelected(conf_id,insert_query,columnss,del_table_name,checked_del_nos)
# upload = BadgeUserModel().insertBulkUpload(conf_id,insert_query,columnss,del_table_name,checked_del_nos)
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
# Auto login option for Badge print option
@app.route('/<int:conf_id>/<conf_key>/badge_auto_login/<conf_uuid>', methods = ["GET","POST"])
def BadgeAutoLogin(conf_id,conf_key,conf_uuid):
try:
get_conf = BadgeUserModel().checkConfUUID(conf_id,conf_uuid)
if get_conf :
if session.get("badge") :
session.pop('badge', None)
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("Username is not registered." , "errorMsg")
return redirect (url_for('badge_user.BadgeLogin',conf_id=conf_id ,conf_key= conf_key))
except Exception as e:
msg = str(e)
flash(msg , "errorMsg")
return redirect (url_for('badge_user.BadgeLogin',conf_id=conf_id ,conf_key= conf_key))
# Remove delegate records on the conf-delegate table only
@app.route('/<int:conf_id>/<conf_key>/remove_delegate_records', methods = ["POST"])
def RemoveDelegateRecords(conf_id,conf_key):
try:
dub_del_nos = request.values.get("dub_del_nos") or None
remove_delegate_nos = request.values.get("remove_del_nos") or None
del_table_name = request.values.get("del_table_name") or None
columnss = request.values.get("col_names") or None
remove_and_get_remain_records = BadgeUserModel().removeAndGetRemainRecords(conf_id,del_table_name,dub_del_nos,columnss,remove_delegate_nos)
GetAllRecordsFromFile = BadgeUserModel().GetAllRecordsFromFile(conf_id,del_table_name,dub_del_nos,columnss,remove_delegate_nos)
columns_1 = columnss.split(",")
if dub_del_nos and remove_delegate_nos :
dub_del_nos_list = dub_del_nos.split(",")
remove_delegate_nos_list = remove_delegate_nos.split(",")
l3 = [x for x in dub_del_nos_list if x not in remove_delegate_nos_list]
l3 = str(l3)
dub_del_nos_1 = l3.replace("[" , "").replace("]" , "")
html_data = render_template('badge_users/excel_data_delete_table.html' ,all_data =GetAllRecordsFromFile,columns_1 = columns_1,str=str, dulicate_records =remove_and_get_remain_records,dub_del_nos=dub_del_nos_1,type=type)
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
# remove test record fuction start
# santhosh
# 2023-08-18 12:46:00
@app.route('/<int:conf_id>/<conf_key>/fc_test_records',methods = ["GET","POST"])
def FcTestRecords(conf_id,conf_key):
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if get_conf :
ses_entry_table = get_conf["fc_session_entry_table_name"]
if ses_entry_table :
fc_remove_data = BadgeUserModel().FcScannedTestRecords(conf_id,ses_entry_table)
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))
return render_template('badge_users/fc_remove_test_record.html',conf_id = conf_id,conf_key=conf_key,fc_remove_data=fc_remove_data)
@app.route('/<int:conf_id>/<conf_key>/fc_delete_records/<int:session_id>',methods = ["GET","POST"])
def FcDeleteRecords(conf_id,conf_key,session_id):
try:
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if get_conf :
ses_entry_table = get_conf["fc_session_entry_table_name"]
if ses_entry_table :
del_stmt = " Delete from " + ses_entry_table + " where session_id = "+ str(session_id) +" ;"
remove_test_record = BadgeUserModel().delete_test_record(del_stmt)
html_data = render_template('badge_users/fc_remove_test_record.html',conf_id = conf_id,conf_key=conf_key)
return_data = { "html_data" :html_data ,"msg" : "" ,"status" : 1}
return json.dumps(return_data,default=str)
else :
return_data = { "html_data" :"" ,"msg" : "Session entry table not exists." ,"status" : 2}
return json.dumps(return_data,default=str)
else :
return_data = { "html_data" :"" ,"msg" : "Invalid URL." ,"status" : 3}
return json.dumps(return_data,default=str)
except Exception as e:
return_data = { "html_data" :"" ,"msg" : str(e) ,"status" : 401}
return json.dumps(return_data,default=str)
# KIT Session view and delete block
@app.route('/<int:conf_id>/<conf_key>/kc_test_records',methods = ["GET","POST"])
def KcTestRecords(conf_id,conf_key):
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if get_conf :
ses_entry_table = get_conf["kc_session_entry_table_name"]
if ses_entry_table :
kc_remove_data = BadgeUserModel().KcScannedTestRecords(conf_id,ses_entry_table)
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))
return render_template('badge_users/kc_remove_test_record.html',conf_id = conf_id,conf_key=conf_key,kc_remove_data=kc_remove_data)
@app.route('/<int:conf_id>/<conf_key>/kc_delete_records/<int:session_id>',methods = ["GET","POST"])
def KcDeleteRecords(conf_id,conf_key,session_id):
try:
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if get_conf :
ses_entry_table = get_conf["kc_session_entry_table_name"]
if ses_entry_table :
del_stmt = " Delete from " + ses_entry_table + " where session_id = "+ str(session_id) +" ;"
remove_test_record = BadgeUserModel().delete_test_record(del_stmt)
html_data = render_template('badge_users/kc_remove_test_record.html',conf_id = conf_id,conf_key=conf_key)
return_data = { "html_data" :html_data ,"msg" : "" ,"status" : 1}
return json.dumps(return_data,default=str)
else :
return_data = { "html_data" :"" ,"msg" : "Session entry table not exists." ,"status" : 2}
return json.dumps(return_data,default=str)
else :
return_data = { "html_data" :"" ,"msg" : "Invalid URL." ,"status" : 3}
return json.dumps(return_data,default=str)
except Exception as e:
return_data = { "html_data" :"" ,"msg" : str(e) ,"status" : 401}
return json.dumps(return_data,default=str)
# KIT Session end
# remove test record fuction End
#role update by Aravinth
#17.08.2023
@app.route('/<int:conf_id>/<conf_key>/role_compare_update', methods = ["GET","POST"])
def RoleCompareUpdate(conf_id,conf_key):
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if session.get('badge') and get_conf :
del_table_name = get_conf["del_table_name"]
delegates_data = BadgeUserModel().get_data_for_role_update(conf_id,del_table_name)
return render_template('badge_users/role_update.html',conf_id=conf_id,conf_key=conf_key,conf_data=get_conf,delegates_data=delegates_data,del_table_name=del_table_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>/role_update_in_conf_del_table', methods = ["GET","POST"])
def RoleUpdateInConfDelTable(conf_id,conf_key):
updated_at = datetime.now()
try:
delegate_no = request.values.get('delegate_no') or None
del_table_name = request.values.get('del_table_name') or None
if del_table_name :
if delegate_no and len(delegate_no) > 0 :
conf_del_update_data = BadgeUserModel().conf_del_update_in_data(conf_id,del_table_name,delegate_no,updated_at)
return_data = {"msg" : "success" ,"status" : 1}
else:
return_data = {"msg" : "Please select atleast one delegate number" ,"status" : 2}
else :
return_data = {"msg" : "Conference delegate table does not exists." , "status" : 3}
json_data = json.dumps(return_data,default =str)
return json_data
except Exception as e:
return_data = {"msg" : str(e) ,"status" : 401}
json_data = json.dumps(return_data,default=str)
return json_data
@app.route('/<int:conf_id>/<conf_key>/role_update_in_del_table', methods = ["GET","POST"])
def RoleUpdateInDelTable(conf_id,conf_key):
updated_at = datetime.now()
try:
delegate_no = request.values.get('delegate_no') or None
del_table_name = request.values.get('del_table_name') or None
if del_table_name :
if delegate_no and len(delegate_no) > 0 :
del_update_data = BadgeUserModel().del_update_in_data(conf_id,del_table_name,delegate_no,updated_at)
return_data = {"msg" : "success" ,"status" : 1}
else:
return_data = {"msg" : "Please select atleast one delegate number" ,"status" : 2}
else :
return_data = {"msg" : "Conference delegate table does not exists." , "status" : 3}
json_data = json.dumps(return_data,default=str)
return json_data
except Exception as e:
return_data = {"msg" : str(e) ,"status" : 401}
json_data = json.dumps(return_data,default=str)
return json_data
# create backup start
# santhosh, 22 august 2023
@app.route('/<int:conf_id>/<conf_key>/fc_data',methods = ["GET","POST"])
def FcData(conf_id,conf_key):
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if get_conf :
ses_entry_table = get_conf["fc_session_entry_table_name"]
conf_name = get_conf["conf_name"]
fc_back_table = "numerotech_foodkit.fc_sessions_entry_backup_"+conf_key
if ses_entry_table :
backup_data = BadgeUserModel().getbackupscandata(conf_id,ses_entry_table)
backup_table_data = BadgeUserModel().getbackupscandatabackup(conf_id,fc_back_table)
return render_template('badge_users/backup_scan_data.html',conf_id = conf_id,conf_key=conf_key,backup_data=backup_data,conf_name=conf_name,backup_table_data=backup_table_data)
else :
flash("Session entry tabel not exists ","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>/backup_fc_data/<int:session_id>',methods = ["GET","POST"])
def BackupFcData(conf_id,conf_key,session_id):
delegates_no_count = 0
delegate_entry_count = 0
try:
back_data = BadgeUserModel().create_backup(conf_id,conf_key,session_id)
if back_data :
for index,value in enumerate(back_data) :
if index == 0 :
data = value[0]
delegates_no_count = data['del_no_count_in_session_table']
if index == 1 :
data_1 = value[0]
delegate_entry_count = data_1['session_entry_del_count']
# html_data = render_template('badge_users/backup_scan_data.html',conf_id = conf_id,conf_key=conf_key)
data = { "delegates_no_count":delegates_no_count,"delegate_entry_count":delegate_entry_count,"msg" : "Successfully created backup " ,"status" : 1}
return json.dumps(data,default=str)
else :
data = { "delegates_no_count":delegate_entry_count,"delegate_entry_count":delegate_entry_count,"msg" : "There is no food counter data for backup" ,"status" : 2}
return json.dumps(data,default=str)
except Exception as e:
data = { "delegates_no_count":delegates_no_count,"delegate_entry_count":delegate_entry_count, "msg" : str(e) ,"status" : 401}
return json.dumps(data,default=str)
# create backup end
# Backup table start
@app.route('/<int:conf_id>/<conf_key>/view_fc_backup_data',methods = ["GET", "POST"])
def ViewFcBackupData(conf_id,conf_key):
total_count = 0
start_time = ""
end_time = ""
session_name = ""
session_key = request.values.get("session_key") or None
if not session_key :
flash("Invalid sessions" ,"errorMsg")
return redirect(url_for('fc.FCLogin' ,conf_id = conf_id , conf_key=conf_key))
else :
now = datetime.now()
current_dt = now.strftime("%d-%m-%Y %H:%M:%S")
current_dt_1 = now.strftime("%Y-%m-%d %H:%M:%S")
getFCConfData = FoodSessionModel().getFcConfData(conf_id,conf_key)
if getFCConfData :
conf_name = getFCConfData["conf_name"]
del_table_name = getFCConfData["del_table_name"]
fc_del_session_table_name = getFCConfData["fc_del_session_table_name"]
# fc_session_entry_table_name = getFCConfData["fc_session_entry_table_name"]
fc_session_entry_table_name = "numerotech_foodkit.fc_sessions_entry_backup_"+conf_key
is_session_open = FCModel().getDataBysession_key(session_key,current_dt,conf_id,conf_key)
if is_session_open :
session_name = is_session_open["session_name"]
start_time = is_session_open["start_time"]
end_time = is_session_open["end_time"]
session_id = is_session_open["session_id"]
if start_time :
start_time = start_time.strftime("%d-%m-%Y %H:%M:%S")
if end_time :
end_time = end_time.strftime("%d-%m-%Y %H:%M:%S")
scan_system_name = "System-1"
system_wise_scan = getFCConfData["system_wise_scan"] # Added on August 07,2023
scanned_data = FCModel().getFCReportbackup(session_id,conf_id,conf_key,del_table_name,fc_session_entry_table_name,system_wise_scan,scan_system_name,role_wise_report=1)
if scanned_data :
for index,value in enumerate(scanned_data) :
scan_count = value["scanned_count"]
total_count = total_count + scan_count
html_data = render_template('foodcounter/report_table.html' , scanned_data = scanned_data,total_count=total_count,system_wise_scan=system_wise_scan,int=int)
role_data = render_template('foodcounter/fc_download_report_dropdown.html' , scanned_data = scanned_data)
return render_template('foodcounter/fc_dashboard_report_only.html' ,html_data =html_data , scanned_data = scanned_data,total_count = total_count ,current_dt=current_dt,start_time =start_time ,end_time=end_time,session_name =session_name,conf_id=conf_id,conf_key=conf_key,conf_name=conf_name,del_table_name=del_table_name,fc_del_session_table_name=fc_del_session_table_name,fc_session_entry_table_name=fc_session_entry_table_name,role_data=role_data,session_key=session_key)
else:
flash("Invalid session key","errorMsg")
return redirect(url_for('fc.FCLogin' ,conf_id = conf_id , conf_key=conf_key))
else :
return "<h4 style= 'color:red' ; >Invalid URL </h4>"
# end
@app.route('/send_fc_report_mail_backup/<int:session_key>',methods = [ "POST"])
def SendFCReportMailBackup(session_key):
total_count = 0
scan_count = 0
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']
if not session_key :
flash("Invalid sessions" ,"errorMsg")
return redirect(url_for('fc.FCLogin' ,conf_id = conf_id , conf_key=conf_key))
else:
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(","))
session_data = FCModel().getDataBysession_key(session_key,current_dt,conf_id,conf_key)
if session_data:
get_conf = BadgeModel().GetConf(conf_id,conf_key)
session_id = session_data["session_id"]
scan_system_name = 'System-2' # updated on July 07, 2023
getFcConfData = FoodSessionModel().getFcConfData(conf_id,conf_key)
conf_name = getFcConfData["conf_name"]
del_table_name = getFcConfData["del_table_name"]
# fc_session_entry_table_name = getFcConfData["fc_session_entry_table_name"]
fc_session_entry_table_name = "numerotech_foodkit.fc_sessions_entry_backup_"+conf_key
# scan_system_name = 'System-2'
system_wise_scan = getFcConfData["system_wise_scan"] # Added on August 07,2023
scanned_data = FCModel().getFCReport(session_id,conf_id,conf_key,del_table_name,fc_session_entry_table_name,system_wise_scan,scan_system_name,role_wise_report=1)
if scanned_data :
for index,value in enumerate(scanned_data) :
scan_count = value["scanned_count"]
total_count = total_count + scan_count
mail_template = render_template('foodcounter/fc_email/fc_report_mail.html' , scanned_data = scanned_data,total_count=total_count,system_wise_scan=system_wise_scan)
# subject = " "+ conf_name+"- Food counter Report on " + current_date
subject = " "+ conf_name+"- Food counter Report"
try:
for email in mail_list:
# parsing the element from a list using for loop
# send mail here
EMAIL.FcReportMail(subject,mail_template,email,get_conf)
flash("Report mail has been sent .","successMsg")
return redirect(url_for('badge_user.ViewFcBackupData' ,conf_id = conf_id , conf_key=conf_key,session_key=session_key))
except Exception as e:
return str(e)
else :
flash("No session data" , "errorMsg")
return redirect(url_for('badge_user.ViewFcBackupData' ,conf_id = conf_id , conf_key=conf_key,session_key=session_key))
else :
flash("Please enter atleast one mail-id ." ,"errorMsg")
return redirect(url_for('badge_user.ViewFcBackupData' ,conf_id = conf_id , conf_key=conf_key,session_key=session_key))
# remove registered delegate start ---------------------------------- Sep 12, 2023 To live ----------
@app.route('/<int:conf_id>/<conf_key>/conf-delegates', methods = ["GET","POST"])
def ConfDelegates(conf_id,conf_key):
ConfData = BadgeUserModel().getConfData(conf_id,conf_key)
if ConfData :
del_table_name = ConfData["del_table_name"]
role_data = BadgeUserModel().getDelegateRole(conf_id)
return render_template('badge_users/conf_delegates.html',conf_id = conf_id,conf_key = conf_key,role_data=role_data,del_table_name=del_table_name)
else:
flash('Invalid URL mismach.',"errorMsg")
return "<h2 style= 'color:red;text-align:center' ; >Invalid URL </h2>"
@app.route('/<int:conf_id>/<conf_key>/view_conf_delegates', methods = ["GET","POST"])
def ViewConfDelegates(conf_id,conf_key):
delegate_nos = None
from_del_no = None
to_del_no = None
del_list = []
try:
del_values_list = []
b_role = request.values.get("b_role") or None
delegate_nos = request.values.get("delegate_nos") or None
del_table_name = request.values.get("del_table_name") or None
if delegate_nos :
delegate_nos = delegate_nos.replace(" ","")
delegate_nos = delegate_nos.replace(".",",")
delegate_nos = delegate_nos.replace(",,",",")
delegate_nos = delegate_nos[:-1] if delegate_nos.endswith(",") else delegate_nos or None
if "-" in delegate_nos :
result = delegate_nos.split('-')
if result and len(result)>0:
from_del_no = result[0] if result[0] else None
to_del_no = result[1] if result[1] else None
from_del_no = int(from_del_no) if from_del_no else from_del_no
to_del_no = int(to_del_no) if to_del_no else to_del_no
to_del_no = to_del_no + 1 if to_del_no else to_del_no
del_list = list(range(from_del_no, to_del_no))
if len(del_list) > 0 :
del_nos = str(del_list)
del_nos = del_nos.replace("[" , "")
delegate_nos = del_nos.replace("]" , "")
else :
pass
else :
pass
delegate_data = BadgeUserModel().get_data_for_remove(conf_id,del_table_name,b_role,delegate_nos)
if delegate_data :
html_data = render_template('badge_users/conf_delegates_table.html',conf_id=conf_id,conf_key=conf_key,delegate_data=delegate_data,b_role=b_role,delegate_nos=delegate_nos)
data = { "html_data":html_data,"msg" : "" ,"status" : 1}
return json.dumps(data,default=str)
else:
data = { "html_data":"","msg" : " No record found." ,"status" : 2 }
return json.dumps(data,default=str)
except Exception as e:
data = {"html_data":"","msg" : str(e) ,"status" : 401}
return json.dumps(data,default=str)
@app.route('/<int:conf_id>/<conf_key>/remove_conf_delegates_by_delegate_id', methods = ["GET","POST"])
def RemoveConfDelegatesByDelegateId(conf_id,conf_key):
try:
ConfData = BadgeUserModel().getConfData(conf_id,conf_key)
if ConfData :
del_table_name = ConfData["del_table_name"] or None
b_role = request.values.get("b_role") or None
delegate_ids = request.values.get("delegate_ids") or None
all_delegate_nos = request.values.get("all_delegate_nos") or None
if all_delegate_nos :
all_delegate_nos = all_delegate_nos[:-1] if all_delegate_nos.endswith(",") else all_delegate_nos or None
removedbadge_delno = BadgeUserModel().removeConfDelegatesByIds(conf_id,del_table_name,delegate_ids)
delegate_data = BadgeUserModel().get_data_for_remove(conf_id,del_table_name,b_role,all_delegate_nos)
html_data = render_template('badge_users/conf_delegates_table.html',conf_id=conf_id,conf_key=conf_key,delegate_data=delegate_data,b_role=b_role,delegate_ids=delegate_ids)
if removedbadge_delno == "success":
data = {"html_data":html_data,"msg" : "Successfully Deleted ." ,"status" : 1}
else:
data = {"html_data":html_data,"msg" : "'Deleted Failed'" ,"status" : 2}
return json.dumps(data,default=str)
else:
data = {"html_data":"","msg" : "'Invalid URL mismach.'" ,"status" : 3}
return json.dumps(data,default=str)
except Exception as e:
data = {"html_data":"","html_data":"","msg" : str(e) ,"status" : 401}
return json.dumps(data,default=str)
@app.route('/<int:conf_id>/<conf_key>/truncate_conf_delegates', methods = ["GET","POST"])
def TruncateConfDelegates(conf_id,conf_key):
try:
del_table_name = request.values.get("del_table_name") or None
conf_del_data = BadgeUserModel().get_conf_delegate_details(del_table_name)
if conf_del_data:
truncate_del_table = BadgeUserModel().truncateConfDelegates(del_table_name)
if truncate_del_table == "success":
data = {"msg" : "Successfully truncated" ,"status" : 1}
return json.dumps(data,default=str)
else:
data = {"msg" : "truncate failed" ,"status" : 2}
return json.dumps(data,default=str)
else:
data = {"msg" : "Data not exists in table or it is already truncated." ,"status" : 3}
return json.dumps(data,default=str)
except Exception as e:
data = {"msg" : str(e) ,"status" : 401}
return json.dumps(data,default=str)
# remove registered delegate end
# ----------------------------------------------------------------------------------
# Ganesan code start --------
@app.route('/<int:conf_id>/<conf_key>/custom_delegate_session_map', methods = ["GET","POST"])
def CustomDelegateSessionMap(conf_id,conf_key):
ConfData = BadgeUserModel().getConfData(conf_id,conf_key)
if ConfData :
del_table_name = ConfData["del_table_name"]
fc_del_session_table_name = ConfData["fc_del_session_table_name"]
kc_del_session_table_name = ConfData["kc_del_session_table_name"]
return render_template('delegates_sessions/custom_delegates_sessions_map.html',conf_id = conf_id,conf_key = conf_key,fc_del_session_table_name=fc_del_session_table_name,kc_del_session_table_name=kc_del_session_table_name,del_table_name=del_table_name)
else:
flash('Invalid URL.',"errorMsg")
return "<h2 style= 'color:red;text-align:center' ; >Invalid URL </h2>"
@app.route('/<int:conf_id>/<conf_key>/view_custom_delegate_session_map', methods = ["GET","POST"])
def ViewCustomDelegateSessionMap(conf_id,conf_key):
try:
del_values_list = []
delegate_nos = request.values.get("delegate_nos") or None
full_name = request.values.get("full_name") or None
del_table_name = request.values.get("del_table_name") or None
fc_del_session_table_name = request.values.get("fc_del_session_table_name") or None
kc_del_session_table_name = request.values.get("kc_del_session_table_name") or None
session_for = request.values.get("session_for") or None
if delegate_nos :
delegate_nos = delegate_nos.replace(" ","")
delegate_nos = delegate_nos.replace(".",",")
delegate_nos = delegate_nos.replace(",,",",")
delegate_nos = delegate_nos[:-1] if delegate_nos.endswith(",") else delegate_nos or None
if "fc" in session_for :
session_data = BadgeUserModel().getFCSessionData(conf_id,conf_key)
else :
session_data = BadgeUserModel().getkCSessionData(conf_id,conf_key)
delegate_data = BadgeUserModel().get_delegate_nos_by_name_delno(conf_id,del_table_name,full_name,delegate_nos)
if delegate_data :
html_data = render_template('delegates_sessions/custom_delegates_index.html',conf_id=conf_id,conf_key=conf_key,delegate_data=delegate_data,delegate_nos=delegate_nos,session_data=session_data,kc_del_session_table_name=kc_del_session_table_name,session_for=session_for)
data = { "html_data":html_data,"msg" : "" ,"status" : 1}
return json.dumps(data,default=str)
else:
data = { "html_data":"","msg" : "No record found." ,"status" : 2 }
return json.dumps(data,default=str)
except Exception as e:
data = {"html_data":"","msg" : str(e) ,"status" : 401}
return json.dumps(data,default=str)
@app.route('/<int:conf_id>/<conf_key>/add_del_session_map', methods = ["GET","POST"])
def AddDelSessionMap(conf_id,conf_key):
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
save_or_delete = ""
msg = ""
try:
ConfData = BadgeUserModel().getConfData(conf_id,conf_key)
if ConfData :
session_id = request.values.get("session_id") or None
delegate_ids = request.values.get("delegate_ids") or None
full_name = request.values.get("full_name") or None
all_delegate_nos = request.values.get("all_delegate_nos") or None
del_table_name = request.values.get("del_table_name") or None
fc_del_session_table_name = request.values.get("fc_del_session_table_name") or None
kc_del_session_table_name = request.values.get("kc_del_session_table_name") or None
session_for = request.values.get("session_for") or None
is_delete = request.values.get("is_delete") or 0
is_delete = int(is_delete) if is_delete else is_delete
delegate_ids = [delegate_ids]
delegate_ids = delegate_ids[0].split(',')
if all_delegate_nos :
all_delegate_nos = all_delegate_nos[:-1] if all_delegate_nos.endswith(",") else all_delegate_nos or None
if "fc" in session_for :
del_session_table = fc_del_session_table_name
session_data = BadgeUserModel().getFCSessionData(conf_id,conf_key)
else :
del_session_table = kc_del_session_table_name
session_data = BadgeUserModel().getkCSessionData(conf_id,conf_key)
if is_delete > 0 :
for del_id_1 in delegate_ids :
remove_delegate = BadgeUserModel().remove_custom_delegate_no(del_table_name,del_session_table,session_id,del_id_1)
save_or_delete = remove_delegate
msg = "Successfully removed ."
else :
delegate_ids = str(delegate_ids)
delegate_ids = delegate_ids.replace("[","")
delegate_ids = delegate_ids.replace("]","")
insert_delegate= BadgeUserModel().insert_custom_delegate_no(conf_id,del_session_table,del_table_name,session_id,delegate_ids,curr_dt)
msg = "Successfully Inserted ."
save_or_delete = insert_delegate
delegate_data = BadgeUserModel().get_delegate_nos_by_name_delno(conf_id,del_table_name,full_name,all_delegate_nos)
html_data = render_template('delegates_sessions/custom_delegates_index.html',conf_id=conf_id,conf_key=conf_key,delegate_data=delegate_data,delegate_ids=delegate_ids,session_data=session_data)
if save_or_delete == "success" :
data = {"html_data":html_data,"msg" : msg ,"status" : 1}
return json.dumps(data,default=str)
else:
data = {"html_data":html_data,"msg" : "'Inserted Failed'" ,"status" : 2}
return json.dumps(data,default=str)
else:
data = {"html_data":"","msg" : "'Invalid URL mismach.'" ,"status" : 3}
return json.dumps(data,default=str)
except Exception as e:
data = {"html_data":"","html_data":"","msg" : str(e) ,"status" : 401}
return json.dumps(data,default=str)
# end ------- -------- --------- -----------
# Kit counter report and signup report with filter day wise and role wise (send mail option and download)
# created by Aravinth 04-09-2023 12.05 PM
@app.route('/<int:conf_id>/<conf_key>/signup_reports',methods= ["GET","POST"])
def SignupReports(conf_id,conf_key):
session_name = None
sel_columns = []
role_list = ["All-Role"]
my_list = []
signin_count = []
session_id = request.values.get('session_id') or 0
session_name = request.values.get('session_name') or None
report_type = request.values.get("report_type") or 'count_only'
group_by_role = request.values.get("group_by_role") or 0
group_by_datewise = request.values.get("group_by_datewise") or 0
group_by_signedon = group_by_datewise
column_name = request.values.getlist("column_name") or None
order_by = request.values.get("order_by") or None
mail_ids = request.values.get("email_list") or None
date_1 = request.values.get("date_1") or "All-Days"
role = request.values.getlist("select_role") or "'All-Role'"
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if session.get('badge') and get_conf:
del_table_name = get_conf["del_table_name"]
ses_entry_table = None
if del_table_name :
del_table_columns = BadgeUserModel().getDelegatesColumnForReports(conf_id,del_table_name,ses_entry_table,report_name="SIGNUP")
role_data = BadgeUserModel().get_role(conf_id,del_table_name)
email_data = BadgeUserModel().get_email_ids(conf_id)
if role_data:
for index,value in enumerate(role_data):
role = value["role"]
role_list.append(role)
if del_table_columns and len(del_table_columns) > 0 :
del_table_columns = str(del_table_columns)
del_table_columns = del_table_columns.replace("[","").replace("]","")
resutls = ast.literal_eval(del_table_columns) # This line for convert string to dict in python3
# for key,value in resutls.items():
# sel_columns.append(key)
if sel_columns and len(sel_columns) >0 :
pass
else :
sel_columns = None
group_by_signedon = 1
group_by_role = 0
is_count_only = 1
get_reports = BadgeUserModel().getSignupAndKitReport(conf_id,del_table_name,group_by_role,group_by_signedon,sel_columns,order_by,is_count_only,session_id,ses_entry_table,date_1,role)
if get_reports :
if is_count_only > 0 :
for index,value in enumerate(get_reports):
count_1 = value["count_1"] or 0
signin_count.append(count_1)
role_col = value["role"]
# signin_count = signin_count + count_1
date_1 = value["date_1"]
my_list.append(date_1)
else :
signin_count = len(get_reports)
chart_data = {'labels': my_list,'Signup count': signin_count}
return render_template('badge_users/signup_report_screen.html',conf_id=conf_id,conf_key=conf_key,conf_data=get_conf,del_table_columns=resutls,role_list=role_list,email_data=email_data,chart_data=chart_data)
else :
flash("Badge collected data does not exists." ,"errorMsg")
return redirect(url_for("badge_user.BadgeLogin" , conf_id=conf_id,conf_key=conf_key))
else :
flash("Delegate Table not exists.", "errorMsg" )
return redirect(url_for("badge_user.BadgeLogin" , conf_id=conf_id,conf_key=conf_key))
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>/get_signup_reports_ajax',methods= ["GET","POST"])
def GetSignupReportsAjax(conf_id,conf_key):
signin_count = 0
mail_list = []
role_for_template = "'All-Role'"
my_list = []
signup_count = []
try:
sel_columns = []
column_name_for_tbody = []
ses_entry_table = None
session_id = 0
report_type = request.values.get("report_type") or 'count_only'
group_by_role = request.values.get("group_by_role") or 0
group_by_datewise = request.values.get("group_by_datewise") or 0
group_by_signedon = group_by_datewise
column_name = request.values.getlist("column_name") or None
order_by = request.values.get("order_by") or None
mail_ids = request.values.get("email_list") or None
view_data = request.values.get("view_data") or 1
email_btn = request.values.get("email_btn") or 1
role = request.values.getlist("select_role") or "'All-Role'"
if role and "All-Role" not in role:
role = str(role)
role = role.replace("[", "")
role = role.replace("]", "")
if column_name :
column_name_for_tbody = column_name
selected_columns = len(column_name_for_tbody)
for row in column_name :
col_1 = "d."+row
sel_columns.append(col_1)
else:
selected_columns = None
if sel_columns :
sel_columns = (",".join(sel_columns))
if report_type and "count_only" in report_type :
is_count_only = 1
sel_columns = None
else :
is_count_only = 0
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(","))
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if get_conf :
del_table_name = get_conf["del_table_name"]
conf_name = get_conf["conf_name"]
if del_table_name :
if sel_columns and len(sel_columns) >0 :
pass
else :
sel_columns = None
get_reports = BadgeUserModel().getSignupAndKitReport(conf_id,del_table_name,group_by_role,group_by_signedon,sel_columns,order_by,is_count_only,session_id,ses_entry_table,date_1="All-Days",role=role)
if get_reports :
if is_count_only > 0 :
for index,value in enumerate(get_reports):
count_1 = value["count_1"] or 0
role_col = value["role"]
signin_count = signin_count + count_1
date_1 = value["date_1"]
if group_by_datewise :
signup_count.append(count_1)
my_list.append(date_1)
else:
signup_count.append(count_1)
my_list.append(role_col)
else :
signin_count = len(get_reports)
group_by_role = int(group_by_role) if group_by_role else group_by_role
group_by_datewise = int(group_by_datewise) if group_by_datewise else group_by_datewise
chart_data = {'labels': my_list,'SignUp count': signup_count}
if int(email_btn) == 1:
html_data = render_template('badge_users/signup_report_email.html',reports=get_reports,group_by_role=group_by_role,group_by_datewise=group_by_datewise,signin_count=signin_count,is_count_only=is_count_only,column_name=column_name,column_name_for_tbody=column_name_for_tbody,role=role_for_template,conf_data=get_conf,selected_columns=selected_columns)
mail_template = render_template('badge_users/email/badge_collected_report_mail_template.html',reports=get_reports,group_by_role=group_by_role,group_by_datewise=group_by_datewise,signin_count=signin_count,is_count_only=is_count_only,column_name=column_name,column_name_for_tbody=column_name_for_tbody,len=len,role=role_for_template)
subject = "BADGE DISBURSAL REPORT - " + conf_name
else:
html_data = render_template('badge_users/signup_report_table.html',reports=get_reports,group_by_role=group_by_role,group_by_datewise=group_by_datewise,signin_count=signin_count,is_count_only=is_count_only,column_name=column_name,column_name_for_tbody=column_name_for_tbody,role=role_for_template,conf_data=get_conf,chart_data=chart_data)
if len(mail_list) > 0 and int(view_data) == 0:
for email in mail_list:
EMAIL.SignupReportMail(subject,mail_template,email,get_conf)
data = {"html_data" : html_data , "msg" : "Mail has been sent sucessfully.." , "status" : 1}
else:
data = {"html_data" : html_data , "msg" : "Date view sucessfully.." , "status" : 1}
else :
data = {"html_data" : "html_data","msg" : "Invalid url" , "status" : 2}
json_data = json.dumps(data,default = str)
return json_data
except Exception as e:
data = {"html_data" : " ", "msg" : str(e) , "status" : 401}
json_data = json.dumps(data,default = str)
return json_data
# download option for signup reports start
@app.route('/<int:conf_id>/<conf_key>/signup_reports_download',methods= ["GET","POST"])
def SignupReportDownload(conf_id,conf_key):
signin_count = 0
role_for_template = "'All-Role'"
try:
sel_columns = []
column_name_for_tbody = []
sel_columns_for_xl = []
ses_entry_table = None
session_id = 0
report_type = request.values.get("report_type") or 'count_only'
group_by_role = request.values.get("group_by_role") or 0
group_by_datewise = request.values.get("group_by_datewise") or 0
group_by_signedon = group_by_datewise
column_name = request.values.getlist("column_name") or None
order_by = request.values.get("order_by") or None
group_by_datewise = int(group_by_datewise) if group_by_datewise else group_by_datewise
group_by_role = int(group_by_role) if group_by_role else group_by_role
role = request.values.getlist("select_role") or "'All-Role'"
if role and "All-Role" not in role:
role = str(role)
role = role.replace("[", "")
role = role.replace("]", "")
if column_name :
column_name_for_tbody = column_name
for row in column_name :
col_1 = "d."+row
sel_columns.append(col_1)
for row_1 in column_name :
col_na = row_1
col_na = col_na.replace("_"," ")
sel_columns_for_xl.append(col_na)
if sel_columns :
sel_columns = (",".join(sel_columns))
if report_type and "count_only" in report_type :
is_count_only = 1
sel_columns = None
# Download option for count only
if group_by_datewise > 0 and group_by_role > 0 :
sel_columns_for_xl = ["Date" ,"Role" ,"Count"] # 1,1
export_value = ["date_1","role","count_1"]
elif group_by_datewise > 0 and group_by_role == 0 :
sel_columns_for_xl = ["Date","Count"] # 1,0
export_value = ["date_1","count_1"]
elif group_by_datewise == 0 and group_by_role > 0 :
sel_columns_for_xl = ["Role","Count"] # 0,1
export_value = ["role","count_1"]
else :
sel_columns_for_xl = ["Title","Count"] # 0,1
export_value = ["role","count_1"]
else :
is_count_only = 0
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if get_conf :
del_table_name = get_conf["del_table_name"]
conf_name = get_conf["conf_name"]
if del_table_name :
if sel_columns and len(sel_columns) >0 :
pass
else :
sel_columns = None
get_reports = BadgeUserModel().getSignupAndKitReport(conf_id,del_table_name,group_by_role,group_by_signedon,sel_columns,order_by,is_count_only,session_id,ses_entry_table,date_1="All-Days",role=role)
if get_reports :
if is_count_only > 0 :
for index,value in enumerate(get_reports):
count_1 = value["count_1"] or 0
signin_count = signin_count + count_1
else :
signin_count = len(get_reports)
group_by_role = int(group_by_role) if group_by_role else group_by_role
group_by_datewise = int(group_by_datewise) if group_by_datewise else group_by_datewise
if report_type and "count_only" in report_type :
pass
else :
export_value = column_name
return ExportDownloadXSL(get_reports,export_value,sel_columns_for_xl,conf_key,conf_name,report_type="BADGE DISBURSAL REPORT")
except Exception as e:
return str(e)
# end
# kc report function start
@app.route('/<int:conf_id>/<conf_key>/kc_reports',methods= ["GET","POST"])
def KCReports(conf_id,conf_key):
session_name = None
sel_columns = []
days_list = ["All-Days"]
role_list = ["All-Role"]
my_list = []
kc_count = []
now = datetime.now()
current_dt = now.strftime("%d-%m-%Y %H:%M:%S")
signin_count = 0
column_name_for_tbody = []
ses_entry_table = None
session_id = 0
conf_name = " "
date_for_template = "All-Days"
role_for_template = "'All-Role'"
from_name = ""
session_id = request.values.get('session_id') or 0
session_name = request.values.get('session_name') or None
report_type = request.values.get("report_type") or 'count_only'
group_by_role = request.values.get("group_by_role") or 0
group_by_datewise = request.values.get("group_by_datewise") or 0
group_by_signedon = group_by_datewise
column_name = request.values.getlist("column_name") or None
order_by = request.values.get("order_by") or None
mail_ids = request.values.get("email_list") or None
date_1 = request.values.get("date_1") or "All-Days"
view_data = request.values.get("view_data") or 1
role = request.values.getlist("select_role") or "'All-Role'"
email_btn = request.values.get("email_btn") or 1
group_by_datewise = int(group_by_datewise) if group_by_datewise else group_by_datewise
if report_type and "count_only" in report_type :
is_count_only = 1
else :
is_count_only = 0
if session.get('badge'):
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if get_conf :
del_table_name = get_conf["del_table_name"]
ses_entry_table = get_conf["kc_session_entry_table_name"]
conf_start_time = get_conf["conf_start_time"]
conf_end_time = get_conf["conf_end_time"]
if del_table_name :
if sel_columns and len(sel_columns) >0 :
pass
else :
sel_columns = None
group_by_signedon = 1
# session_id = 26
get_reports = BadgeUserModel().getSignupAndKitReport(conf_id,del_table_name,group_by_role,group_by_signedon,sel_columns,order_by,is_count_only,session_id,ses_entry_table,date_1,role)
if get_reports :
if is_count_only > 0 :
for index,value in enumerate(get_reports):
count_1 = value["count_1"] or 0
kc_count.append(count_1)
role_col = value["role"]
signin_count = signin_count + count_1
date_1 = value["date_1"]
my_list.append(date_1)
else :
signin_count = len(get_reports)
if conf_start_time and conf_end_time :
st_date = conf_start_time.strftime("%Y-%m-%d")
day_diff = (conf_end_time.date() - conf_start_time.date()).days
if day_diff >= 0 :
day_diff = day_diff + 1
aa = ""
i = 0
for i in range(i,day_diff) :
aa = conf_start_time.date()+timedelta(days=i)
days_list.append(aa.strftime("%d-%m-%Y"))
# Convert the date to the desired format
date_1 = datetime.strptime(aa.strftime("%Y-%m-%d"), "%Y-%m-%d").strftime("%d-%m-%Y")
else :
flash("Conference end date must be greater than start time", "errorMsg")
return redirect(url_for("badge_user.BadgeDashborad",conf_id=conf_id,conf_key=conf_key))
if del_table_name :
session_data = KitSessionModel().getSessionData(conf_id,conf_key)
role_data = BadgeUserModel().get_role(conf_id,del_table_name)
email_data = BadgeUserModel().get_email_ids(conf_id)
if role_data:
for index,value in enumerate(role_data):
role = value["role"]
role_list.append(role)
if session_data :
session_count = len(session_data) if session_data else 0
if session_count > 0 :
for index,value in enumerate(session_data) :
if index == 0 :
session_name = value["session_name"]
session_id = value["session_id"]
chart_data = {'labels': my_list,'Kit count': kc_count}
del_table_columns = BadgeUserModel().getDelegatesColumnForReports(conf_id,del_table_name,ses_entry_table,report_name="KC")
if del_table_columns and len(del_table_columns) > 0 :
del_table_columns = str(del_table_columns)
del_table_columns = del_table_columns.replace("[","").replace("]","")
resutls = ast.literal_eval(del_table_columns) # This line for convert string to dict in python3
return render_template('badge_users/kc_reports_screen.html',conf_id=conf_id,conf_key=conf_key,conf_data=get_conf,del_table_columns=resutls,session_data=session_data,session_name=session_name,session_id=session_id,days_list=days_list,date_1=date_1,role_list=role_list,email_data=email_data,chart_data=chart_data)
else :
flash("KIT Counter data does not exists.", "errorMsg")
return redirect(url_for("badge_user.BadgeDashborad",conf_id=conf_id,conf_key=conf_key))
else :
flash("KIT Counter data does not exists.", "errorMsg")
return redirect(url_for("badge_user.BadgeDashborad",conf_id=conf_id,conf_key=conf_key))
else :
return "Delegate Table not exists."
else:
return "<h4 style='color:red;text-align:center;'>Invalid URL </h4>"
else:
flash("Invalid Login", "errorMsg")
return redirect(url_for("badge_user.BadgeLogin" , conf_id=conf_id,conf_key=conf_key))
# get kc reports and report only email function start
@app.route('/<int:conf_id>/<conf_key>/get_kc_reports_ajax',methods= ["GET","POST"])
def GetKCReportsAjax(conf_id,conf_key):
now = datetime.now()
current_dt = now.strftime("%d-%m-%Y %H:%M:%S")
signin_count = 0
sel_columns = []
column_name_for_tbody = []
ses_entry_table = None
session_id = 0
conf_name = " "
date_for_template = "All-Days"
role_for_template = "'All-Role'"
mail_list = []
from_name = ""
my_list = []
kc_count = []
try:
session_id = request.values.get('session_id') or 0
session_name = request.values.get('session_name') or None
report_type = request.values.get("report_type") or 'count_only'
group_by_role = request.values.get("group_by_role") or 0
group_by_datewise = request.values.get("group_by_datewise") or 0
group_by_signedon = group_by_datewise
column_name = request.values.getlist("column_name") or None
order_by = request.values.get("order_by") or None
mail_ids = request.values.get("email_list") or None
date_1 = request.values.get("date_1") or "All-Days"
view_data = request.values.get("view_data") or 1
role = request.values.getlist("select_role") or "'All-Role'"
email_btn = request.values.get("email_btn") or 1
if role and "All-Role" not in role:
role = str(role)
role = role.replace("[", "")
role = role.replace("]", "")
# role = '"'+role+'"'
if "Days" not in date_1:
date_for_template = date_1
datetime_object = datetime.strptime(date_1, '%d-%m-%Y') # convert string into datetime format
date_1 = datetime_object.strftime("%Y-%m-%d") # dte format change into string format
if column_name :
column_name_for_tbody = column_name
selected_columns = len(column_name_for_tbody)
for row in column_name :
col_1 = "d."+row
sel_columns.append(col_1)
else:
selected_columns = None
if sel_columns :
sel_columns = (",".join(sel_columns))
selected_col = list(sel_columns)
if report_type and "count_only" in report_type :
is_count_only = 1
sel_columns = None
else :
is_count_only = 0
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(","))
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if get_conf :
del_table_name = get_conf["del_table_name"]
ses_entry_table = get_conf["kc_session_entry_table_name"]
conf_name = get_conf["conf_name"]
if del_table_name :
if sel_columns and len(sel_columns) >0 :
pass
else :
sel_columns = None
get_reports = BadgeUserModel().getSignupAndKitReport(conf_id,del_table_name,group_by_role,group_by_signedon,sel_columns,order_by,is_count_only,session_id,ses_entry_table,date_1,role)
if get_reports :
if is_count_only > 0 :
for index,value in enumerate(get_reports):
count_1 = value["count_1"] or 0
role_col = value["role"]
signin_count = signin_count + count_1
date_1 = value["date_1"]
if group_by_datewise :
kc_count.append(count_1)
my_list.append(date_1)
else:
kc_count.append(count_1)
my_list.append(role_col)
else :
signin_count = len(get_reports)
group_by_role = int(group_by_role) if group_by_role else group_by_role
group_by_datewise = int(group_by_datewise) if group_by_datewise else group_by_datewise
chart_data = {'labels': my_list,'Kit count': kc_count}
if int(email_btn) == 1:
html_data = render_template('badge_users/kc_reports_email.html',type=type,reports=get_reports,group_by_role=group_by_role,group_by_datewise=group_by_datewise,signin_count=signin_count,is_count_only=is_count_only,column_name=column_name,column_name_for_tbody=column_name_for_tbody,date_1=date_for_template,role=role,conf_data=get_conf,selected_columns=selected_columns,session_name=session_name)
mail_template = render_template('badge_users/email/kc_reports_mail_template.html',type=type,reports=get_reports,group_by_role=group_by_role,group_by_datewise=group_by_datewise,signin_count=signin_count,is_count_only=is_count_only,column_name=column_name,column_name_for_tbody=column_name_for_tbody,date_1=date_for_template,len=len,role=role_for_template)
subject = " "+ conf_name+ "-" + session_name.upper() +" - DISBURSAL REPORT ON" + " " +current_dt
from_name = session_name.upper() + " DISBURSAL REPORT"
else:
html_data = render_template('badge_users/kc_reports_table.html',type=type,reports=get_reports,group_by_role=group_by_role,group_by_datewise=group_by_datewise,signin_count=signin_count,is_count_only=is_count_only,column_name=column_name,column_name_for_tbody=column_name_for_tbody,date_1=date_for_template,role=role,conf_data=get_conf,session_name=session_name,chart_data=chart_data)
if len(mail_list) > 0 and int(view_data) == 0 :
for email in mail_list:
EMAIL.KcReportMail(subject,mail_template,email,from_name,get_conf)
data = {"html_data" : html_data , "msg" : "Mail has been sent sucessfully.." , "status" : 1}
else:
data = {"html_data" : html_data , "msg" : "Data view sucessfully.." , "status" : 1}
else :
data = {"html_data" : "html_data","msg" : "Invalid url" , "status" : 2}
json_data = json.dumps(data,default = str)
return json_data
except Exception as e:
data = {"html_data" : " ", "msg" : str(e) , "status" : 401}
json_data = json.dumps(data,default = str)
return json_data
# end
# Download option for kc reports
@app.route('/<int:conf_id>/<conf_key>/kc_reports_download',methods= ["GET","POST"])
def KCReportDownload(conf_id,conf_key):
signin_count = 0
sel_columns = []
sel_columns_for_xl = []
column_name_for_tbody = []
ses_entry_table = None
session_id = 0
conf_name = " "
date_for_template = "All-Days"
role_for_template = "All-Role"
try:
session_id = request.values.get('session_id') or 0
session_name = request.values.get('session_name') or None
report_type = request.values.get("report_type") or 'count_only'
group_by_datewise = request.values.get("group_by_datewise") or 0
group_by_role = request.values.get("group_by_role") or 0
group_by_signedon = group_by_datewise
column_name = request.values.getlist("column_name") or None
order_by = request.values.get("order_by") or None
date_1 = request.values.get("date_1") or "All-Days"
role = request.values.get("select_role") or "All-Role"
group_by_datewise = int(group_by_datewise) if group_by_datewise else group_by_datewise
group_by_role = int(group_by_role) if group_by_role else group_by_role
if "Days" not in date_1:
date_for_template = date_1
datetime_object = datetime.strptime(date_1, '%d-%m-%Y') # convert string into datetime format
date_1 = datetime_object.strftime("%Y-%m-%d") # dte format change into string format
if "Role" not in role:
role_for_template = role
role = "'"+role+"'"
if column_name :
column_name_for_tbody = column_name
for row in column_name :
if "created_at" in row :
col_1 = "se."+row
else :
col_1 = "d."+row
sel_columns.append(col_1)
for row_1 in column_name :
col_na = row_1
col_na = col_na.replace("_"," ")
sel_columns_for_xl.append(col_na)
if sel_columns :
sel_columns = (",".join(sel_columns))
if report_type and "count_only" in report_type :
is_count_only = 1
sel_columns = None
# Download option for count only
if group_by_datewise > 0 and group_by_role > 0 :
sel_columns_for_xl = ["Date" ,"Role" ,"Count"] # 1,1
export_value = ["date_1","role","count_1"]
elif group_by_datewise > 0 and group_by_role == 0 :
sel_columns_for_xl = ["Date","Count"] # 1,0
export_value = ["date_1","count_1"]
elif group_by_datewise == 0 and group_by_role > 0 :
sel_columns_for_xl = ["Role","Count"] # 0,1
export_value = ["role","count_1"]
else :
sel_columns_for_xl = ["Title","Count"] # 0,1
export_value = ["role","count_1"]
else :
is_count_only = 0
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if get_conf :
del_table_name = get_conf["del_table_name"]
ses_entry_table = get_conf["kc_session_entry_table_name"]
conf_name = get_conf["conf_name"]
if del_table_name :
if sel_columns and len(sel_columns) >0 :
pass
else :
sel_columns = None
get_reports = BadgeUserModel().getSignupAndKitReport(conf_id,del_table_name,group_by_role,group_by_signedon,sel_columns,order_by,is_count_only,session_id,ses_entry_table,date_1,role)
if get_reports :
if is_count_only > 0 :
for index,value in enumerate(get_reports):
count_1 = value["count_1"] or 0
signin_count = signin_count + count_1
else :
signin_count = len(get_reports)
group_by_role = int(group_by_role) if group_by_role else group_by_role
group_by_datewise = int(group_by_datewise) if group_by_datewise else group_by_datewise
if report_type and "count_only" in report_type :
pass
else :
export_value = column_name
return ExportDownloadXSL(get_reports,export_value,sel_columns_for_xl,conf_key,conf_name,report_type= session_name.upper() + " DISBURSAL REPORT ")
else :
flash("Record does not exists." ,"errorMsg")
return redirect(url_for('badge_user.KCReports',conf_id=conf_id,conf_key=conf_key))
except Exception as e:
return str(e)
def ExportDownloadXSL(result_data,export_value,sel_columns_for_xl,conf_key,conf_name,report_type):
now = datetime.now()
date = now.strftime("%Y-%m-%d %H:%M")
output = io.BytesIO()
Workbook = xlwt.Workbook()
sh = Workbook.add_sheet('Report')
idx = 0
a = 0
for row in sel_columns_for_xl:
row_1 = row
if row_1 :
row_1 = row_1.replace("_", " ")
row_1 = row_1.upper()
row_1 = row_1.replace("FULL " , "") if "FULL" in row_1 else row_1
sh.write(0,a,row_1)
a+=1
b=0
for row in result_data:
for i in export_value:
if "role" in i :
role_val = row[i] if row[i] else 'Reference'
sh.write(idx+1, b, role_val)
else :
sh.write(idx+1, b, row[i])
b+=1
b=0
idx+=1
Workbook.save(output)
output.seek(0)
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M")
return Response(output, mimetype="application/ms-excel", headers={"Content-Disposition":"attachment;filename="+conf_name+"-"+report_type+"-"+curr_dt+".xls"})
# Backup start
# def ExportDownloadXSL(result_data,export_value,sel_columns_for_xl,conf_key,conf_name,report_type):
# now = datetime.now()
# date = now.strftime("%Y-%m-%d %H:%M")
# output = io.BytesIO()
# Workbook = xlwt.Workbook()
# sh = Workbook.add_sheet('Report')
# idx = 0
# a = 0
# for row in sel_columns_for_xl:
# sh.write(0,a,row)
# a+=1
# b=0
# sno_val = 0
# for row in result_data:
# for i in export_value:
# sh.write(idx+1, b, row[i])
# b+=1
# b=0
# idx+=1
# Workbook.save(output)
# output.seek(0)
# now = datetime.now()
# curr_dt = now.strftime("%Y-%m-%d %H:%M")
# return Response(output, mimetype="application/ms-excel", headers={"Content-Disposition":"attachment;filename="+conf_name+"-"+report_type+"-"+curr_dt+".xls"})
# Backup end
@app.route("<int:conf_id>/<conf_key>/post_email_attachment", methods=["GET", "POST"])
def PostEmailAttachment(conf_id,conf_key):
try:
from_name = " "
get_conf = BadgeModel().GetConf(conf_id,conf_key)
files_1 = request.files['filess']
mail_ids = request.form['email_list']
conf_name = get_conf["conf_name"]
is_kit = request.values.get("is_kit") or 0
is_signup = request.values.get("is_signup") or 0
is_food = request.values.get("is_food") or 0
session_name = request.values.get("session_name") or None
session_id = request.values.get("session_id") or None
is_kit = int(is_kit) if is_kit else is_kit
is_signup = int(is_signup) if is_signup else is_signup
is_food = int(is_food) if is_food else is_food
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 files_1 :
encoded_string = base64.b64encode(files_1.read())
base64_str = encoded_string.decode('utf-8')
if is_kit > 0 :
from_name = session_name.upper() + " DISBURSAL REPORT"
html_data = session_name.upper() + " DISBURSAL REPORT"
subject = " "+ conf_name+ "-" + session_name.upper() +" - DISBURSAL REPORT"
elif is_signup > 0 :
from_name = "BADGE DISBURSAL REPORT"
html_data = "BADGE DISBURSAL REPORT"
subject = " "+ conf_name+"- BADGE DISBURSAL REPORT"
else :
# For food counte report Not use . Just for testing
from_name = "Food Counter - REPORT"
html_data = "Food Counter - REPORT"
subject = " "+ conf_name+"- Food counter - REPORT"
print("base64_str = ",base64_str)
for email in mail_list:
EMAIL.SendReportMail(subject,html_data,email,files_1,from_name,get_conf)
data = {"html_data" : html_data , "msg" : "Mail has been sent sucessfully.." , "status" : 1}
else :
return "Files is invalid.."
return json.dumps(data,default = str)
except Exception as e:
data = {"html_data" : "","msg" : str(e),"status" : 401}
return json.dumps(data,default = str)
# -------------------- Santhosh. For Get counter wise start and end delegate Number
@app.route("<int:conf_id>/<conf_key>/delegate_no_counter_wise", methods=["GET", "POST"])
def DelegateNoCounterWise(conf_id,conf_key):
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if get_conf :
del_table_name = get_conf["del_table_name"]
conf_name = get_conf["conf_name"]
detegate_no_counter = BadgeUserModel().get_delegate_no_counter(conf_id,del_table_name)
return render_template('badge_users/delegate_no_counter_wise.html',conf_id=conf_id,conf_key=conf_key,conf_name=conf_name,detegate_no_counter=detegate_no_counter,del_table_name=del_table_name)
else :
return "<h2 style= 'color:red;text-align:center' ; >Invalid URL </h2>"
@app.route("<int:conf_id>/<conf_key>/view_delegate_no_counter_wise", methods=["GET", "POST"])
def ViewDelegateNoCounterWise(conf_id,conf_key):
try:
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if get_conf :
del_table_name = get_conf["del_table_name"]
conf_name = get_conf["conf_name"]
detegate_no_counter = BadgeUserModel().get_delegate_no_counter(conf_id,del_table_name)
html_data = render_template('badge_users/delegate_no_counter_wise_table.html',conf_name=conf_name,conf_id=conf_id,conf_key=conf_key,detegate_no_counter=detegate_no_counter,del_table_name=del_table_name)
data = {"html_data" : html_data,"msg" : "", "status" : 1}
return json.dumps(data,default = str)
else :
data = {"html_data" : "html_data","msg" : "Invalid url" , "status" : 2}
return json.dumps(data,default = str)
except Exception as e:
data = {"html_data" : " ", "msg" : str(e) , "status" : 401}
return json.dumps(data,default = str)
@app.route("<int:conf_id>/<conf_key>/delegate_no_counter_wise_mail",methods = [ "POST"])
def DelegateNoCounterWiseMail(conf_id,conf_key):
try:
now = datetime.now()
current_dt = now.strftime("%d-%m-%Y %H:%M:%S")
current_date = now.strftime("%d-%m-%Y")
mail_ids = request.values.get('mail_ids') or None
conf_id = request.values.get('conf_id') or None
conf_key = request.values.get('conf_key') or None
del_table_name = request.values.get('del_table_name') or None
conf_name = request.values.get('conf_name') or None
getConfData = BadgeModel().GetConf(conf_id,conf_key)
if mail_ids:
last_char = mail_ids[-1:]
if "," == last_char :
mail_ids = re.sub(r".$", "", mail_ids)
if " " in mail_ids :
mail_ids = mail_ids.replace(" " ,"")
mail_list = list(mail_ids.split(","))
detegate_no_counter = BadgeUserModel().get_delegate_no_counter(conf_id,del_table_name)
mail_template = render_template('badge_users/email/delegate_counter_mail.html',detegate_no_counter=detegate_no_counter,conf_name=conf_name)
subject = " "+ conf_name+"- Delegate number counter wise"
from_name = "Delegate Number List counter wise"
for email in mail_list:
EMAIL.MandrillMailFunciton(subject,mail_template,email,from_name,getConfData)
data = {"msg" : "Email has been sent. ", "status" : 1}
return json.dumps(data,default = str)
else :
data = {"msg" : "Please enter atleast one mail-id ." , "status" : 2}
return json.dumps(data,default = str)
except Exception as e:
data = { "msg" : str(e) , "status" : 401}
return json.dumps(data,default = str)
@app.route("<int:conf_id>/<conf_key>/send_counter_report_whatsapp",methods = ["POST"])
def SendCounterReportWhatsapp(conf_id,conf_key):
msg_content = ""
min_del_no = 1
max_del_no = 150
msg_content = ""
main_cnt = ""
# print("----- send_counter_report_whatsapp ---- function calling ...")
try:
mobile_no = request.values.get('mobile_no') or None
conf_key = request.values.get('conf_key') or None
del_table_name = request.values.get('del_table_name_1') or None
conf_name = request.values.get('conf_name') or None
if mobile_no:
last_char = mobile_no[-1:]
if "," == last_char :
mobile_no = re.sub(r".$", "", mobile_no)
# check white spance in given inputs ,if exist then replace as empty
if " " in mobile_no :
mobile_no = mobile_no.replace(" " ,"")
whatsappdata = BadgeUserModel().get_delegate_no_counter(conf_id,del_table_name)
if whatsappdata :
if whatsappdata :
for index ,value in enumerate(whatsappdata):
min_del_no = value["min_del_number"]
max_del_no = value["max_del_number"]
counter_no = value["counter"]
main_cnt_1 = "%20%20Counter%20No.%20:%20"+str(counter_no)+"%20-%20Delegate%20Number%20:%20*"+str(min_del_no)+"*%20-%20*"+str(max_del_no)+"*%0A%0A"
main_cnt = main_cnt +main_cnt_1
msg_content = msg_content+main_cnt
if " " in conf_name :
conf_name = conf_name.replace(" " ,"%20")
msg_content = "https://wa.me/91"+str(mobile_no)+"?text=*"+conf_name+"*%0A%0A"+msg_content
webbrowser.open(msg_content) # to send whatsapp via new tab
data = {"msg" : "Delegate number counter wise has been sent sucessfully to " + mobile_no, "status" : 1}
return json.dumps(data,default = str)
else:
data = {"msg" : "Data not exist", "status" : 2}
return json.dumps(data,default = str)
else:
return "This is else block"
data = {"msg" : "Please enter the whatsapp number to sent the kit counter report.", "status" : 3}
return json.dumps(data,default = str)
except Exception as e:
data = { "msg" : str(e) , "status" : 401}
return json.dumps(data,default = str)
# Name Replace option start By Santhosh Step 26,2023
@app.route("<int:conf_id>/<conf_key>/delegate_name_replace",methods = ["GET", "POST"])
def DelegateNameReplace(conf_id,conf_key):
table_list = ["numerotech_primary_db.delegates"]
if session.get('badge'):
badge_user = session.get('badge')
conf_id = badge_user["conf_id"]
conf_name = badge_user["conf_name"]
del_table_name = badge_user["del_table_name"]
if del_table_name :
table_list.append(del_table_name)
return render_template('badge_users/delegate_name_replace.html',conf_id=conf_id,conf_key=conf_key,table_list=table_list)
else :
flash("Conference delegate table does not exists." ,"errorMsg")
return redirect(url_for("badge_user.BadgeLogin" ,conf_id=conf_id,conf_key=conf_key))
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>/view_delegate_name_replace",methods = ["GET", "POST"])
def ViewDelegateNameReplace(conf_id,conf_key):
delegate_count = 0
try:
conf_key = request.values.get('conf_key') or None
conf_key = request.values.get('conf_key') or None
name_replace = request.values.get('name_replace') or None
del_table_name = request.values.get('del_table_name') or None
is_main_del_table= request.values.get('is_main_del_table') or 0
is_main_del_table= int(is_main_del_table) if is_main_del_table else is_main_del_table
detegate_details = BadgeUserModel().get_delegate_details(conf_id,del_table_name,name_replace,is_main_del_table)
if detegate_details:
delegate_count = len(detegate_details)
html_data = render_template('badge_users/delegate_name_replace_table.html',conf_id=conf_id,conf_key=conf_key,delegate_count=detegate_details,name_replace=name_replace,del_table_name=del_table_name,detegate_count=delegate_count,is_main_del_table=is_main_del_table)
data = {"html_data":html_data,"msg" : "Renamed Successfully" , "status" : 1}
return json.dumps(data,default = str)
else:
html_data = render_template('badge_users/delegate_name_replace_table.html',conf_id=conf_id,conf_key=conf_key,delegate_count=detegate_details,name_replace=name_replace,del_table_name=del_table_name,detegate_count=delegate_count,is_main_del_table=is_main_del_table)
data = {"html_data":"","msg" : "Data not exist", "status" : 2}
return json.dumps(data,default = str)
except Exception as e:
data = {"html_data":"","msg" : str(e) , "status" : 401}
return json.dumps(data,default = str)
@app.route("<int:conf_id>/<conf_key>/update_delegate_name",methods = ["GET", "POST"])
def UpdateDelegateName(conf_id,conf_key):
print("yes its calling ")
del_table_name = None
name_replace = None
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
delegate_count = 0
try:
delegate_ids = request.values.get('delegate_ids') or None
del_table_name = request.values.get('del_table_name') or None
name_replace = request.values.get('name_replace') or None
is_main_del_table= request.values.get('is_main_del_table') or 0
is_main_del_table= int(is_main_del_table) if is_main_del_table else is_main_del_table
update_detegates = BadgeUserModel().updateConfDelegatesByIds(del_table_name,conf_id,name_replace,delegate_ids,curr_dt,is_main_del_table)
if update_detegates == "success":
detegate_details = BadgeUserModel().get_delegate_details(conf_id,del_table_name,name_replace,is_main_del_table)
if detegate_details :
delegate_count = len(detegate_details)
html_data = render_template('badge_users/delegate_name_replace_table.html',conf_id=conf_id,conf_key=conf_key,detegate_details=detegate_details,del_table_name=del_table_name,name_replace=name_replace,delegate_count=delegate_count,is_main_del_table=is_main_del_table)
data = {"html_data":html_data,"msg" : "Renamed Successfully" , "status" : 1}
return json.dumps(data,default = str)
else:
html_data = render_template('badge_users/delegate_name_replace_table.html',conf_id=conf_id,conf_key=conf_key,detegate_details=detegate_details,del_table_name=del_table_name,name_replace=name_replace,delegate_count=delegate_count,is_main_del_table=is_main_del_table)
data = {"html_data":"","msg" : "Data not exist", "status" : 2}
return json.dumps(data,default = str)
except Exception as e:
data = {"html_data":"","msg" : str(e) , "status" : 401}
return json.dumps(data,default = str)
# badge and kit not collect report start
@app.route("<int:conf_id>/<conf_key>/badge_kit_not_collect_report",methods = ["GET", "POST"])
def BadgeKitNotCollectReport(conf_id,conf_key):
total_reg_count = 0
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if session.get('badge') and get_conf:
del_table_name = get_conf["del_table_name"]
if del_table_name :
get_total_delegates_count = BadgeUserModel().confDelegateNotSignin(conf_id ,del_table_name ,is_count_only = 1)
if get_total_delegates_count :
total_reg_count = get_total_delegates_count["delegate_count"]
return render_template('badge_users/badge_kit_not_collect_report.html',conf_id=conf_id,conf_key=conf_key,total_reg_count=total_reg_count)
else :
flash("Conference delegate table does not exists" , "errorMsg")
return redirect(url_for("badge_user.BadgeLogin" ,conf_id=conf_id,conf_key=conf_key))
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>/view_badge_kit_not_collect_report",methods = ["GET", "POST"])
def ViewBadgeKitNotCollectReport(conf_id,conf_key):
delegate_count = 0
get_reports = None
msg = " "
total_reg_count = 0
collected_count = 0
try:
if session.get('badge'):
badge_user = session.get('badge')
del_table_name = badge_user["del_table_name"]
ses_entry_table = badge_user["kc_session_entry_table_name"]
is_badge_not_collect = request.values.get('is_badge_not_collect') or 0
total_reg_count = request.values.get('total_reg_count') or 0
is_badge_not_collect = int(is_badge_not_collect) if is_badge_not_collect else is_badge_not_collect
total_reg_count = int(total_reg_count) if total_reg_count else total_reg_count
if is_badge_not_collect == 1 :
is_kit_not_collect = 0
else :
is_kit_not_collect = 1
# print(conf_id,del_table_name,ses_entry_table,is_badge_not_collect,is_kit_not_collect)
get_reports = BadgeUserModel().badge_kit_not_collected_report(conf_id,del_table_name,ses_entry_table,is_badge_not_collect,is_kit_not_collect)
if get_reports :
delegate_count = len(get_reports)
if is_badge_not_collect > 0 : # For badge not collected count
collected_count = total_reg_count - delegate_count
msg = "Badge - not collected count : " + str(delegate_count) + " <br/> Badge collected count : " + str(collected_count)
else :
msg = "KIT - not collected count : " + str(delegate_count)
else :
if is_badge_not_collect == 0 : # if no one signed in then get all delegates for kit- not collected reports
# get_reports = BadgeUserModel().confDelegateNotSignin(conf_id ,del_table_name,is_count_only = 0)
delegate_count = total_reg_count - delegate_count
collected_count= total_reg_count - delegate_count
msg = "KIT - not collected count : " + str(delegate_count)
html_data = render_template('badge_users/badge_kit_not_collect_report_table.html',conf_id=conf_id,conf_key=conf_key,get_reports=get_reports,delegate_count=delegate_count,msg=msg)
data = {"html_data":html_data,"msg" : msg , "status" : 1}
return json.dumps(data,default = str)
else:
data = {"html_data":"","msg" : "Session invalid", "status" : 3}
return json.dumps(data,default = str)
except Exception as e:
data = {"html_data":"","msg" : str(e) , "status" : 401}
return json.dumps(data,default = str)
@app.route("<int:conf_id>/<conf_key>/badge_kit_not_collect_mail",methods = [ "POST"])
def BadgeKitNotCollectMail(conf_id,conf_key):
try:
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if session.get('badge') and get_conf:
del_table_name = get_conf["del_table_name"]
conf_name = get_conf["conf_name"]
mail_header_logo = get_conf["mail_header_logo"]
delegate_ids = request.values.get('delegate_ids') or None
not_collect = request.values.get('not_collect') or None
if delegate_ids:
delegate_ids = list(delegate_ids.split(","))
for delegate_id in delegate_ids:
get_del_detail = BadgeUserModel().get_delegates(del_table_name,conf_id,delegate_id)
delegate_no = get_del_detail["delegate_no"]
email = get_del_detail["email"]
name = get_del_detail["full_name"]
mail_template = render_template('badge_users/email/badge_not_collect_mail.html',conf_id=conf_id,conf_key=conf_key,conf_name=conf_name,delegate_no=delegate_no,name=name,not_collect=not_collect,mail_header_logo=mail_header_logo)
if not_collect > '0':
subject = " "+ conf_name+"- Badge Not Collect"
from_name = "Badge Not Collect"
else:
subject = " "+ conf_name+"- Kit Not Collect (Badge Only Collected )"
from_name = "Kit Not Collect (Badge Only Collected )"
# email = 'santhosh@numerotec.com'
EMAIL.MandrillMailFunciton(subject,mail_template,email,from_name )
data = {"msg" : "Email has been sent. ", "status" : 1}
return json.dumps(data,default = str)
else :
data = {"msg" : "Please enter atleast one checkbox ." , "status" : 2}
return json.dumps(data,default = str)
else:
data = {"msg" : "Session invalid", "status" : 3}
return json.dumps(data,default = str)
except Exception as e:
data = { "msg" : str(e) , "status" : 401}
return json.dumps(data,default = str)
@app.route("<int:conf_id>/<conf_key>/View_mail_contant",methods = ["GET", "POST"])
def ViewMailContant(conf_id,conf_key):
try:
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if get_conf:
del_table_name = get_conf["del_table_name"]
conf_name = get_conf["conf_name"]
mail_header_logo = get_conf["mail_header_logo"]
delegate_id = request.values.get('delegate_id') or None
not_collect = request.values.get('get_value_not_collect') or None
get_del_detail = BadgeUserModel().get_delegates(del_table_name,conf_id,delegate_id)
delegate_no = get_del_detail["delegate_no"]
email = get_del_detail["email"]
name = get_del_detail["full_name"]
html_data = render_template('badge_users/view_mail_contant_badge_and_kit.html',conf_id=conf_id,conf_key=conf_key,conf_name=conf_name,delegate_no=delegate_no,name=name,not_collect=not_collect,mail_header_logo=mail_header_logo)
if get_del_detail:
data = {"html_data":html_data,"msg" : " Successfully" , "status" : 1}
return json.dumps(data,default = str)
else:
data = {"html_data":"","msg" : "Data not exist", "status" : 2}
return json.dumps(data,default = str)
else:
data = {"html_data":"","msg" : "Invalid URL ", "status" : 3}
return json.dumps(data,default = str)
except Exception as e:
data = {"html_data":"","msg" : str(e) , "status" : 401}
return json.dumps(data,default = str)
@app.route("<int:conf_id>/<conf_key>/badge_kit_not_collect_report_downloard",methods = ["GET", "POST"])
def BadgeKitNotCollectReportDownloard(conf_id,conf_key):
get_conf = BadgeModel().GetConf(conf_id,conf_key)
try:
if get_conf:
del_table_name = get_conf["del_table_name"]
conf_name = get_conf["conf_name"]
ses_entry_table = get_conf["fc_session_entry_table_name"]
is_badge_not_collect = request.values.get('not_collect') or 0
is_badge_not_collect = int(is_badge_not_collect) if is_badge_not_collect else is_badge_not_collect
total_reg_count = request.values.get('total_reg_count') or 0
total_reg_count = int(total_reg_count) if total_reg_count else total_reg_count
if is_badge_not_collect == 1 :
is_kit_not_collect = 0
else :
is_kit_not_collect = 1
get_reports = BadgeUserModel().badge_kit_not_collected_report(conf_id,del_table_name,ses_entry_table,is_badge_not_collect,is_kit_not_collect)
if get_reports:
export_columns = ["delegate_no","name","email","role"]
col_name = ['Delegate no', 'Name','Email','Role']
return ExportDownloadXSL_1(get_reports,export_columns,col_name,conf_key,is_badge_not_collect)
else :
flash("Kit Not Collect (Badge Only Collected ) Record does not exists." ,"errorMsg")
return redirect(url_for('badge_user.BadgeKitNotCollectReport',conf_id=conf_id,conf_key=conf_key))
else :
flash("Record does not exists." ,"errorMsg")
return redirect(url_for('badge_user.BadgeLogin',conf_id=conf_id,conf_key=conf_key))
except Exception as e:
return str(e)
def ExportDownloadXSL_1(data_name,export_columns,col_name,conf_key,is_badge_not_collect):
if is_badge_not_collect > 0:
file_name = "_Badge Not Collect_"
else:
file_name = "_Kit Not Collect (Badge Only Collected)_"
now = datetime.now()
date = now.strftime("%Y-%m-%d %H:%M")
output = io.BytesIO()
Workbook = xlwt.Workbook()
sh = Workbook.add_sheet('Report')
idx = 0
a = 0
for row in col_name:
sh.write(0,a,row)
a+=1
b=0
sno_val = 0
for row in data_name:
for i in export_columns:
sh.write(idx+1, b, row[i])
b+=1
b=0
idx+=1
Workbook.save(output)
output.seek(0)
now = datetime.now()
date = now.strftime("%Y-%m-%d %H:%M")
return Response(output, mimetype="application/ms-excel", headers={"Content-Disposition":"attachment;filename="+str(conf_key)+file_name+str(date)+".xls"})
@app.route("<int:conf_id>/<conf_key>/badge_kit_not_collect_single_mail",methods = [ "POST"])
def BadgeKitNotCollectSingleMail(conf_id,conf_key):
print("fun calling")
try:
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if session.get('badge') and get_conf:
del_table_name = get_conf["del_table_name"]
conf_name = get_conf["conf_name"]
mail_header_logo = get_conf["mail_header_logo"]
delegate_id = request.values.get('delegate_id') or None
not_collect = request.values.get('get_value_not_collect') or None
if delegate_id:
get_del_detail = BadgeUserModel().get_delegates(del_table_name,conf_id,delegate_id)
delegate_no = get_del_detail["delegate_no"]
name = get_del_detail["full_name"]
email = get_del_detail["email"]
mail_template = render_template('badge_users/email/badge_not_collect_mail.html',conf_id=conf_id,conf_key=conf_key,conf_name=conf_name,delegate_no=delegate_no,name=name,not_collect=not_collect,mail_header_logo=mail_header_logo)
if not_collect > '0':
subject = " "+ conf_name+"- Badge Not Collect"
from_name = "Badge Not Collect"
else:
subject = " "+ conf_name+"- Kit Not Collect "
from_name = "Kit Not Collect "
# email = 'santhosh@numerotec.com'
EMAIL.MandrillMailFunciton(subject,mail_template,email,from_name )
data = {"msg" : "Email has been sent. ", "status" : 1}
return json.dumps(data,default = str)
else :
data = {"msg" : "Please enter atleast one checkbox ." , "status" : 2}
return json.dumps(data,default = str)
else:
data = {"msg" : "Session invalid", "status" : 3}
return json.dumps(data,default = str)
except Exception as e:
data = { "msg" : str(e) , "status" : 401}
return json.dumps(data,default = str)
# badge and kit not collect report end
# badge and kit not collect report end
# Karthick A Oct 26 2023
# Usage : for delegate image upload in badge module only update in bigtechshow conference
# Starts here
# AWS File upload start
# def AwsFileUpload(user_id,file,filename_str,foldername,file_extension):
def AwsFileUpload(delegate_no,file_name,image_data):
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
image_name = None
image_path = None
bucket = "aws-s3store"
try:
if file_name:
if image_data:
split_tup = os.path.splitext(file_name)
file_name = split_tup[0]
file_extension = split_tup[1]
filename_str = "delegate_image_"+ datetime.now().strftime("%Y%m%d-%H%M%S") +file_extension
if " " in filename_str :
filename_str = filename_str.replace(" ","")
delegate_no = str(delegate_no) if delegate_no else None
foldername = "bigtech23"
acl = "public-read"
s3 = boto3.client("s3",aws_access_key_id='AKIAILLDAQ7NFUMVOYLQ',aws_secret_access_key='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')
image_data = base64.b64decode(image_data.split(',')[1])
image = Image.open(io.BytesIO(image_data))
if image.mode == 'RGBA':
image = image.convert('RGB')
image.save(os.path.join('core/static/temp_images', filename_str))
img_path = os.path.join('core/static/temp_images/'+ filename_str)
with open(img_path, 'rb') as f:
response = s3.upload_fileobj(f,bucket,foldername+'/'+delegate_no+'/'+ filename_str, ExtraArgs={"ACL": acl, "ContentType": "image/jpeg"})
os.remove('core/static/temp_images/'+ filename_str)
data_1 = {'bucketname' : bucket,'foldername':foldername,'file_name':filename_str+"?"+str(Helper.getcurrenttimestamp()),'msg':'Image successfully uploded','file_extension':file_extension,'status':1}
file_path = "https://aws-s3store.s3.ap-southeast-1.amazonaws.com/"+foldername+"/"+delegate_no+"/"
image_path = file_path
image_name = filename_str
msg = "Added Successfully"
return_data = { "image_name" : image_name,"image_path" : image_path, "msg" : msg, "status" : 1 }
else :
msg = "File name is not exists."
return_data = { "image_name" : image_name,"image_path" : image_path, "msg" : msg, "status" : 2 }
return json.dumps(return_data,default =str)
else :
msg = "File not exists. Please try again"
return_data = { "image_name" : image_name,"image_path" : image_path, "msg" : msg, "status" : 3 }
return json.dumps(return_data,default =str)
except ClientError as e:
return_data = { "image_name" : image_name,"image_path" : image_path, "msg" : str(e), "status" : 401 }
return json.dumps(return_data,default =str)
@app.route('/<int:conf_id>/<conf_key>/photo_upload', methods = ["GET","POST"])
def PhotoUpload(conf_id,conf_key):
conf_data = BadgeModel().GetConf(conf_id,conf_key)
if conf_data:
conf_name = conf_data['conf_name']
del_table_name = conf_data['del_table_name']
output = BadgeModel().getRole(conf_id)
return render_template('badge/photo_upload.html',conf_id=conf_id ,conf_key=conf_key,conf_name=conf_name,role=output,del_table_name=del_table_name)
else :
return "<h1>Invalid URL</h1>"
@app.route('/<int:conf_id>/<conf_key>/post_photo_upload',methods = ['POST', 'GET'])
def PostPhotoUpload(conf_id,conf_key):
now = datetime.now()
current_dt = now.strftime("%Y-%m-%d %H:%M:%S")
conf_data = BadgeModel().GetConf(conf_id,conf_key)
if conf_data:
conf_name = conf_data['conf_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_no = request.values.get('delegate_no')
file_name = request.values.get('file_name',None) or None
image_data = request.values.get('image_data',None) or None
full_name = request.values.get('full_name',None) or None
print("full_name",full_name)
email = request.values.get('email',None) or None
mobile = request.values.get('mobile',None) or None
role = request.values.get('role',None) or None
get_delegate_data = BadgeModel().check_delegate_by_del_no(del_table_name,delegate_no,conf_id)
if get_delegate_data :
image_name = None
image_path = None
#######
if file_name:
file_upload = AwsFileUpload(delegate_no,file_name,image_data)
else:
file_upload = None
# If file upload function call then this block will execute
if file_upload :
file_upload = ast.literal_eval(file_upload)
file_upload_msg = file_upload["msg"]
file_upload_status = file_upload["status"]
if file_upload_status == 1 :
image_path = file_upload["image_path"] or None
image_name = file_upload["image_name"] or None
update_stmt = "update "+ del_table_name + " set updated_at = '"+current_dt+"' , image_name = '"+str(image_name)+"' , image_path = '"+str(image_path)+"' where delegate_no = " + str(delegate_no) + " ;"
else :
return file_upload_msg
else:
if image_data:
image_name = get_delegate_data['image_name'] or ''
image_path = get_delegate_data['image_path']
update_stmt = "update "+ del_table_name + " set updated_at = '"+current_dt+"' , image_name = '"+str(image_name)+"' , image_path = '"+str(image_path)+"' where delegate_no = " + str(delegate_no) + " ;"
else:
update_stmt = "update "+ del_table_name + " set updated_at = '"+current_dt+"' , image_name = NULL , image_path = NULL where delegate_no = " + str(delegate_no) + " ;"
updated_data = BadgeModel().UpdateDelegatePhoto(update_stmt,delegate_no,conf_id)
update_data = { 'full_name':full_name, 'email':email,'mobile':mobile,'role':role }
update_delegate_details = BadgeModel().UpdateDelegateDeatils(del_table_name,update_data,delegate_no)
msg = "Updated Successfully"
return_data = { "image_name" : image_name,"image_path" : image_path, "msg" : msg, "status" : 1 }
return json.dumps(return_data,default =str)
else :
flash("Invalid Delegate Number" , "errorMsg")
return redirect (url_for('badge_user.PhotoUpload',conf_id=conf_id ,conf_key=conf_key))
else:
return "<h1>Invalid URL</h1>"
@app.route('/<int:conf_id>/<conf_key>/check_del_no_exist',methods = ['POST', 'GET'])
def CheckDelNoExist(conf_id,conf_key):
try:
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))
now = datetime.now()
current_dt = now.strftime("%Y-%m-%d %H:%M:%S")
delegate_no = request.values.get('delegate_no')
delegate_no = int(delegate_no)
get_delegate_data = BadgeModel().check_delegate_by_del_no(del_table_name,delegate_no,conf_id)
if get_delegate_data :
status = 1
msg = 'Exist'
data = get_delegate_data
image_path = data['image_path']
image_name = data['image_name']
if image_path:
image = image_path+(image_name or '')
else:
image = None
else:
status = 0
msg = 'Data not exists'
data = None
image = None
return_data = { "status" : status, "msg" : msg , 'data': data,'image':image}
return json.dumps(return_data,default =str)
except Exception as e:
return_data = { "status" : 2, "msg" : str(e)}
return json.dumps(return_data,default =str)
# Ends here
@app.route("<int:conf_id>/<conf_key>/del_no_prefix_update",methods = [ "GET", "POST"])
def DelNoPrefixUpdate(conf_id,conf_key):
# now = datetime.now()
# curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
try:
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if session.get('badge') and get_conf:
del_table_name = get_conf["del_table_name"]
role = request.values.get('role') or None
del_no_prefix = request.values.get('del_no_prefix') or None
if del_no_prefix:
update_prefix = BadgeUserModel().updateDelNoPrefix(conf_id,del_table_name, role,del_no_prefix)
data = {"msg" : update_prefix, "status" : 1}
return json.dumps(data,default = str)
else :
data = {"msg" : "Please enter prefix text ." , "status" : 2}
return json.dumps(data,default = str)
else:
data = {"msg" : "Session invalid", "status" : 3}
return json.dumps(data,default = str)
except Exception as e:
data = { "msg" : str(e) , "status" : 401}
return json.dumps(data,default = str)
# registered delegates export report start
@app.route("<int:conf_id>/<conf_key>/reg_report_downloard",methods = ["GET", "POST"])
def RegReportDownloard(conf_id,conf_key):
get_conf = BadgeModel().GetConf(conf_id,conf_key)
try:
if get_conf:
del_table_name = get_conf["del_table_name"]
conf_name = get_conf["conf_name"]
column_names = request.values.getlist('column_name') or None
if column_names:
sel_columns = str(column_names)
sel_columns = sel_columns.replace("[","")
sel_columns = sel_columns.replace("]","")
sel_columns = sel_columns.replace("'","")
get_reports = BadgeUserModel().get_register_delegates(sel_columns,del_table_name,conf_id)
if get_reports:
column_values = column_names
column_names = ["s_no"] + column_names
inc_val = 1
for index,value in enumerate(get_reports) :
value["s_no"] = inc_val
inc_val = inc_val + 1
return ExportDownloadXSL_3(get_reports,column_names,conf_key,conf_name)
# return redirect(url_for('badge_user.RegisteredUsers',conf_id=conf_id,conf_key=conf_key))
else :
flash(" Registered delegates Record does not exists." ,"errorMsg")
return redirect(url_for('badge_user.RegisteredUsers',conf_id=conf_id,conf_key=conf_key))
else:
flash("Please select columns" ,"errorMsg")
return redirect(url_for('badge_user.RegisteredUsers',conf_id=conf_id,conf_key=conf_key))
else :
flash("Record does not exists." ,"errorMsg")
return redirect(url_for('badge_user.BadgeLogin',conf_id=conf_id,conf_key=conf_key))
except Exception as e:
return str(e)
def ExportDownloadXSL_3(result_data,sel_columns_for_xl,conf_key,conf_name):
file_name = "All registered delegates"
now = datetime.now()
date = now.strftime("%Y-%m-%d %H:%M")
output = io.BytesIO()
Workbook = xlwt.Workbook()
sh = Workbook.add_sheet('Report')
idx = 0
a = 0
for row in sel_columns_for_xl:
row_1 = row
if row_1 :
row_1 = row_1.replace("_", " ")
row_1 = row_1.upper()
row_1 = row_1.replace("FULL " , "") if "FULL" in row_1 else row_1
sh.write(0,a,row_1)
a+=1
b=0
for index,row in enumerate(result_data) :
for i in sel_columns_for_xl:
sh.write(idx+1, b, row[i])
b+=1
b=0
idx+=1
Workbook.save(output)
output.seek(0)
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M")
return Response(output, mimetype="application/ms-excel", headers={"Content-Disposition":"attachment;filename="+conf_name+"-"+file_name+"-"+curr_dt+".xls"})
# registered delegates export report end
# -------------------badge_collected_unsignup_list start-----------------
@app.route("<int:conf_id>/<conf_key>/badge_collected_unsignup_list",methods = ["GET", "POST"])
def BadgeCollectedUnsignupList(conf_id,conf_key):
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if get_conf:
del_table_name = get_conf["del_table_name"]
kc_entry_table = get_conf["kc_session_entry_table_name"]
fc_entry_table = get_conf["fc_session_entry_table_name"]
fcbackup_table = "numerotech_foodkit.fc_sessions_entry_backup_"+conf_key
del_nos = None
is_bulk_signup = 0
is_view_bulk_signup_data = 0
is_manual_signup = 0
attend_list = BadgeUserModel().UnsignupButScannedList(conf_id,del_nos,del_table_name,kc_entry_table,fc_entry_table,fcbackup_table,is_bulk_signup,is_view_bulk_signup_data,is_manual_signup)
if attend_list:
html_data = render_template("badge_users/badge_collected_unsignup_list_table.html",conf_id=conf_id,conf_key=conf_key,attend_list=attend_list,is_view_bulk_signup_data=is_view_bulk_signup_data)
return render_template("badge_users/badge_collected_unsignup_list.html",conf_id=conf_id,conf_key=conf_key,html_data=html_data,is_view_bulk_signup_data=is_view_bulk_signup_data,attend_list=attend_list)
else:
# flash("Attend data not exists","errorMsg")
html_data = render_template("badge_users/badge_collected_unsignup_list_table.html",conf_id=conf_id,conf_key=conf_key,attend_list=attend_list,is_view_bulk_signup_data=is_view_bulk_signup_data)
return render_template("badge_users/badge_collected_unsignup_list.html",conf_id=conf_id,conf_key=conf_key,html_data=html_data,is_view_bulk_signup_data=is_view_bulk_signup_data)
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>/scan_records_bulk_signup",methods = ["GET", "POST"])
def ScanRecordsBulkSighnup(conf_id,conf_key):
get_conf = BadgeModel().GetConf(conf_id,conf_key)
try:
if get_conf:
del_table_name = get_conf["del_table_name"]
kc_entry_table = get_conf["kc_session_entry_table_name"]
fc_entry_table = get_conf["fc_session_entry_table_name"]
fcbackup_table = "numerotech_foodkit.fc_sessions_entry_backup_"+conf_key
is_bulk_signup = request.values.get('is_bulk_signup') or 0
is_view_bulk_signup_data = request.values.get('is_view_bulk_signup_data') or 0
is_manual_signup = request.values.get('is_manual_signup') or 0
is_bulk_signup = int(is_bulk_signup) if is_bulk_signup else is_bulk_signup
is_view_bulk_signup_data = int(is_view_bulk_signup_data) if is_view_bulk_signup_data else is_view_bulk_signup_data
is_manual_signup = int(is_manual_signup) if is_manual_signup else is_manual_signup
del_nos = None
if is_bulk_signup == 1 and is_manual_signup == 0:
attend_list = BadgeUserModel().UnsignupButScannedList(conf_id,del_nos,del_table_name,kc_entry_table,fc_entry_table,fcbackup_table,is_bulk_signup,is_view_bulk_signup_data,is_manual_signup)
is_bulk_signup = 0;
is_view_bulk_signup_data = 0;
is_manual_signup = 0;
attend_list = BadgeUserModel().UnsignupButScannedList(conf_id,del_nos,del_table_name,kc_entry_table,fc_entry_table,fcbackup_table,is_bulk_signup,is_view_bulk_signup_data,is_manual_signup)
html_data = render_template("badge_users/badge_collected_unsignup_list_table.html",conf_id=conf_id,conf_key=conf_key,attend_list=attend_list,is_view_bulk_signup_data=is_view_bulk_signup_data)
data = {"html_data":html_data,"msg" : "Successfully uploaded", "status" : 1}
return json.dumps(data,default = str)
else:
attend_list = BadgeUserModel().UnsignupButScannedList(conf_id,del_nos,del_table_name,kc_entry_table,fc_entry_table,fcbackup_table,is_bulk_signup,is_view_bulk_signup_data,is_manual_signup)
# attend_list = BadgeUserModel().UnsignupButScannedList(conf_id,del_nos,del_table_name,kc_entry_table,fc_entry_table,fcbackup_table,is_bulk_signup,is_view_bulk_signup_data,is_manual_signup)
html_data = render_template("badge_users/badge_collected_unsignup_list_table.html",conf_id=conf_id,conf_key=conf_key,attend_list=attend_list,is_view_bulk_signup_data=is_view_bulk_signup_data)
data = {"html_data":html_data,"msg" : "", "status" : 2}
return json.dumps(data,default = str)
else :
data = {"html_data":"","msg" : " Invalid URL", "status" : 3}
return json.dumps(data,default = str)
except Exception as e:
data = {"html_data":"","msg" : str(e) , "status" : 401}
return json.dumps(data,default = str)
@app.route("<int:conf_id>/<conf_key>/view_and_update_custom_bulk_signup",methods = ["GET", "POST"])
def ViewAndUpdateCostomeBulkSignup(conf_id,conf_key):
get_conf = BadgeModel().GetConf(conf_id,conf_key)
try:
if get_conf:
del_table_name = get_conf["del_table_name"]
kc_entry_table = get_conf["kc_session_entry_table_name"]
fc_entry_table = get_conf["fc_session_entry_table_name"]
fcbackup_table = "numerotech_foodkit.fc_sessions_entry_backup_"+conf_key
is_bulk_signup = request.values.get('is_bulk_signup') or 0
is_view_bulk_signup_data = request.values.get('is_view_bulk_signup_data') or 0
is_manual_signup = request.values.get('is_manual_signup') or 0
is_bulk_signup = int(is_bulk_signup) if is_bulk_signup else is_bulk_signup
is_view_bulk_signup_data = int(is_view_bulk_signup_data) if is_view_bulk_signup_data else is_view_bulk_signup_data
is_manual_signup = int(is_manual_signup) if is_manual_signup else is_manual_signup
delegate_nos = request.values.get('delegate_nos') or None
if delegate_nos:
delegate_nos = delegate_nos.replace(" ","")
delegate_nos = delegate_nos.replace(".",",")
delegate_nos = delegate_nos.replace(",,",",")
delegate_nos = delegate_nos[:-1] if delegate_nos.endswith(",") else delegate_nos or None
if is_bulk_signup == 1 and is_manual_signup == 1:
attend_list = BadgeUserModel().UnsignupButScannedList(conf_id,delegate_nos,del_table_name,kc_entry_table,fc_entry_table,fcbackup_table,is_bulk_signup,is_view_bulk_signup_data,is_manual_signup)
is_bulk_signup = 0;
is_view_bulk_signup_data = 1;
is_manual_signup = 0;
attend_list = BadgeUserModel().UnsignupButScannedList(conf_id,delegate_nos,del_table_name,kc_entry_table,fc_entry_table,fcbackup_table,is_bulk_signup,is_view_bulk_signup_data,is_manual_signup)
html_data = render_template("badge_users/badge_collected_unsignup_list_table.html",conf_id=conf_id,conf_key=conf_key,attend_list=attend_list,is_view_bulk_signup_data=is_view_bulk_signup_data)
data = {"html_data":html_data,"msg" : " Successfully updated", "status" : 1}
return json.dumps(data,default = str)
else:
attend_list = BadgeUserModel().UnsignupButScannedList(conf_id,delegate_nos,del_table_name,kc_entry_table,fc_entry_table,fcbackup_table,is_bulk_signup,is_view_bulk_signup_data,is_manual_signup)
html_data = render_template("badge_users/badge_collected_unsignup_list_table.html",conf_id=conf_id,conf_key=conf_key,attend_list=attend_list,is_view_bulk_signup_data=is_view_bulk_signup_data)
data = {"html_data":html_data,"msg" : " ", "status" : 2}
return json.dumps(data,default = str)
else :
data = {"html_data":"","msg" : "please enter delegate number ", "status" : 3}
return json.dumps(data,default = str)
else :
data = {"html_data":"","msg" : " Invalid URL", "status" : 4}
return json.dumps(data,default = str)
except Exception as e:
data = {"html_data":"","msg" : str(e) , "status" : 401}
return json.dumps(data,default = str)
# -------------------badge_collected_unsignup_list end-----------------
@app.route("<int:conf_id>/<conf_key>/search_delegate",methods = ["GET", "POST"])
def SearchDelegate(conf_id,conf_key):
get_conf = BadgeModel().GetConf(conf_id,conf_key)
if get_conf:
del_table_name = get_conf["del_table_name"]
return render_template("badge_users/search_all_table_delegtes.html",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>/get_search_delegate",methods = ["GET", "POST"])
def GetSearchDelegate(conf_id,conf_key):
delegate_table_data = None
kit_session_entry_table = None
food_session_entry_table = None
food_session_entry_backup_table = None
get_conf = BadgeModel().GetConf(conf_id,conf_key)
try:
if get_conf:
del_table_name = get_conf["del_table_name"]
kc_entry_table = get_conf["kc_session_entry_table_name"]
fc_entry_table = get_conf["fc_session_entry_table_name"]
fcbackup_table = "numerotech_foodkit.fc_sessions_entry_backup_"+conf_key
delegate_nos = request.values.get('delegate_nos') or None
search_data = request.values.get('full_name') or None
if delegate_nos :
delegate_nos = delegate_nos.replace(" ","")
delegate_nos = delegate_nos.replace(".",",")
delegate_nos = delegate_nos.replace(",,",",")
delegate_nos = delegate_nos[:-1] if delegate_nos.endswith(",") else delegate_nos or None
search_delegate_data = BadgeUserModel().Getsearch_delegate_data(conf_id,delegate_nos,search_data,del_table_name,kc_entry_table,fc_entry_table,fcbackup_table)
if search_delegate_data:
for index,value in enumerate(search_delegate_data) :
if index == 0 :
delegate_table_data = value
if index == 1 :
kit_session_entry_table = value
if index == 2 :
food_session_entry_table = value
if index == 3 :
food_session_entry_backup_table = value
html_data = render_template("badge_users/search_all_table_delegtes_table.html",conf_id=conf_id,conf_key=conf_key,delegate_table_data=delegate_table_data,kit_session_entry_table=kit_session_entry_table,food_session_entry_table=food_session_entry_table,food_session_entry_backup_table=food_session_entry_backup_table)
data = {"html_data":html_data,"msg" : "", "status" : 1}
return json.dumps(data,default = str)
else :
data = {"html_data":"","msg" : " Data not exists", "status" : 2}
return json.dumps(data,default = str)
else :
data = {"html_data":"","msg" : " Invalid URL", "status" : 3}
return json.dumps(data,default = str)
except Exception as e:
data = {"html_data":"","msg" : str(e) , "status" : 401}
return json.dumps(data,default = str)
@app.route('/<int:conf_id>/<conf_key>/spot_print', methods = ["GET","POST"])
def SpotPrint(conf_id,conf_key):
conf_data = BadgeModel().GetConf(conf_id,conf_key)
if conf_data:
conf_name = conf_data['conf_name']
del_table_name = conf_data['del_table_name']
output = BadgeModel().getRole(conf_id)
return render_template('badge/spot_entry.html',conf_id=conf_id ,conf_key=conf_key,conf_name=conf_name,role=output,del_table_name=del_table_name)
else :
return "<h1>Invalid URL</h1>"
@app.route('/<int:conf_id>/<conf_key>/post_spot_print',methods = ['POST', 'GET'])
def PostSportPrint(conf_id,conf_key):
now = datetime.now()
current_dt = now.strftime("%Y-%m-%d %H:%M:%S")
conf_data = BadgeModel().GetConf(conf_id,conf_key)
if conf_data:
conf_name = conf_data['conf_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_no = request.values.get('delegate_no')
file_name = request.values.get('file_name',None) or None
image_data = request.values.get('image_data',None) or None
full_name = request.values.get('full_name',None) or None
print("full_name",full_name)
email = request.values.get('email',None) or None
mobile = request.values.get('mobile',None) or None
role = request.values.get('role',None) or None
get_delegate_data = BadgeModel().check_delegate_by_del_no(del_table_name,delegate_no,conf_id)
if get_delegate_data :
image_name = None
image_path = None
#######
if file_name:
file_upload = AwsFileUpload(delegate_no,file_name,image_data)
else:
file_upload = None
# If file upload function call then this block will execute
if file_upload :
file_upload = ast.literal_eval(file_upload)
file_upload_msg = file_upload["msg"]
file_upload_status = file_upload["status"]
if file_upload_status == 1 :
image_path = file_upload["image_path"] or None
image_name = file_upload["image_name"] or None
update_stmt = "update "+ del_table_name + " set updated_at = '"+current_dt+"' , image_name = '"+str(image_name)+"' , image_path = '"+str(image_path)+"' where delegate_no = " + str(delegate_no) + " ;"
else :
return file_upload_msg
else:
if image_data:
image_name = get_delegate_data['image_name'] or ''
image_path = get_delegate_data['image_path']
update_stmt = "update "+ del_table_name + " set updated_at = '"+current_dt+"' , image_name = '"+str(image_name)+"' , image_path = '"+str(image_path)+"' where delegate_no = " + str(delegate_no) + " ;"
else:
update_stmt = "update "+ del_table_name + " set updated_at = '"+current_dt+"' , image_name = NULL , image_path = NULL where delegate_no = " + str(delegate_no) + " ;"
updated_data = BadgeModel().UpdateDelegatePhoto(update_stmt,delegate_no,conf_id)
update_data = { 'full_name':full_name, 'email':email,'mobile':mobile,'role':role }
update_delegate_details = BadgeModel().UpdateDelegateDeatils(del_table_name,update_data,delegate_no)
msg = "Updated Successfully"
return_data = { "image_name" : image_name,"image_path" : image_path, "msg" : msg, "status" : 1 }
return json.dumps(return_data,default =str)
else :
flash("Invalid Delegate Number" , "errorMsg")
return redirect (url_for('badge_user.PhotoUpload',conf_id=conf_id ,conf_key=conf_key))
else:
return "<h1>Invalid URL</h1>"
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists