Sindbad~EG File Manager

Current Path : /proc/self/cwd/food_kit_scan_badges/core/controller/
Upload File :
Current File : //proc/self/cwd/food_kit_scan_badges/core/controller/AttendanceController.py

from flask import Flask,app, request, Blueprint, jsonify, redirect, url_for,flash, render_template,session,json
import datetime
from datetime import timedelta,date,datetime
from flask import session, app
from .. import Cryptography,Auth,RouteGroup,Helper
from core.library.email import EMAIL
from core.model.BadgeModel import BadgeModel
from core.model.AttendanceModel import AttendanceModel


app = Blueprint('attendance', __name__)

@app.route('/<int:conf_id>/<conf_key>/attendance', methods = ["GET", "POST"])
def AttendanceLogin(conf_id,conf_key):
	if session.get("attendancesession"):
		return redirect (url_for('attendance.attendanceDays',conf_id=conf_id ,conf_key = conf_key))
	else:
		now = datetime.now()
		current_dt = now.strftime("%Y-%m-%d")
		conf_data  = AttendanceModel().getConf_open_closed(conf_id,conf_key,current_dt)
		if conf_data:
			return render_template('attendance/user/login.html',conf_id=conf_id,conf_key=conf_key,conf_data=conf_data)
		else:
			return "<h2 style= 'color:red;text-align:center' ; >Conference closed </h2>"

@app.route('/<int:conf_id>/<conf_key>/post_attendance_login', methods = ["GET", "POST"])
def postAttendanceLogin(conf_id,conf_key):
	if request.method == 'POST':
		get_conf  = BadgeModel().GetConf(conf_id,conf_key)
		if get_conf :
			del_table_name = get_conf["del_table_name"]
		else :
			return "<h4 style='color:red;'> Invalid URL </h4>"  
		delegate_name = request.values.get('full_name') or None
		delegate_mobile = request.values.get('mobile') or None
		session['attendancesession']   =  {'delegate_name':delegate_name,'mobile':delegate_mobile}

		return redirect (url_for('attendance.attendanceDays',conf_id=conf_id ,conf_key = conf_key))
		
	else :
		return "Method not allowed" 


@app.route('/<int:conf_id>/<conf_key>/attendance_days', methods = ["GET", "POST"])
def attendanceDays(conf_id,conf_key):
	if session.get("attendancesession"):
		conf_data = BadgeModel().GetConf(conf_id,conf_key)
		getDays   = AttendanceModel().getDays(conf_data['abs_ses_table_name'],conf_id)
		now       = datetime.now()
		current_date   = now.strftime('%Y-%m-%d')
		return render_template('attendance/user/days.html',conf_id=conf_id,conf_key=conf_key,conf_data=conf_data,getDays=getDays,current_date=current_date)
	
	else: 
		flash("Session Expired..","errorMsg")
		return redirect(url_for('attendance.AttendanceLogin' ,conf_id = conf_id,conf_key= conf_key))

@app.route('/<int:conf_id>/<conf_key>/attendance_halls/<conf_date>', methods = ["GET", "POST"])
def attendanceHalls(conf_id,conf_key,conf_date):
	if session.get("attendancesession"):
		conf_data = BadgeModel().GetConf(conf_id,conf_key)
		getHalls   = AttendanceModel().getHalls(conf_data['abs_ses_table_name'],conf_id,conf_date)
		hall_1 = getHalls[0]
		return render_template('attendance/user/halls.html',conf_id=conf_id,conf_key=conf_key,conf_data=conf_data,getHalls=getHalls,conf_date=conf_date,hall_1=hall_1)
	else: 
		flash("Session Expired...","errorMsg")
		return redirect(url_for('attendance.AttendanceLogin' ,conf_id = conf_id,conf_key= conf_key))

@app.route('/<int:conf_id>/<conf_key>/abstract_sessions/<hall_id>/<conf_date>', methods = ["GET", "POST"])
def AbstractSessions(conf_id,conf_key,hall_id,conf_date):
	if session.get("attendancesession"):
		conf_data         = BadgeModel().GetConf(conf_id,conf_key)
		getSessionName    = AttendanceModel().getSessionName(conf_data['abs_ses_table_name'],conf_id,hall_id,conf_date)
		session_1         = getSessionName[0]
		now             = datetime.now()
		current_dt      = now.strftime('%Y-%m-%d %H:%M:%S')
		currentsession    = AttendanceModel().getCurrentSession(conf_data['abs_ses_table_name'],conf_id,current_dt,hall_id,conf_date)
		return render_template('attendance/user/session.html',conf_id=conf_id,conf_key=conf_key,conf_data=conf_data,getSessionName=getSessionName,conf_date=conf_date,session_1=session_1,currentsession=currentsession)
	else: 
		flash("Session Expired","errorMsg")
		return redirect(url_for('attendance.AttendanceLogin' ,conf_id = conf_id,conf_key= conf_key))

@app.route('/<int:conf_id>/<conf_key>/get_speaker/<asession_id>', methods = ["GET", "POST"])
def getspeaker(conf_id,conf_key,asession_id):
	if session.get("attendancesession"):
		conf_data = BadgeModel().GetConf(conf_id,conf_key)
		data  = AttendanceModel().get_session(conf_id,asession_id)
		hall_data    = data[0]
		session_data = data[1]
		speaker_data = data[2]
		if session_data:
			session_data = session_data[0]
		return render_template('attendance/user/attendance.html',conf_id=conf_id,conf_key=conf_key,conf_data=conf_data,sessionData=session_data,speaker_data=speaker_data,session_id=asession_id)
	else: 
		flash("Session Expired......","errorMsg")
		return redirect(url_for('attendance.AttendanceLogin' ,conf_id = conf_id,conf_key= conf_key))

