Sindbad~EG File Manager
from flask import Flask, request, Blueprint, jsonify, redirect, url_for,flash, render_template,session, app
from core.model.UserModel import UserModel
from core.model.AbstractModel import AbstractModel
from core.model.BoModel import BoModel
from random import randint
import datetime
from core.library.email import EMAIL
from datetime import timedelta,date,datetime
from core.library.cryptography import Cryptography
from core.library.route_group import RouteGroup
from core.library.auth import Auth
from core.library.helper import Helper
import ast
# import collections
from urllib.parse import unquote
from collections import defaultdict
#S3 import
import os
from werkzeug.utils import secure_filename
from os.path import join, dirname, realpath
import boto3, botocore
from botocore.exceptions import ClientError
#name : Priyavarthana
#version : 1
#title: abstract submission
#date:25/01/2023 01:14
class PCController():
def GuidelineIndex(abs_type,conf_id,conf_key):
guideline = UserModel().get_guidelines(abs_type)
return render_template('users/guideline.html',guideline=guideline,abs_type=abs_type,conf_id=conf_id,conf_key=conf_key)
def AbstractsIndex(abs_type,conf_id,conf_key):
society_id = Auth.get_conference(conf_id).get("society_id")
user_id = Auth.get_user(society_id).get('user_id')
data = UserModel().get_abstract_home(user_id,abs_type,conf_id)
validation = AbstractModel().abstract_home_validation('PC',user_id,conf_id)
my_abstracts = data[0]
eng_abstracts = data[1]
if(validation["status"] != 1):
flash(validation["msg"])
return render_template('users/DEMO24/PC/abstract.html',data=my_abstracts,abs_type='PC',data1=eng_abstracts,data2 = validation,lent=len(my_abstracts),conf_id=conf_id,conf_key=conf_key)
def main_layout(abs_type,abs_id,conf_id,conf_key):
return render_template('users/DEMO24/PC/main_PC.html',abs_type=abs_type,abs_id=abs_id,conf_id=conf_id,conf_key=conf_key)
def New(abs_type,conf_id,conf_key):
society_id = Auth.get_conference(conf_id).get("society_id")
user_id = Auth.get_user(society_id).get('user_id')
validation = AbstractModel().abstract_home_validation(abs_type,user_id,conf_id)
if validation["status"] == 1:
created_at = datetime.now()
result = UserModel().new_abs(user_id,abs_type,34,created_at,conf_id)
abs_id = Cryptography.encrypt(int(result[0]))
return abs_id
else:
return redirect(url_for('main.AbstractsIndex',abs_type=abs_type,conf_id=conf_id,conf_key=conf_key))
def Step1(abs_type,conf_id,conf_key):
json = {'msg':'','status' : 1,'data':''}
abs_id = int(Cryptography.decrypt(unquote(request.values.get('abs_id'))))
society_id = Auth.get_conference(conf_id).get("society_id")
user_id = Auth.get_user(society_id).get('user_id')
user_info = UserModel().get_users_member_no(user_id)#getting name and membership for the user_id
img = AbstractModel().get_img_upload(abs_id)
if(abs_id > 0):
abstract_info = AbstractModel().get_abstracts_by_user_abs_id(user_id,abs_id)#getting abstract info from abstract table
if abstract_info == [] :
json = {'msg':'Abstract Not Found<a href="'+ request.host_url + url_for('DB.Dashboard',conf_id=conf_id,conf_key=conf_key) +'"> click here to Home Page</a>','status' : 0,'data':''}
return jsonify(json)
if (abstract_info["abs_status_id"] == 0):
type_of_presentation = AbstractModel().get_usp_type_of_presentation(user_id,conf_id)#getting presenting type from DB for PP
abs_id = Cryptography.encrypt(abs_id)
json['data'] = render_template('users/DEMO24/PC/step1.html',user_info=user_info,abs_id=abs_id,abs_type=abs_type,data=abstract_info,img=img,conf_id=conf_id,conf_key=conf_key)
return jsonify(json)
else:
json = {'msg':'Abstract already submitted<a href="'+ request.host_url + url_for('DB.Dashboard',conf_id=conf_id,conf_key=conf_key) +'"> click here to Home Page</a>','status' : 0,'data':''}
return jsonify(json)
else:
return redirect(url_for('main.AbstractsIndex',abs_type=abs_type,conf_id=conf_id,conf_key=conf_key))
def Step1post(abs_type,conf_id,conf_key):
json = {'msg':'','status' : 0,'data':''}
society_id = Auth.get_conference(conf_id).get("society_id")
user_id = Auth.get_user(society_id).get('user_id')
# pa_user_id = request.values.get('pa_user_id')
abs_id = request.values.get('abs_id')
abs_id = int(Cryptography.decrypt(abs_id))
# PA_count = AbstractModel().get_FP_PA_count(pa_user_id,abs_id,abs_type) #count the presenting author count to check with count from settings
# settings = AbstractModel().settings(abs_type,conf_id) #taking count form settings table to check the count of presenting author
img = AbstractModel().get_img_upload(abs_id)
data = {
'title' : request.values.get('title'),
'synopsis' : request.values.get('synopsis')
# 'presentation_type_id':request.values["presenting_type"],
}
cur_step = request.values['cur_step']
if img:
if int(cur_step) <= 1:
data["cur_step"] = 1
step1update = UserModel().update_step(data,abs_id)#updataing the data for step1
abs_id = Cryptography.encrypt(int(abs_id))
return redirect(url_for('main.Step2',abs_id=abs_id,abs_type=abs_type,conf_id=conf_id,conf_key=conf_key))
else:
json = {'msg':'Please upload Photo','status' : 0,'data':''}
return jsonify(json)
def Step2(abs_type,conf_id,conf_key):
json = {'msg':'','status' : 1,'data':''}
abs_id = request.values.get('abs_id')
abs_id = int(Cryptography.decrypt(abs_id))
confData = Auth.get_conference(conf_id)
society_id = confData["society_id"]
user_id = Auth.get_user(society_id).get('user_id')
stepsdata = AbstractModel().get_sept4_data(abs_id)
# step2data = UserModel().steps_data(abs_id)#get date from DB
if stepsdata == [] :
json = {'msg':'Abstract Not Found<a href="'+ request.host_url + url_for('DB.Dashboard',conf_id=conf_id,conf_key=conf_key) +'"> click here to Home Page</a>','status' : 0,'data':''}
return jsonify(json)
if(stepsdata['abs_status_id'] == 0 ):
img = AbstractModel().get_img_upload(abs_id)
abs_id = Cryptography.encrypt(abs_id)
json["data"] = render_template('users/DEMO24/PC/step2.html',data=stepsdata,abs_id=abs_id,abs_type=abs_type,conf_id=conf_id,conf_key=conf_key,img=img)
return jsonify(json)
else:
json = {'msg':'Abstract already submitted<a href="'+ request.host_url + url_for('DB.Dashboard',conf_id=conf_id,conf_key=conf_key) +'"> click here to Home Page</a>','status' : 0,'data':''}
return jsonify(json)
def Mail(abs_id,conf_id,conf_key):
conf_data = Auth.get_conference(conf_id)
society_id = conf_data['society_id']
user_id = Auth.get_user(society_id).get('user_id')
abs_id = unquote(abs_id)
abs_id = int(Cryptography.decrypt(abs_id))
data = AbstractModel().get_sept4_data(abs_id)
authors = AbstractModel().get_authors(abs_id)
is_next = request.values.get('is_next')
if (int(is_next) == 1):
if(data["status_check"] == 0):
data1 = {
'submitted_at' : str(datetime.now()),
}
# ratifi_authour = UserModel().get_ratified_member_count(abs_id)
ratifi_authour = 1
if int(ratifi_authour) >= 1:
PA_count = AbstractModel().get_FP_PA_count_final(abs_id,data["abs_type"])#checking presenting author count
data2 = AbstractModel().FP_step1_get_author(abs_id)#getting presenting author details
data3 = AbstractModel().fp_authors_for_email(abs_id)#getting co authors details
# settings = AbstractModel().settings('PC_PA_COUNT',conf_id)
output = AbstractModel().abstract_submited(user_id,abs_id,data["abs_type"],data1,conf_id)
data = AbstractModel().get_sept4_data(abs_id)
# confe_logo = Auth.get_society_data(conf_id).get('email_logo')
for i in data3:
template_name = 'PC_submit_mail'
mailData = UserModel().get_mail_templates(template_name,conf_id)
sub_data = {'abs_type':data['abs_type'],'abs_no':str(data['abs_no']),'conf_name': conf_data['conf_name']}
subject = Helper.merge_tags(mailData.subject,sub_data)
email = i["email"]
mail_data = {'mail_content': mailData.mail_content,'data': data,'data1':authors,'confData':conf_data,'data2':data2}
mail_content = Helper.convert_html_for_mail_screen(mail_data)
html = render_template('users/email/mail_template.html',is_layout=mailData.is_layout,mail_content=mail_content,confData=conf_data,conf_id=conf_id,conf_key=conf_key)
EMAIL.sendMail_v1(subject,html,email,mailData,conf_id)
# name = i["full_name"]
# subject = "TNOA-"+data["abs_type"]+str(data["abs_no"])+" successfully submited"
# email = i["email"]
# html = render_template('users/email/FP_submit.html',name=name,data=data,data1=authors,data2=data2,confe_logo=confe_logo,conf_id=conf_id,conf_key=conf_key)
# now = datetime.now()
# EMAIL.sendMail(subject,html,email,conf_id)
# return html
if output == "success":
abs_id = Cryptography.encrypt(int(abs_id))
user_id = Cryptography.encrypt(int(user_id))
return redirect(url_for('main.success',abs_type=data["abs_type"],abs_id=abs_id,user_id=user_id,conf_id=conf_id,conf_key=conf_key))
else:
flash("ATLEAST ONE OF THE AUTHORS (PRESENTING AUTHOR / CO-AUTHOR) SHOULD BE A RATIFIED MOS MEMBER TO SUBMIT A ELECTRONIC POSTER.")
return redirect(url_for('main.AbstractsIndex',abs_type=data['abs_type'],conf_id=conf_id,conf_key=conf_key))
else:
flash('This '+data["abs_type"]+str(data["abs_no"])+' is already submitted')
return redirect(url_for('main.AbstractsIndex',abs_type=data['abs_type'],conf_id=conf_id,conf_key=conf_key))
else:
abs_id = Cryptography.encrypt(int(abs_id))
return redirect(url_for('main.Step1',abs_id=abs_id,abs_type=data['abs_type'],conf_id=conf_id,conf_key=conf_key))
# return redirect(url_for('FP.Step4',abs_id=abs_id,abs_type=data['abs_type']))#skiped one step for tnoa
def success(abs_type,abs_id,user_id,conf_id,conf_key):
abs_id = unquote(abs_id)
user_id = unquote(user_id)
abs_id = int(Cryptography.decrypt(abs_id))
user_id = int(Cryptography.decrypt(user_id))
authors = AbstractModel().get_authors(abs_id)
data = AbstractModel().get_abstracts_by_user_abs_id(user_id,abs_id)
alert_class = "alert-success"
alert_image = "/static/images/wrong.png"
alert_message = "Congratulations! your "+ data["abs_type"] + str(data["abs_no"]) +" is Submitted Successfully "
return render_template('users/DEMO24/PC/error_success.html',alert_class=alert_class,alert_message=alert_message,abs_id=abs_id,data=data,data2=authors,alert_image=alert_image,conf_id=conf_id,conf_key=conf_key)
def View(abs_id,conf_id,conf_key):
abs_id = unquote(abs_id)
abs_id = int(Cryptography.decrypt(abs_id))
data = AbstractModel().get_sept4_data(abs_id)
data1 = AbstractModel().get_authors(abs_id)
data2 = AbstractModel().FP_step1_get_author(abs_id)
img = AbstractModel().get_img_upload(abs_id)
return render_template('users/DEMO24/PC/view.html',abs_id=abs_id,data=data,data2=data2,data1=data1,conf_id=conf_id,conf_key=conf_key,img=img)
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists