Sindbad~EG File Manager

Current Path : /home/numerotech/test-abs.numerotech.com/common_abs_v2/core/controller/ROCKENT24/
Upload File :
Current File : //home/numerotech/test-abs.numerotech.com/common_abs_v2/core/controller/ROCKENT24/PGSMController.py

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

#name : Mukesh kumar
#version : 1
#title: abstract submission
#date:07/02/2022 01:14

class PGSMController():
	
	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('PGSM',user_id,conf_id)
		abs_type_data = AbstractModel().get_abs_type_data(abs_type,conf_id)
		my_abstracts  = data[0]
		eng_abstracts = data[1]
		if(validation["status"] != 1):
			flash(validation["msg"])
		return render_template('users/ROCKENT24/PGSM/abstract.html',data=my_abstracts,abs_type=abs_type,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/ROCKENT24/PGSM/main_PGSM.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
		# categories  = UserModel().get_categories(abs_type,conf_id)
		categories = UserModel().get_categories_v1(abs_type,conf_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/ROCKENT24/PGSM/step1.html',user_info=user_info,abs_id=abs_id,abs_type=abs_type,data=abstract_info,conf_id=conf_id,conf_key=conf_key,categories=categories)
				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))
		data = {
				
				'category_id'         :"365",
				'title'       :request.values.get("title" or ''),
				'synopsis' :request.values.get("synopsis" or ''),
				'methods' :request.values.get("methods" or ''),
				'results' :request.values.get("results" or ''),
				'conclusion' :request.values.get("conclusion" or ''),
				'updated_at'  :datetime.now() 
				}
		cur_step = request.values['cur_step']
		img_count    = AbstractModel().get_upload_photo_count(abs_id)
		if(img_count["img_count"] > 0):
			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.Step5',abs_id=abs_id,abs_type=abs_type,conf_id=conf_id,conf_key=conf_key))
		else:
			msg = 'Please upload Bonafide certificate'
			json = {'msg':msg,'status' : 0,'data':''}
			return jsonify(json)

	def Step5(abs_id,abs_type,conf_id,conf_key):
		json = {'msg':'','status' : 1,'data':''}
		abs_id      =   unquote(abs_id)
		abs_id      = int(Cryptography.decrypt(abs_id))
		society_id  = Auth.get_conference(conf_id).get("society_id")
		user_id     = Auth.get_user(society_id).get('user_id')
		data        = AbstractModel().get_sept4_data(abs_id)#getting user and abstract data
		# abs_awards = AbstractModel().get_abs_award_v1(conf_id,abs_type,abs_id)
		# award_title = {}
		# awards = {}

		# abs_parent_ids = []
		# for i in abs_awards:
		# 	if i['abs_id']:
		# 		abs_parent_ids.append(i['parent_id'])	

		# for item in abs_awards:
		# 	if item["is_parent"] == 1:
		# 		if item["award_id"]  in abs_parent_ids:
		# 			award_title[item['award_id']] = item["award_name"] 
		# 	else:
		# 		if item["abs_id"] != None: 
		# 			awards[item["parent_id"]]  = [item] + awards.get(item["parent_id"],[])
		if data == [] :
				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)
		elif(data["abs_status_id"] == 0 ):
			data1     = AbstractModel().get_authors(abs_id)#geting co authors
			data2     = AbstractModel().FP_step1_get_author(abs_id)#getting presenting author
			abs_id    = Cryptography.encrypt(int(abs_id))
			json["data"] = render_template('users/ROCKENT24/PGSM/step2.html',abs_type=abs_type,abs_id=abs_id,data=data,data2=data2,data1=data1,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)

	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('PGSM_PA_COUNT',conf_id)
					if(PA_count <= int(settings[0][0]["setting_value"])):
						output     = AbstractModel().abstract_submited(user_id,abs_id,data["abs_type"],data1,conf_id)
						data       = AbstractModel().get_sept4_data(abs_id)
						for i in data3:
							template_name = 'PGSM_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)
						# return(html)
					else:
						abs_id = Cryptography.encrypt(int(abs_id))
						flash('The presenting author can not participate more than '+settings[0][0]["setting_value"])
						return redirect(url_for('main.AbstractsIndex',abs_type=data["abs_type"],conf_id=conf_id,conf_key=conf_key))
					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("There must be one Ratified Member as Author(presenting author or co-author)")
					abs_id = Cryptography.encrypt(int(abs_id))
					return redirect(url_for('main.main_layout',abs_id=abs_id,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))

			
	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/ROCKENT24/PGSM/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)
		abs_awards = AbstractModel().get_abs_award_v1(conf_id,'PGSM',abs_id)
		# award_title = {}
		# awards = {}

		# abs_parent_ids = []
		# for i in abs_awards:
		# 	if i['abs_id']:
		# 		abs_parent_ids.append(i['parent_id'])	

		# for item in abs_awards:
		# 	if item["is_parent"] == 1:
		# 		if item["award_id"]  in abs_parent_ids:
		# 			award_title[item['award_id']] = item["award_name"] 
		# 	else:
		# 		if item["abs_id"] != None: 
		# 			awards[item["parent_id"]]  = [item] + awards.get(item["parent_id"],[])
		# print("awards>>>>",awards)
		return render_template('users/ROCKENT24/PGSM/view.html',abs_id=abs_id,data=data,data2=data2,data1=data1,conf_id=conf_id,conf_key=conf_key)


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