Sindbad~EG File Manager
from flask import Flask, request, Blueprint, jsonify, redirect, url_for,flash, render_template,session,Response,jsonify,json,render_template_string
from random import randint
from .. import Cryptography,Auth,RouteGroup,Helper,Custom
from core.model.OfflineRegistrationModel import OfflineRegistrationModel
from core.model.BOReportModel import BOReportModel
import xmltodict
import datetime
from core.library.email import EMAIL
import math
from datetime import timedelta,date,datetime
from flask import session, app
from os import listdir
import io
import csv
import ast
import requests,mandrill,json,math
import base64
import flask
from num2words import num2words
import webbrowser
import os #use for new instance of chrome
import urllib.parse
from ast import literal_eval
from dateutil.relativedelta import relativedelta
app = Blueprint('boreport', __name__)
# Report to get Wet lab and drylab
# Created by Ramya on 2023-07-05 13:07:00
@app.route("/<int:conf_id>/<conf_key>/bo/bo_course_report_filter" , methods=['GET','POST'])
def BoCourseReportFilter(conf_id,conf_key):
conf = OfflineRegistrationModel().OR_get_confUserModel(conf_id,conf_key)
if conf:
get_addons = BOReportModel().get_addons_course(conf_id)
return render_template('boreports/bo_course_report_page.html',get_addons=get_addons,conf=conf,conf_id=conf_id,conf_key= conf_key)
else:
return "<h1>Invalid URL</h1>"
@app.route("/<int:conf_id>/<conf_key>/bo/bo_post_course_report_filter" , methods=['GET','POST'])
def BoPostCourseReportFilter(conf_id,conf_key):
try:
if conf_id == 17 :
addon_ids = request.values.getlist('addon_id[]')
select_addon_ids = (",".join(addon_ids))
elif conf_id == 28 :
addon_ids = request.values.getlist('addon_id[]')
select_addon_ids = ("','".join(addon_ids))
else :
addon_ids = request.values.getlist('addon_id[]')
select_addon_ids = ("','".join(addon_ids))
addon_types = BOReportModel().get_addontype_for_course(conf_id)
addon_type_id = addon_types['addon_type_ids']
data = BOReportModel().get_datas_by_addon_ids(select_addon_ids,addon_type_id,conf_id)
if conf_id == 17 :
html_data = render_template('boreports/bo_wetlab_drylab_report_page_table.html',data=data)
elif conf_id == 28 :
if data is None:
show_export = 0
html_data = render_template('boreports/bo_course_report_page_table.html',data=data,show_export =show_export)
else :
show_export = 1
html_data = render_template('boreports/bo_course_report_page_table.html',data=data,show_export = show_export)
else:
html_data = ""
data = {"html_data" : html_data,"msg" : "success" , "status" :1 }
json_data = json.dumps(data,default=str)
return json_data
except Exception as e:
data = {"msg" : str(e) , "status" :401 }
json_data= json.dumps(data,default=str)
return json_data
return json.dumps(data,default = str)
@app.route("/<int:conf_id>/<conf_key>/bo/bo_get_delegates_details_by_course" , methods=['GET','POST'])
def BOGetDelegatesDetailsByCourse(conf_id,conf_key):
try:
addon_id = request.values.get('addon_id')
get_course = BOReportModel().get_course_detail(conf_id,addon_id)
addon_types = BOReportModel().get_addontype_for_course(conf_id)
addon_type_id = addon_types['addon_type_ids']
get_registered_delegate_data = BOReportModel().boreport_get_registered_delegate_data(conf_id,addon_type_id,addon_id,None)
html_data = render_template('boreports/bo_course_delegate_detail_table.html',data=get_registered_delegate_data,get_course=get_course)
data = {"html_data" : html_data,"msg" : "success" , "status" :1 }
json_data= json.dumps(data,default=str)
return json_data
except Exception as e:
data = {"msg" : str(e) , "status" :401 }
json_data= json.dumps(data,default=str)
return json_data
return json.dumps(data,default = str)
@app.route('/<int:conf_id>/<conf_key>/report_csv_course_headcount', methods = ["GET", "POST"])
def ExportCSVHeadcountReport(conf_id,conf_key):
conf = OfflineRegistrationModel().OR_get_confUserModel(conf_id,conf_key)
is_export = request.values.get('is_export')
addon_types = BOReportModel().get_addontype_for_course(conf_id)
addon_type_id = addon_types['addon_type_ids']
if is_export == "1":
if conf_id == 28 :
Reportdata = []
addon_id = request.values.getlist('selected_course')
select_addon_ids = (",".join(addon_id))
select_addon_ids = select_addon_ids.replace("," ,"','")
Reportdata1 = BOReportModel().get_datas_by_addon_ids(select_addon_ids,addon_type_id,conf_id)
# for manual Headcount report
for index,value in enumerate(Reportdata1):
if 'AUTLS' == value['display_name']:
my_dict = {}
head_count =str(40)
my_dict['head_count'] = head_count
my_dict['display_name'] = value['display_name']
my_dict['addon_type'] = value['addon_type']
my_dict['delegate_count'] = value['delegate_count']
Reportdata.append(my_dict)
elif 'Emergency Bronchoscopy' == value['display_name']:
my_dict = {}
head_count =str(60)
my_dict['head_count'] = head_count
my_dict['display_name'] = value['display_name']
my_dict['addon_type'] = value['addon_type']
my_dict['delegate_count'] = value['delegate_count']
Reportdata.append(my_dict)
elif 'Emergency Skills Cadaver Lab' == value['display_name']:
my_dict = {}
head_count =str(30)
my_dict['head_count'] = head_count
my_dict['display_name'] = value['display_name']
my_dict['addon_type'] = value['addon_type']
my_dict['delegate_count'] = value['delegate_count']
Reportdata.append(my_dict)
elif 'Emergency-ECMO' == value['display_name']:
my_dict = {}
head_count =str(40)
my_dict['head_count'] = head_count
my_dict['display_name'] = value['display_name']
my_dict['addon_type'] = value['addon_type']
my_dict['delegate_count'] = value['delegate_count']
Reportdata.append(my_dict)
elif 'POCUS-ECHO' == value['display_name']:
my_dict = {}
head_count =str(90)
my_dict['head_count'] = head_count
my_dict['display_name'] = value['display_name']
my_dict['addon_type'] = value['addon_type']
my_dict['delegate_count'] = value['delegate_count']
Reportdata.append(my_dict)
elif 'Skills Mela' == value['display_name']:
my_dict = {}
head_count =str(60)
my_dict['head_count'] = head_count
my_dict['display_name'] = value['display_name']
my_dict['addon_type'] = value['addon_type']
my_dict['delegate_count'] = value['delegate_count']
Reportdata.append(my_dict)
else:
pass
# print(Reportdata)
if Reportdata:
export_columns = ["addon_type","display_name","head_count","delegate_count"]
col_name = ["Category", "Course Name","Head Count ","Registered Delegate Count"]
return ExportDownloadCSV(Reportdata,export_columns,col_name,conf_key)
else:
flash("No Record Found !..","waiting_msg")
else:
select_addon_ids=request.values.getlist('selected_course')
select_addon_ids = (",".join(select_addon_ids))
Reportdata = BOReportModel().get_datas_by_addon_ids(select_addon_ids,addon_type_id,conf_id)
if Reportdata:
export_columns = ["addon_type","display_name", "head_count","delegate_count"]
col_name = ["Category", "Course Name", "Total Slot Count","Course Registration Count"]
return ExportDownloadCSV(Reportdata,export_columns,col_name,conf_key)
else:
flash("No Record Found !..","waiting_msg")
elif is_export == "2" :
addon_id = request.values.get('addon_id')
if addon_id :
is_export_selected_course = None
else :
is_export_selected_course = 1
addon_id = request.values.getlist('selected_course')
addon_id = (",".join(addon_id))
if conf_id == 28 :
addon_id = addon_id.replace("," ,"','")
else :
pass
Reportdata1 = BOReportModel().boreport_get_registered_delegate_data(conf_id,addon_type_id,addon_id,is_export_selected_course)
if Reportdata1:
export_columns = ["delegate_no","full_name","email", "mobile","addon_names","payment_method","amount","api_payment_id","paid_at"]
col_name = ["Delegate No.","Full Name", "Email", "Mobile","Reg For","Payment Method", "Amount","UTR Number","Paid at"]
return ExportDownloadCSV(Reportdata1,export_columns,col_name,conf_key)
else:
flash("No Record Found !..","waiting_msg")
else :
pass
return redirect(url_for('boreport.BoCourseReportFilter',conf_id=conf_id,conf_key=conf_key))
def ExportDownloadCSV(data_name,export_columns,col_name,conf_key):
now = datetime.now()
date = now.strftime("%Y-%m-%d %H:%M")
output = io.StringIO()
writer = csv.writer(output)
# writer = csv.writer(output,delimiter=' ',quotechar='|', quoting=csv.QUOTE_MINIMA)
line = col_name
writer.writerow(line)
for row in data_name:
line = []
for i in export_columns:
# print(i)
line.append(row[i])
writer.writerow(line)
output.seek(0)
return Response(output, mimetype="text/csv", headers={"Content-Disposition":"attachment;filename="+str(conf_key)+"_Delegates_Report_"+str(date)+".csv"})
# ------------------------------------
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists