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/CertificateController.py

from flask import request, Blueprint, jsonify, redirect, url_for,flash, render_template,session,json,render_template_string
from core.model.BadgeModel import BadgeModel
from core.model.FoodSessionModel import FoodSessionModel
# CertificateModel
from core.model.CertificateModel import CertificateModel
from .. import Cryptography
from .. import Helper
# from flask import session, app
from random import randint
import datetime
from datetime import timedelta,date,datetime,time
# import requests, json

from werkzeug.utils import secure_filename

from os.path import join, dirname, realpath
import os
import flask
import string
 
from flask import Flask
import barcode
from barcode import EAN8
from barcode import EAN13
from barcode.writer import ImageWriter

# from Code128 import Code128
# from base64 import b64encode



from collections import defaultdict
import math
from core import app
# from flask_qrcode import QRcode


app = Blueprint('cert', __name__)

#21Nov2022 View certificate index:

@app.route('/<int:conf_id>/<conf_key>/certificate', methods = ["GET","POST"])
def Certificate(conf_id,conf_key):
	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"]
		return render_template('certificate/certificate.html' ,conf_id=  conf_id, conf_key =conf_key,conf_name=conf_name,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('/post_certificate', methods = ["GET","POST"])
def PostCertificate():
	now = datetime.now()
	current_dt   = now.strftime("%Y-%m-%d %H:%M:%S")
	cert_log_table = "numerotech_foodkit.cert_download_logs"
	del_no          = request.form['del_no']
	conf_id         = request.form['conf_id']
	conf_key        = request.form['conf_key']
	del_table_name  = request.form['del_table_name']
	cert_download_times = []

	getNameAndRole  = CertificateModel().getNameAndRole(del_no,del_table_name)
	getTemplate     = CertificateModel().get_Cerf_typ(conf_id)
	cert_id = 3
	check_status = CertificateModel().checkCertAlreadyPrint(conf_id,cert_id,del_no , cert_log_table)

	badge_user 	   = session.get('badge')
	del_table_name = badge_user["del_table_name"]
	is_singedon =  CertificateModel().checkSignedOn(conf_id,del_no,del_table_name)
	print(is_singedon)

	if  is_singedon :
		if check_status :
			for index,value in enumerate(check_status) :
				created_at = value["created_at"]
				cert_download_times.append(created_at)

			# Certificate already printed on ___ . Do you want to print again ?	

			msg = 	"Certificate already printed on "+ str(created_at)+". Do you want to print again ?"
			status   = 2
		else :
			stmt =" insert into " + cert_log_table + " (conf_id,cert_id , delegate_no, created_at) values('"+str(conf_id)+"', '"+str(cert_id)+"','"+str(del_no)+"','"+current_dt+"'   )" 
			CertificateModel().saveCertDownloadLogs(stmt)
			msg = "success"	
			status = 1

			# data = {"cert_msg" : "This is certificate is already downloaded for this user on "+ str(created_at)+". Do you want to download again ?." ,"status" : 2}
		
		html_data       = render_template('certificate/view_delegatename_role.html',conf_id=conf_id,del_no=del_no,cerf_typ=getTemplate,data =getNameAndRole)
		data            = {"html_data" : html_data ,"status" : status , "msg" : msg}
		return json.dumps(data)
	else :
		msg = "Delegate did not attend the conference. So certificate not generated. "
		data            = {"html_data" : "" ,"status" : 3 , "msg" : msg}
		return json.dumps(data)




@app.route('/print_certificate/<int:conf_id>/<int:del_no>', methods = ["GET","POST"])
def PrintCertificate(conf_id,del_no):
	if session.get('badge'):
		badge_user = session.get('badge')
		del_table_name = badge_user["del_table_name"]

		cerf_id        = request.form['cerf_typ']
		getNameAndRole = CertificateModel().getNameAndRole(del_no,del_table_name)
		getTemplate    = CertificateModel().getTemplate(conf_id,cerf_id)
		div=getTemplate['cerf_div']
		div_temp = Helper().convert_jinja_template(div,getNameAndRole)
		return render_template('certificate/print_certificate.html',conf_id=conf_id,del_no=del_no,div=div_temp,type=type)
	else :
		flash("Invalid login" ,"errorMsg")	
		return redirect (url_for('badge_user.BadgeLogin',conf_id=conf_id ,conf_key=conf_key))



#24Nov2022 Adding Certificate Div:

@app.route('/<int:conf_id>/<conf_key>/certificate_index', methods = ["GET", "POST"])
def CertificateIndex(conf_id,conf_key):
	if session.get('badge'):
		badge_user = session.get('badge')
		conf_id    = badge_user["conf_id"]
		conf_name  = badge_user["conf_name"]
		getTemplate  = CertificateModel().get_Cerf_typ(conf_id)
		return render_template('certificate/creating_template.html',conf_id=conf_id,conf_key=conf_key,data=getTemplate,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('/preview_certificate_index', methods = ["GET", "POST"])
def PreviewCertificateIndex():
	now = datetime.now()
	current_dt   = now.strftime("%Y-%m-%d %H:%M:%S")
	cerf_div     = request.form['cerf_div']
	cerf_typ     = request.form['cerf_typ']
	conf_id      = request.form['conf_id']
	data = {
	'cerf_div'     : cerf_div,
	'cerf_typ'     : cerf_typ,
	'conf_id'      : conf_id,
	'created_at'   : current_dt
	}
	
	html_data = render_template('certificate/view_template.html',temp_data =data)
	data      = {"html_data" : html_data ,"status" : 1 , "msg" : "success"}
	return json.dumps(data)



@app.route('/save_certificate_index', methods = ["GET", "POST"])
def SaveCertificateIndex():
	now = datetime.now()
	current_dt   = now.strftime("%Y-%m-%d %H:%M:%S")
	cerf_div     = request.form['cerf_div']
	cerf_typ     = request.form['cerf_typ']
	conf_id      = request.form['conf_id']
	conf_key     = request.form['conf_key']
	is_active    = request.values.get("is_active") or 0
	is_active    = int(is_active)
	
	data = {
	'cerf_div'     : cerf_div,
	'cerf_typ'     : cerf_typ,
	'conf_id'      : conf_id,
	'created_at'   : current_dt,
	'is_active'    : is_active
	}
	
	CertificateModel().insert_Tempdata(data)
	return redirect (url_for('cert.CertificateIndex',conf_id=conf_id,conf_key=conf_key))

	

@app.route('/edit_certificate_index',methods = ["GET","POST"])
def EditCertificateIndex():
	cerf_id = request.values.get("cerf_id")
	cerf_data = CertificateModel().edit_cerf(cerf_id) 
	# states = RegisterModel().get_states() # if we use state in edit form  un comment this line
	if cerf_data :
		data = {'cerf_data' :cerf_data ,'msg' : 'success' ,'status' : 1}
	else :
		data = {'cerf_data' :[] ,'msg' : 'data not exist' ,'status' : 2} 

	return json.dumps(data,default=str)


@app.route('/update_certificate_index', methods = ["GET", "POST"])
def UpdateCertificateIndex():
	now = datetime.now()
	current_dt   = now.strftime("%Y-%m-%d %H:%M:%S")
	cerf_id      = request.form['cerf_id']
	cerf_div     = request.form['cerf_div']
	cerf_typ    = request.form['cerf_typ']
	is_active    = request.values.get("is_active") or 0
	is_active    = int(is_active)

	data_for_update = {
	'cerf_div'     : cerf_div,
	'cerf_typ'     : cerf_typ,
	'is_active'    : is_active,
	'updated_at'   : current_dt
	}
	update_and_getdata = CertificateModel().update_cerf_and_getdata(data_for_update,cerf_id)
	html_data = render_template('certificate/view_template.html',temp_data =update_and_getdata)
	data = {"html_data" : html_data ,"status" : 1 , "msg" : "success"}
	return json.dumps(data)

@app.route('/delete_cerf_index',methods = ["GET","POST"])
def DeleteCerfIndex():
	cerf_id    = request.values.get('cerf_id')
	delet_data = CertificateModel().delete_cerf_index(cerf_id)
	html_data = render_template('certificate/view_template.html',temp_data =delet_data)
	data = {"html_data" : html_data ,"status" : 1 , "msg" : "success"}
	return json.dumps(data)
	
	
# Check certificate already print
@app.route('/check_cert_already_print',methods = ["GET","POST"])
def CheckCertAlreadyPrint():
	now = datetime.now()
	current_dt   = now.strftime("%Y-%m-%d %H:%M:%S")
	delegate_no = request.values.get("del_no") or 0
	cert_id     = 4
	conf_id     = request.values.get("conf_id") or 0
	cert_log_table = "numerotech_foodkit.cert_download_logs"
	cert_download_times = []
	
	delegate_no = int(delegate_no) if delegate_no else delegate_no
	cert_id     = int(cert_id) if cert_id else cert_id

	try:
		if cert_id > 0 and delegate_no > 0 :
			check_status = CertificateModel().checkCertAlreadyPrint(conf_id,cert_id,delegate_no , cert_log_table)

			if check_status :
				for index,value in enumerate(check_status) :
					created_at = value["created_at"]
					cert_download_times.append(created_at)

				data = {"msg" : "This is certificate is already downloaded for this user on "+ str(created_at)+". Do you want to download again ?." ,"status" : 2}
					
			else:
				# insert records to save   
				stmt =" insert into " + cert_log_table + " (conf_id,cert_id , delegate_no, created_at) values('"+str(conf_id)+"', '"+str(cert_id)+"','"+str(delegate_no)+"','"+current_dt+"'   )" 
				print(stmt)
				data_to_save = {"conf_id" : conf_id , "cert_id" : cert_id , "delegate_no" : delegate_no ,"created_at" : current_dt }
				print(data_to_save)
				CertificateModel().saveCertDownloadLogs(stmt)
				data ={"msg" :  "Certificate successfully generated !." , "status" : 1}

		else :
			data = {"msg" : "Invalid certificate Id or delegate number" , "status" : 3}		
			
		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 
		
# Cert Print index
@app.route('/<int:conf_id>/<conf_key>/certificate_print_index',methods = ["GET","POST"])
def CertificatePrintIndex(conf_id,conf_key):
	total_count = 0
	if session.get('badge'):
		badge_user = session.get('badge')
		del_table_name  = badge_user["del_table_name"]
		cert_print_data = CertificateModel().getCertPringLogs(del_table_name,conf_id)
		if cert_print_data :
			total_count = len(cert_print_data)
		return render_template("certificate/cert_print_download_index.html",data=cert_print_data ,conf_id=conf_id,conf_key =conf_key,total_count=total_count)
	else :
		return "Invalid Login"	

	

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