Sindbad~EG File Manager

Current Path : /home/numerotech/test-abs.numerotech.com/common_abs_v2/core/controller/TNOA24/
Upload File :
Current File : //home/numerotech/test-abs.numerotech.com/common_abs_v2/core/controller/TNOA24/VVVController.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





class VVVController:
	
	def AbstractsIndex(abs_type,conf_id,conf_key): 
		confData      = Auth.get_conference(conf_id)
		society_id    = confData['society_id']
		user_id       = Auth.get_user(society_id).get('user_id')
		if confData['del_url']:
			delData = UserModel().get_delegates(user_id,conf_id)                                              
		data          = UserModel().get_abstract_home(user_id,abs_type,conf_id)
		userData      =   UserModel().get_users_member_no(user_id)
		my_abstracts  = data[0]
		eng_abstracts = data[1]
		validation    = AbstractModel().abstract_home_validation(abs_type,user_id,conf_id)
		if validation["status"] != 1 :
			flash(validation["msg"])
		return render_template('users/TNOA24/VVV/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,delData=delData,confData=confData,userData=userData,user_id=user_id)

	def main_layout(abs_type,abs_id,conf_id,conf_key):
		return render_template('users/TNOA24/VVV/main_VVV.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):
		confData	 = Auth.get_conference(conf_id)
		society_id    = confData.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,confData['conf_schema'])
			data      = AbstractModel().add_to_presenting_author(result[0],user_id,'35',confData['conf_schema'])
			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):
		confData	 = Auth.get_conference(conf_id)
		# print("hello")
		json = {'msg':'','status' : 1,'data':''}
		abs_id      = int(Cryptography.decrypt(unquote(request.values.get('abs_id'))))
		# abs_id        = request.values.get('abs_id')
		society_id    = confData.get("society_id")
		user_id       = Auth.get_user(society_id).get('user_id')
		user_info    =   UserModel().get_member(user_id)#getting name and membership for the user_id
		if(int(abs_id) > 0):
			abstract_info = AbstractModel().get_abstracts_by_user_abs_id(user_id,abs_id,confData['conf_schema'])#getting abstract info from abstract table
			img           = AbstractModel().get_fulltext_by_abs_id(abs_id,confData.get('conf_schema'))
			delData       = UserModel().get_delegates(user_id,conf_id) 
			# print(delData)
			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):
				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:
				json["data"] = render_template('users/TNOA24/VVV/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,img=img,delData=delData)
				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':''}
		abs_id    = request.values.get('abs_id')
		# print(abs_id)
		# abs_id    = int(Cryptography.decrypt(abs_id))   
		if request.method == "POST":
			confData	 = Auth.get_conference(conf_id)
			data        = {'title'     : request.values.get("title" or '')}
			cur_step    = request.values.get('cur_step') or 0
			limit_of_authors = AbstractModel().limit_of_authors(abs_id,confData.get('conf_schema'))
			if(limit_of_authors >= 1):

				if int(cur_step) <= 1:
					data["cur_step"] = 1
				UserModel().update_step(data,abs_id,confData.get('conf_schema'))
				
				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 select your team mate'
				json['status'] = 0			
				return jsonify(json)
			
		else:
			abs_id = Cryptography.encrypt(int(abs_id))
			return redirect(url_for('main.Step1',abs_id=abs_id,abs_type=abs_type,conf_id=conf_id,conf_key=conf_key))

	def Searchauthor(abs_type,conf_id,conf_key):
		searchtext  = request.values["searchtext"]
		btn_val     = request.values["btn_val"]
		society_id  = Auth.get_conference(conf_id).get("society_id")
		role_id     = 35
		if(abs_type == "VVV" and btn_val == "1"):   
			consent_count = 'VVV_PA_COUNT'
			data        = UserModel().get_search_data_presenting('1,6,17',role_id,searchtext,abs_type,society_id,conf_id)#getting search data from DB to step3 
			data1       = AbstractModel().settings(consent_count,conf_id)#get settings for FP presenting author count
			return render_template('users/TNOA24/VVV/presenting_authour_search_table.html',data=data,conf_id=conf_id,conf_key=conf_key)
		else:
			user_id    = Auth.get_user(society_id).get('user_id')
			data        = UserModel().get_search_data(searchtext,role_id,abs_type,society_id,conf_id)
			return render_template('users/TNOA24/VVV/co_authour_search_table.html',data=data,conf_id=conf_id,conf_key=conf_key,user_id=user_id)


	def Add_update_co_author(abs_type,conf_id,conf_key):
		confData  =  Auth.get_conference(conf_id)
		user_id     = request.values["user_id"]
		abs_id      = request.values["abs_id"]
		role_id     = request.values["role_id"]
		addcoauthor = UserModel().get_user_data(user_id)#getting user data
		abs_id      = (int(Cryptography.decrypt(abs_id)))
		AbstractModel().add_to_presenting_author(abs_id,user_id,role_id,confData.get('conf_schema'))#adding presenting author for PP
		return render_template('users/TNOA24/VVV/co_athour_table.html',co_data=addcoauthor,conf_id=conf_id,conf_key=conf_key,user_id=user_id)

	def Get_co_author(abs_type,conf_id,conf_key):
		confData	 = Auth.get_conference(conf_id)
		abs_id      =  request.values["abs_id"]
		abs_id      =  int(Cryptography.decrypt(abs_id))
		data        =  AbstractModel().get_authors(abs_id,confData['conf_schema'])#geting author to show in step 3 table
		# print(data)
		limit_of_authors = AbstractModel().limit_of_authors(abs_id,confData.get('conf_schema'))#geting count of author for co-authors
		settings    = AbstractModel().settings(abs_type+"_CA_COUNT",conf_id)
		if(limit_of_authors >= int(settings[0][0]["setting_value"])):
			limit   = 0
		else:
			limit   = 1
		society_id = Auth.get_conference(conf_id).get("society_id")
		user_id    = Auth.get_user(society_id).get('user_id')
		return render_template('users/TNOA24/VVV/co_athour_table.html',co_data=data,limit=limit,conf_id=conf_id,conf_key=conf_key,user_id=user_id)
	
	def Step2(abs_type,conf_id,conf_key):
		confData	 = Auth.get_conference(conf_id)
		json = {'msg':'','status' : 1,'data':''}
		abs_id     = request.values.get('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')
		delData       = UserModel().get_delegates(user_id,conf_id)
		check_authors_count   = AbstractModel().check_authors_count(abs_id,36,confData.get('conf_schema'))#this is used for step3 co-author count for Q AND FP
		if check_authors_count == [] :
				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(check_authors_count["abs_status_id"] == 0 ):
			
			data          = AbstractModel().get_sept4_data(abs_id,confData.get('conf_schema'))#getting user and abstract data
			data1     = AbstractModel().get_authors(abs_id,confData['conf_schema'])#geting co authors
			data2     = AbstractModel().q_step1_get_author(abs_id,confData.get('conf_schema'))#getting presenting author
			abs_id    = Cryptography.encrypt(int(abs_id))
			json["data"] = render_template('users/TNOA24/VVV/step2.html',abs_type=abs_type,abs_id=abs_id,data=data,data2=data2,data1=data1,conf_id=conf_id,conf_key=conf_key,delData=delData)
			return jsonify(json)
			
		else:
			json = {'msg':'Abstract already submitted<a href="'+ request.host_url + url_for('DB.Dashboard') +'"> 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,conf_data.get('conf_schema'))
		is_next  = request.values.get('is_next')
		authors    = AbstractModel().get_authors(abs_id,conf_data['conf_schema'])
		if (int(is_next) == 1):
			if(data["status_check"] == 0):
				
				data1    = {
						   'submitted_at' :  str(datetime.now()),
						   }
				
				authors_email       = AbstractModel().fp_authors_for_email(abs_id,conf_data.get('conf_schema'))#getting co authors details
				
				output              = AbstractModel().abstract_submited(user_id,abs_id,data["abs_type"],data1,conf_id)#updated the status to submited
				data                = AbstractModel().get_sept4_data(abs_id,conf_data.get('conf_schema'))
				# confe_logo          = Auth.get_conference().get('conference_header_logo')
				for i in authors_email:
					template_name = 'VVV_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,'confData':conf_data,'data1':authors}
					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)
				   
					EMAIL.sendMail_v1(subject,html,email,mailData,conf_id)
				
				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('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):
		confData	 = Auth.get_conference(conf_id)
		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,confData['conf_schema'])
		data          =  AbstractModel().get_abstracts_by_user_abs_id(user_id,abs_id,confData['conf_schema'])
		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/TNOA24/VVV/error_sucess.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):
		confData	 = Auth.get_conference(conf_id)
		abs_id      =   unquote(abs_id)
		abs_id      = int(Cryptography.decrypt(abs_id))
		stepsdata   = AbstractModel().get_sept4_data(abs_id,confData.get('conf_schema'))
		co_auth     = AbstractModel().get_authors(abs_id,confData['conf_schema'])
		pr_auth     = AbstractModel().q_step1_get_author(abs_id,confData.get('conf_schema'))
		society_id  = Auth.get_conference(conf_id).get("society_id")
		user_id     = Auth.get_user(society_id).get('user_id')
		delData     = UserModel().get_delegates(user_id,conf_id)
		return render_template('users/TNOA24/VVV/view.html',abs_id=abs_id,data=stepsdata,data2=pr_auth,data1=co_auth,conf_id=conf_id,conf_key=conf_key,delData=delData)

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