@app.route('/<int:conf_id>/<conf_key>/get_attendance_volunteer/<asession_id>', methods = ["GET", "POST"])
def Get_attendance_volunteer(conf_id,conf_key,asession_id):
	if session.get("attendancesession"):
		data  = AttendanceModel().get_session_volunteer(asession_id)
		return render_template('attendance/user/attendance_volunteer_table.html',conf_id=conf_id,conf_key=conf_key,session_id=asession_id,data=data)
	else: 
		flash("Session Expired......","errorMsg")
		return redirect(url_for('attendance.AttendanceLogin' ,conf_id = conf_id,conf_key= conf_key))

@app.route('/<int:conf_id>/<conf_key>/postattendance', methods = ["GET", "POST"])
def postAttendance(conf_id,conf_key):
	if session.get("attendancesession"):
		get_conf  = BadgeModel().GetConf(conf_id,conf_key)
		asession_id = request.values.get('asession_id') or None
		speaker_data =  request.values.get('json_data') or None
		remarks      = request.values.get('remarks') or None
		is_mail      = request.values.get('is_mail') or None
		# speaker_data = speaker_data.replace('"', "\"")
		# speaker_data = speaker_data.replace("\'", "\"")
		# speaker_data = speaker_data.replace("None", "-1")
		# speaker_data = json.loads(speaker_data)
		data  = AttendanceModel().get_session(conf_id,asession_id)
		speaker_data = data[2]
		for i in speaker_data:
			i['previous_is_present'] = i['is_present']
			i['is_present'] = request.values.get('radio_'+str(i['pk_id'])+'_'+str(i["is_judge"]))
		
		update = AttendanceModel().update_attendance(speaker_data,get_conf["conf_schema"])
		update = AttendanceModel().update_session(asession_id,datetime.now(),remarks,get_conf["conf_schema"])
		session_data = session.get("attendancesession")
		data = {
			'name'     : session_data["delegate_name"], 
			'mobile'   : session_data["mobile"],
			'abs_session_id': asession_id,
			'loged_on' : datetime.now(),
		}
		AttendanceModel().insert_session_attendance_log(data)
		if int(conf_id) not in [0]:
			AttendanceModel().generate_certificates(conf_id,asession_id)
		data  = AttendanceModel().get_session(conf_id,asession_id)
		session_data = data[1][0]
		conf_data    = BadgeModel().GetConf(conf_id,conf_key)
		conf_data["conf_title"] = "TRICON 2023 - Scientific Committee"
		mail_sent = 0
		for i in speaker_data:
			if i['is_present'] and i['is_present'] != "":
				email = i["email"]
				# email = 'mukeshkumar@numerotec.com'
				if email:
					if int(i["is_present"]) == 1 :
						subject = "Your scientific participation for the session - '"+session_data["session_name"]+"'"
						html  = render_template('attendance/email/attendance.html',data=i,sessionData=session_data,conf_data=conf_data)
						# return html
						# EMAIL.sendMail(subject,html,email,conf_data)
						mail_sent = 0
		if mail_sent == 1:
			flash('Mail Sent Successfuly','successMsg')
		flash('Attendance Saved Successfuly','successMsg')
		return redirect(url_for('attendance.getspeaker' ,conf_id = conf_id,conf_key= conf_key,asession_id = asession_id))
	else: 
		flash("Session Expired......","errorMsg")
		return redirect(url_for('attendance.AttendanceLogin' ,conf_id = conf_id,conf_key= conf_key))
	
@app.route('/<int:conf_id>/<conf_key>/attendance_logout', methods = ["GET", "POST"])
def AttendanceLogout(conf_id,conf_key):
	if session.get("attendancesession") :
		session.pop('attendancesession', None)
	else :
		pass
	return redirect(url_for('attendance.AttendanceLogin' ,conf_id = conf_id,conf_key= conf_key))

@app.route('/<int:conf_id>/<conf_key>/mail_to_speakers/<asession_id>', methods = ["GET", "POST"])
def mail_to_speaker(conf_id,conf_key,asession_id):
	data  = AttendanceModel().get_session(conf_id,asession_id)
	# session_data         = data[1]
	session_speaker_data = data[2]
	session_data = AttendanceModel().getsessiondata_session_id(asession_id)
	conf_data    = BadgeModel().GetConf(conf_id,conf_key)
	for i in session_speaker_data:
		email = i["email"]
		email = 'mukeshkumar@numerotec.com'
		if email:
			subject = "Your Attendance for IAGES 2023"
			html  = render_template('attendance/email/attendance.html',conf_id=conf_id,conf_key=conf_key,data=i,conf_data=conf_data,sessionData=session_data)
			# print(html)
			# EMAIL.sendMail(subject,html,email,conf_data)
	flash('Mail Sent Successfuly','successMsg')
	return redirect(url_for('attendance.getspeaker' ,conf_id = conf_id,conf_key= conf_key,asession_id = asession_id)) 
# <span style="float: right;"><i class="fa fa-arrow-right" aria-hidden="true"></i></span>


Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists