Sindbad~EG File Manager
from flask import Flask, request, Blueprint, jsonify, redirect, url_for,flash, render_template,session,Response,jsonify,json
from core.model.MCDetailModel import MCDetailModel
from random import randint
from core.library.email import EMAIL
from .. import Cryptography,Helper
from flask import session, app
from werkzeug.utils import secure_filename
import ast
from mandrill import Mandrill
from os.path import join, dirname,isfile, realpath
from datetime import datetime, timedelta
import os
import requests,mandrill,json,math,random
from itertools import groupby
from operator import itemgetter
from urllib.parse import unquote
import re
app = Blueprint('mc_details', __name__)
@app.route('/<int:conf_id>/<conf_key>/delegate_info_mail/<user_uuid>', methods = ["GET", "POST"])
def DelegateInfofMail(conf_id,conf_key,user_uuid):
conf_name = " "
conf_data = MCDetailModel().checkConfData(conf_id,conf_key)
if not conf_data :
error_msg = "Invalid URL"
return "<h3 style='color:red;text-align:center'>"+ error_msg +"</h3>"
return redirect(url_for('mc_details.MedicalCouncilLogin',conf_id=conf_id,conf_key=conf_key))
else:
conf_name = conf_data["conf_name"] or ''
conf_schema = conf_data['conf_schema']
delegate_data = MCDetailModel().delegateDataByUUID(conf_id,conf_key,user_uuid,conf_schema)
if delegate_data :
data_1 = delegate_data
email = data_1["email"]
uuid = user_uuid
prefix = data_1["prefix"]
full_name_1 = data_1["full_name"] or ''
full_name = prefix + " " + full_name_1 if prefix else full_name_1
base_url = request.host_url
if "https" in base_url:
pass
else :
base_url = base_url.replace("http" , "https")
url_1 = base_url+str(conf_id)+"/"+conf_key+"/delegate_info/"+user_uuid
# url_1 = base_url+"mail_respond/"+uuid
html = render_template('mc_details/email/delegate_info_mail.html', conf= conf_data,data=delegate_data,uuid=uuid,url_1=url_1)
if full_name :
subject = "Dear "+ full_name +", Very important! Confirmation required for "+ conf_name +" Conference"
else :
subject = "Very important! Confirmation required for "+ conf_name +" Conference"
EMAIL.MCAcknowledgesendMail(subject,html,email,conf_data) # uncomment after testing
return "Email sent successfully."
@app.route('/<int:conf_id>/<conf_key>/delegate_info/<user_uuid>', methods = ["GET", "POST"])
def DelegateInfo(conf_id,conf_key,user_uuid):
conf_data = MCDetailModel().checkConfData(conf_id,conf_key)
conf_schema = conf_data['conf_schema']
enc_delegate_no = None
mc_state_id = None
if conf_id :
country_id = 101
states = MCDetailModel().getStates(country_id)
delegate_data = MCDetailModel().delegateDataByUUID(conf_id,conf_key,user_uuid,conf_schema)
if delegate_data:
json_data = json.dumps(states,default =str)
mc_state_id = delegate_data["mc_state_id"]
enc_delegate_no = Cryptography.encrypt(delegate_data["delegate_no"])
# return str(mc_state_id)
return render_template('mc_details/delegate_info.html',enc_delegate_no= enc_delegate_no,conf= conf_data,data=delegate_data,user_uuid=user_uuid,conf_id = conf_id,conf_key = conf_key,mc_state_id=mc_state_id,states=states)
else :
return "<h3 style='color:red;text-align:center'>Record does not exist.</h3>"
else :
return "<h3 style='color:red;text-align:center'>Invalid URL </h3>"
# @app.route('/post_delegate_info', methods = ["GET", "POST"])
# def PostDelegateInfo():
# now = datetime.now()
# curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
# try:
# user_uuid = request.values.get("user_uuid")
# conf_id = request.values.get("conf_id")
# conf_key = request.values.get("conf_key")
# mc_number = request.values.get("mc_number")
# mc_state_id = request.values.get("mc_state_id")
# email = request.values.get("email")
# data={"mc_number":mc_number ,"mc_state_id" : mc_state_id , "updated_at" : curr_dt,"mc_data_updated_at" : curr_dt}
# update_mc_data = MCDetailModel().updateMCData(data,user_uuid,email,conf_id,conf_key)
# if update_mc_data == "success" :
# return render_template('mc_details/mc_thanks_screen.html')
# else :
# return update_mc_data
# return "<h3 style='color:red;text-align:center'>"+ update_mc_data +"</h3>"
# except Exception as e:
# return "<h3 style='color:red;text-align:center'>"+ str(e) +"</h3>"
# Nov 14, 2023 start
@app.route('/post_delegate_info', methods = ["GET", "POST"])
def PostDelegateInfo():
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
curr_dt_1 = now.strftime("%d/%m/%Y, %H:%M:%S")
del_table_name = None
# curr_dt = "2023-03-25 15:30:00"
try:
enc_delegate_no = request.values.get("enc_delegate_no")
conf_id = request.values.get("conf_id")
conf_key = request.values.get("conf_key")
mc_number = request.values.get("mc_number") or ''
mc_state_id = request.values.get("mc_state_id") or ''
delegate_no = request.values.get("delegate_no")
user_uuid = request.values.get("user_uuid")
# Addedon Oct 04, 2023 start
email = request.values.get("email") or ' '
mobile = request.values.get("mobile") or ' '
prefix = request.values.get("prefix") or ' '
full_name = request.values.get("full_name") or ' '
full_name_1 = prefix +" "+full_name if prefix else full_name
# Addedon Oct 04, 2023 End
conf_id = int(conf_id) if conf_id else conf_id
conf_data = MCDetailModel().checkConfData(conf_id,conf_key)
conf_schema = conf_data['conf_schema']
if not conf_data :
flash("Invalid URL" , "errorMsg")
return redirect(url_for('mc_details.DelegateInfo',conf_id=conf_id,conf_key=conf_key,user_uuid=user_uuid))
else :
del_table_name = conf_data["del_table_name"]
if "'" in delegate_no:
delegate_no = delegate_no.replace("'", "")
delegate_no = int(delegate_no) if delegate_no else delegate_no
if "'" in mc_state_id:
mc_state_id = mc_state_id.replace("'", "")
mc_state_id = int(mc_state_id) if mc_state_id else mc_state_id
data_for_update={"mc_number":mc_number ,"mc_state_id" : mc_state_id , "updated_at" : curr_dt,"mc_data_updated_at" : curr_dt,"prefix" : prefix,"email" : email, "full_name" : full_name, "mobile" : mobile}
state_name = MCDetailModel().getMCState(mc_state_id)
if state_name :
state_name = state_name["state_name"]
else:
state_name = ""
# check duplicate email
check_email = MCDetailModel().check_delegates_email(conf_id,email,delegate_no,conf_schema)
enc_delegate_no = Cryptography.encrypt(delegate_no)
if check_email:
exist_email = check_email['email']
exist_mobile = check_email['mobile']
exist_name = check_email['prefix']+" "+check_email['full_name']
flash("The email you have provided is already mapped for <br> "+str(exist_name)+" ","errorMsg")
return redirect(url_for('mc_details.DelegateInfo',conf_id=conf_id,conf_key=conf_key,user_uuid=user_uuid))
else :
# check duplicate mobile
check_mobile = MCDetailModel().check_delegates_mobile(conf_id,mobile,delegate_no,conf_schema)
if check_mobile:
exist_email = check_mobile['email']
exist_mobile = check_mobile['mobile']
exist_name = check_mobile['prefix']+" "+check_mobile['full_name']
flash("The mobile number you have provided is already mapped for <br> "+str(exist_name)+" ","errorMsg")
return redirect(url_for('mc_details.DelegateInfo',conf_id=conf_id,conf_key=conf_key,user_uuid=user_uuid))
else:
pass
insert_data = MCDetailModel().insert_delegate_in_mc_delegates(conf_id,delegate_no,curr_dt,conf_schema) # before update delegate data first insert into mcc_delegates table
update_stmt = "UPDATE " +del_table_name+ " set full_name='"+full_name_1+"' ,email = '"+email+"',mobile = '"+mobile+"', mc_number= '" + mc_number+ "' , state = '"+ state_name+"' ,updated_at = '"+curr_dt+"' where delegate_no = " +str(delegate_no)+ " and conf_id = "+str(conf_id)+" "
update_mc_data = MCDetailModel().updateMCDataNew(data_for_update,delegate_no,conf_id,update_stmt,conf_schema)
if update_mc_data == "success" :
delegate_data = MCDetailModel().delegateDataByDelegateNo(conf_id,conf_key,delegate_no,conf_schema)
data = delegate_data
full_name_1 = data["prefix"] + " " + data["full_name"] if data["prefix"] else data["full_name"]
subject = "Dear "+ full_name_1 +", your medical council registration details have been updated at " + curr_dt_1
email = data["email"]
# email = "ganesan@numerotec.com" # please comment after testing
if email :
html = render_template('mc_details/email/mc_updated_thanks_mail.html',data = data,conf= conf_data,email=email)
EMAIL.sendMail(subject,html,email,conf_data) # please uncomment after testing
return render_template('mc_details/mc_thanks_screen.html',conf=conf_data)
flash("Thank you" , "successMsg")
# return redirect(url_for('mc_details.MedicalCouncilLogin',conf_id=conf_id,conf_key=conf_key))
return render_template('mc_details/mc_thanks_screen.html',conf=conf_data)
else :
return update_mc_data
return "<h3 style='color:red;text-align:center'>"+ update_mc_data +"</h3>"
except Exception as e:
return "<h3 style='color:red;text-align:center'>"+ str(e) +"</h3>"
# Nov 14, 2023 end
# -------------------------------------------------------------------------
@app.route('/<int:conf_id>/<conf_key>/mc_detail_login', methods = ["GET", "POST"])
def MedicalCouncilLogin(conf_id,conf_key):
conf_data = MCDetailModel().checkConfData(conf_id,conf_key)
# json_data = json.dumps(conf_data, default =str)
# return json_data
if conf_data :
return render_template('mc_details/login_by_delegateno.html',conf_id = conf_id,conf_key=conf_key,conf = conf_data)
else :
return "<h3 style='color:red;text-align:center'>Invalid URL </h3>"
@app.route('/<int:conf_id>/<conf_key>/post_mc_detail_login', methods = ["GET", "POST"])
def PostMedicalCouncilLogin(conf_id,conf_key):
conf_data = MCDetailModel().checkConfData(conf_id,conf_key)
conf_schema = conf_data['conf_schema']
delegate_no = request.values.get("delegate_no")
delegate_data = MCDetailModel().delegateDataByDelegateNo(conf_id,conf_key,delegate_no,conf_schema)
if delegate_data :
enc_delegate_no = Cryptography.encrypt(delegate_no)
return redirect(url_for('mc_details.DelegateMCInfo',enc_delegate_no =enc_delegate_no,conf_id=conf_id,conf_key=conf_key))
else :
flash("Record not found" , "errorMsg")
return redirect(url_for('mc_details.MedicalCouncilLogin',conf_id=conf_id,conf_key=conf_key))
mc_state_id = None
if conf_id :
country_id = 101
return render_template('mc_details/login_by_delegateno.html',conf_id = conf_id,conf_key=conf_key)
else :
return "<h3 style='color:red;text-align:center'>Invalid URL </h3>"
@app.route('/delegate_mc_info/<int:conf_id>/<conf_key>/<enc_delegate_no>', methods = ["GET", "POST"])
def DelegateMCInfo(conf_id,conf_key,enc_delegate_no):
conf_data = MCDetailModel().checkConfData(conf_id,conf_key)
enc_delegate_no = unquote(enc_delegate_no)
mc_state_id = None
if conf_id :
country_id = 101
states = MCDetailModel().getStates(country_id)
delegate_no = Cryptography.decrypt(enc_delegate_no)
# delegate_no = int(delegate_no)
conf_schema = conf_data['conf_schema']
delegate_data = MCDetailModel().delegateDataByDelegateNo(conf_id,conf_key,delegate_no,conf_schema)
if delegate_data:
mc_state_id = delegate_data["mc_state_id"]
return render_template('mc_details/mc_delegate_info.html',data=delegate_data,delegate_no=delegate_no,enc_delegate_no=enc_delegate_no,conf_id = conf_id,conf_key = conf_key,mc_state_id=mc_state_id,states=states,conf=conf_data)
else :
return "<h3 style='color:red;text-align:center'>Record does not exist.</h3>"
else :
return "<h3 style='color:red;text-align:center'>Invalid URL </h3>"
@app.route('/<int:conf_id>/<conf_key>/delegate_mc_info/at/<user_uuid>', methods = ["GET", "POST"])
def DelegateMCInfoAutoLogin(conf_id,conf_key,user_uuid):
conf_data = MCDetailModel().checkConfData(conf_id,conf_key)
mc_state_id = None
if conf_id :
country_id = 101
states = MCDetailModel().getStates(country_id)
conf_schema = conf_data['conf_schema']
delegate_data = MCDetailModel().delegateDataByUUID(conf_id,conf_key,user_uuid,conf_schema)
if delegate_data:
mc_state_id = delegate_data['mc_state_id']
delegate_no = delegate_data["delegate_no"]
enc_delegate_no = Cryptography.encrypt(delegate_no)
return render_template('mc_details/mc_delegate_info.html',data=delegate_data,delegate_no=delegate_no,enc_delegate_no=enc_delegate_no,conf_id = conf_id,conf_key = conf_key,mc_state_id=mc_state_id,states=states,conf=conf_data)
else :
return "<h3 style='color:red;text-align:center'>Record does not exist.</h3>"
else :
return "<h3 style='color:red;text-align:center'>Invalid URL </h3>"
@app.route('/post_mc_delegate_info', methods = ["GET", "POST"])
def PostMCDelegateInfo():
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
curr_dt_1 = now.strftime("%d/%m/%Y, %H:%M:%S")
del_table_name = None
enc_delegate_no = request.values.get("enc_delegate_no")
conf_id = request.values.get("conf_id")
conf_key = request.values.get("conf_key")
mc_number = request.values.get("mc_number") or ''
mc_state_id = request.values.get("mc_state_id") or ''
delegate_no = request.values.get("delegate_no")
email = request.values.get("email") or ' '
mobile = request.values.get("mobile") or ' '
prefix = request.values.get("prefix") or ' '
full_name = request.values.get("full_name") or ' '
full_name_1 = prefix +" "+full_name if prefix else full_name
conf_id = int(conf_id) if conf_id else conf_id
conf_data = MCDetailModel().checkConfData(conf_id,conf_key)
conf_schema = conf_data['conf_schema']
if not conf_data :
return redirect(url_for('mc_details.MedicalCouncilLogin',conf_id=conf_id,conf_key=conf_key))
else :
del_table_name = conf_schema + ".delegates"
if "'" in delegate_no:
delegate_no = delegate_no.replace("'", "")
delegate_no = int(delegate_no)
if "'" in mc_state_id:
mc_state_id = mc_state_id.replace("'", "")
mc_state_id = int(mc_state_id) if mc_state_id else mc_state_id
data_for_update={"mc_number":mc_number ,"mc_state_id" : mc_state_id , "updated_at" : curr_dt,"mc_data_updated_at" : curr_dt}
state_name = MCDetailModel().getMCState(mc_state_id)
if state_name :
state_name = state_name["state_name"]
else:
state_name = ""
# check duplicate email
# check_email = MCDetailModel().check_delegates_email(conf_id,email,delegate_no,conf_schema)
enc_delegate_no = Cryptography.encrypt(delegate_no)
# if check_email:
# exist_email = check_email['email']
# exist_mobile = check_email['mobile']
# exist_name = check_email['prefix']+" "+check_email['full_name']
# flash("The email you have provided is already mapped for <br> "+str(exist_name)+" ","errorMsg")
# return redirect(url_for('mc_details.DelegateMCInfo',conf_id=conf_id,conf_key=conf_key,enc_delegate_no=enc_delegate_no))
# else :
# # check duplicate mobile
# check_mobile = MCDetailModel().check_delegates_mobile(conf_id,mobile,delegate_no,conf_schema)
# if check_mobile:
# exist_email = check_mobile['email']
# exist_mobile = check_mobile['mobile']
# exist_name = check_mobile['prefix']+" "+check_mobile['full_name']
# flash("The mobile number you have provided is already mapped for <br> "+str(exist_name)+" ","errorMsg")
# return redirect(url_for('mc_details.DelegateMCInfo',conf_id=conf_id,conf_key=conf_key,enc_delegate_no=enc_delegate_no))
# else:
# pass
insert_data = MCDetailModel().insert_delegate_in_mc_delegates(conf_id,delegate_no,curr_dt,conf_schema) # before update delegate data first insert into mcc_delegates table
update_stmt = None
update_mc_data = MCDetailModel().updateMCDataNew(data_for_update,delegate_no,conf_id,update_stmt,conf_schema)
if update_mc_data == "success" :
delegate_data = MCDetailModel().delegateDataByDelegateNo(conf_id,conf_key,delegate_no,conf_schema)
data = delegate_data
full_name_1 = data["prefix"] + " " + data["full_name"] if data["prefix"] else data["full_name"]
subject = "Dear "+ full_name_1 +", your medical council registration details have been updated at " + curr_dt_1
email = data["email"]
if email :
html = render_template('mc_details/email/mc_updated_thanks_mail.html',data = data,conf= conf_data,email=email)
EMAIL.sendMail(subject,html,email,conf_data) # please uncomment after testing
return "<h4><center>Thank you for the update.</center></h4>"
return render_template('mc_details/mc_thanks_screen.html')
else :
return update_mc_data
return "<h3 style='color:red;text-align:center'>"+ update_mc_data +"</h3>"
@app.route('/<int:conf_id>/<conf_key>/mc_login', methods = ["GET", "POST"])
def MCLogin(conf_id,conf_key):
conf_data = MCDetailModel().checkConfData(conf_id,conf_key)
if conf_data :
return render_template('mc_details/login_by_email_or_mobile.html',conf_id = conf_id,conf_key=conf_key,conf = conf_data)
else :
return "<h3 style='color:red;text-align:center'>Invalid URL </h3>"
@app.route('/<int:conf_id>/<conf_key>/post_mc_login', methods = ["GET", "POST"])
def PostMCLogin(conf_id,conf_key):
conf_data = MCDetailModel().checkConfData(conf_id,conf_key)
conf_schema = conf_data['conf_schema']
email_or_mobile = request.values.get("email_or_mobile")
email_regex = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b'
mobile_regex = r'^[6-9]\d{9}$'
if email_or_mobile:
if re.fullmatch(email_regex, email_or_mobile):
delegate_data = MCDetailModel().delegateDataByEmail(conf_id,conf_key,email_or_mobile,conf_schema)
elif re.fullmatch(mobile_regex, email_or_mobile):
delegate_data = MCDetailModel().delegateDataByMobile(conf_id,conf_key,email_or_mobile,conf_schema)
else:
flash("Please enter a valid email ID or mobile number", "errorMsg")
return redirect(url_for('mc_details.MCLogin',conf_id=conf_id,conf_key=conf_key))
else:
flash("Please enter a valid email ID or mobile number", "errorMsg")
return redirect(url_for('mc_details.MCLogin',conf_id=conf_id,conf_key=conf_key))
if delegate_data :
delegate_no = delegate_data.get('delegate_no')
enc_delegate_no = Cryptography.encrypt(delegate_no)
return redirect(url_for('mc_details.DelegateMCInfo',enc_delegate_no =enc_delegate_no,conf_id=conf_id,conf_key=conf_key))
else :
flash("Record not found" , "errorMsg")
return redirect(url_for('mc_details.MCLogin',conf_id=conf_id,conf_key=conf_key))
mc_state_id = None
if conf_id :
country_id = 101
return render_template('mc_details/login_by_delegateno.html',conf_id = conf_id,conf_key=conf_key)
else :
return "<h3 style='color:red;text-align:center'>Invalid URL </h3>"
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists