Sindbad~EG File Manager

Current Path : /home/numerotech/test-abs.numerotech.com/common_abs_v2/core/controller/
Upload File :
Current File : //home/numerotech/test-abs.numerotech.com/common_abs_v2/core/controller/DashboardController.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 .. import Cryptography,Auth,RouteGroup
from core.library.helper import Helper
import ast
# import collections
from urllib.parse import unquote
from collections import defaultdict

app = Blueprint('DB', __name__)

@app.route('/dashboard/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required #check if login else automatically redirect to login page
@RouteGroup.login_required #check if login else automatically redirect to login page
@RouteGroup.profile_required
def Dashboard(conf_id,conf_key):
	# this function to be sorted
	confData = Auth.get_conference(conf_id)
	society_id = confData.get("society_id")
	user_id = Auth.get_user(society_id).get('user_id')
	data = AbstractModel().get_evaluation(conf_id,user_id,datetime.now(),confData.get('conf_schema'))
	upload_data = AbstractModel().Check_can_upload(conf_id,user_id,datetime.now(),confData.get('conf_schema'))
	if int(conf_id) in [19,37,54,49,69] and int(user_id) not in [126009,126011,128555,128075,128354,128671,128672,128673] :
		check_delegate = AbstractModel().Check_if_delegate(conf_id,Auth.get_user(society_id).get('email'))
		if check_delegate == 0:
			return render_template('users/not_registered.html',conf_id=conf_id,conf_key=conf_key)
	abs_data = UserModel().dashboard_content(user_id,conf_id,confData.get('conf_schema'))
	abs_type = 'Dashboard'
	Auth.abs_type(abs_data,abs_type,conf_id)
	current_time = datetime.now()
	return render_template('users/dashboard.html',abs_data=abs_data,data=data,conf_id=conf_id,conf_key=conf_key,society_id=society_id,current_time=current_time,upload_data=upload_data,user_id=user_id)
	
#ToDo: move to EvaluatorController
@app.route('/evaluation/<abs_type>/<conf_id>/<conf_key>',methods=["GET","POST"])
@RouteGroup.conf_required #check if login else automatically redirect to login page	
@RouteGroup.login_required #check if login else automatically redirect to login page
@RouteGroup.Evaluation_required
def Evaluation(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')
	eval_details = AbstractModel().get_abs_type_data(abs_type,conf_id)
	# print(eval_details)
	# abs_type = abs_type.replace('VAL', '')
	categories =   AbstractModel().get_categories_eva(user_id,abs_type,conf_id,confData.get('conf_schema'))
	data       =   AbstractModel().get_evaluation_list(user_id,abs_type,conf_id,confData.get('conf_schema'))
	cat_abs    =   defaultdict(list) # sub list with key 
	for r in data:
		cat_abs[r["category_id"]].append(r)
	return render_template('users/evaluation.html',category=categories,data=cat_abs,conf_id=conf_id,conf_key=conf_key,eval_details=eval_details,abs_type=abs_type)

@app.route('/view_evaluation/<abs_id>/<eva_abs_type>/<conf_id>/<conf_key>',methods=["GET","POST"])
@RouteGroup.conf_required #check if login else automatically redirect to login page
@RouteGroup.login_required #check if login else automatically redirect to login page
@RouteGroup.Evaluation_required
def View_Evaluation(abs_id,eva_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')
	abs_id = int(Cryptography.decrypt(abs_id))
# 	data_eva = UserModel().get_next_previous_data_eva(abs_id,user_id,eva_abs_type)
	data_eva = UserModel().get_next_previous_data_eva_v1(abs_id,user_id,eva_abs_type,conf_id)
	direction = data_eva[0][0]
	data = data_eva[1][0]
	# template_name = data['abs_type']+"_eval_View"
	template_name = eva_abs_type
	template_data = UserModel().get_template(template_name,conf_id)
	temp_data = Helper.convert_jinja_template_v1(template_data,data)
	return render_template('users/eva_view.html',data=data,direction=direction,conf_id=conf_id,conf_key=conf_key,html_content=temp_data,eva_abs_type=eva_abs_type)

@app.route('/post_view_evaluation/<abs_id>/<string:eva_abs_type>/<conf_id>/<conf_key>',methods=["GET","POST"])
@RouteGroup.conf_required #check if login else automatically redirect to login page
@RouteGroup.login_required #check if login else automatically redirect to login page
def Post_View_Evaluation(abs_id,eva_abs_type,conf_id,conf_key):
	confData = Auth.get_conference(conf_id)
	mark1  = request.values.get('mark1')
	mark2  = request.values.get('mark2')
	mark3  = request.values.get('mark3')
	mark4  = request.values.get('mark4')
	mark5  = request.values.get('mark5')
	remark = request.values['Remarks']
	total_mark = int(mark1 if mark1 else 0)+int(mark2 if mark2 else 0)+int(mark3 if mark3 else 0)+int(mark4 if mark4 else 0)+int(mark5 if mark5 else 0)
	data   = {
			'm1'             : mark1,
			'm2'             : mark2,
			'm3'             : mark3,
			'm4'             : mark4,
			'm5'             : mark5,
			'sys_m1'         : mark1,
			'sys_m2'         : mark2,
			'sys_m3'         : mark3,
			'sys_m4'         : mark4,
			'sys_m5'         : mark5,
			'comments'       : remark,
			'sys_marks_total': total_mark,
			'created_at'     : str(datetime.now()),
			'marks_total'    : total_mark,
			}
	society_id = Auth.get_conference(conf_id).get("society_id")
	user_id = Auth.get_user(society_id).get('user_id')
	result = AbstractModel().sent_mark(abs_id,user_id,eva_abs_type,data,confData.get('conf_schema'))
	flash('Marks saved successfully.','success')
	return jsonify()

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