Sindbad~EG File Manager

Current Path : /home/numerotech/test-abs.numerotech.com/common_abs_v2/core/library/
Upload File :
Current File : //home/numerotech/test-abs.numerotech.com/common_abs_v2/core/library/route_group.py

from core import app
from flask import url_for, session, redirect,request,flash,jsonify,render_template
from datetime import datetime, date, time, timedelta
from functools import wraps
from core.library.auth import Auth
from core.library.helper import Helper
from core.model.AbstractModel import AbstractModel
from core.model.UserModel import UserModel
# Flask View decorators
class RouteGroup:
	def login_required(f):
		@wraps(f)
		def wrap(*args, **kwargs):
			# if user is not logged in, redirect to login page      
			conf_id = request.view_args['conf_id']
			society_id = Auth.get_conference(conf_id).get("society_id")
			if Auth.check(society_id):
				return f(*args, **kwargs)
			else:
				conf_key = request.view_args['conf_key'] 
				if Helper.isAjax(request):
					json = {'msg':'Your Session has been expired. Please <a href="'+ request.host_url + url_for('user.Login',conf_id=conf_id,conf_key=conf_key) +'">click here to login</a>','status' : 0,'data':''}
					return jsonify(json)
				else:
					return redirect(url_for('user.Login',conf_id=conf_id,conf_key=conf_key ))
		return wrap
		
	def profile_required(f):
		@wraps(f)
		def wrap(*args, **kwargs):
			# if user is not logged in, redirect to login page
			conf_id = request.view_args['conf_id']      
			society_id = Auth.get_conference(conf_id).get("society_id")
			user_uuid = Auth.get_user(society_id).get('user_uuid')
			user_id = Auth.get_user(society_id).get('user_id')
			host = request.base_url.replace('/dashboard','')
			userData  = UserModel().get_member(user_id)
			current_dt = datetime.now()
			oneyear_before = current_dt + timedelta(days=-365)
			if  userData['profile_updated_at']:
				if int(conf_id) == 52 and userData['member_type_id'] != 2 and (userData['profile_updated_at']< oneyear_before):
					return redirect('https://profile.kosonline.org/10/kos/at/app/'+user_uuid+'?r_url="'+host+'"')
				else:   
					return f(*args, **kwargs)
			else:
				if int(conf_id) == 52 and userData['member_type_id']!=2:
					return redirect('https://profile.kosonline.org/10/kos/at/app/'+user_uuid+'?r_url="'+host+'"')
				else:
					flash('Please update your profile and click on the "Update" button to proceed further','warning')
					conf_key   = Auth.get_conference(conf_id).get('conf_key')   
					return redirect(url_for('user.Profile_update',conf_id=conf_id,conf_key=conf_key))
		return wrap  
	
	def Evaluation_required(f):
		@wraps(f)
		def wrap(*args, **kwargs):
			# if user is not logged in, redirect to login page
			conf_id    = request.view_args['conf_id']     
			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'))
			if  data:
				return f(*args, **kwargs)
			else:   
				flash('Evaluation Has Been Closed','danger')
				conf_key   = Auth.get_conference(conf_id).get('conf_key')   
				return redirect(url_for('DB.Dashboard',conf_id=conf_id,conf_key=conf_key))
		return wrap
	
	def conf_required(f):
		@wraps(f)
		def wrap(*args, **kwargs):
			# if user is not logged in, redirect to login page      
			conf_id = request.view_args['conf_id']
			conf_key = request.view_args['conf_key']
			conf_data = Auth.get_conference(conf_id)
			if conf_data and conf_data["conf_key"] == conf_key  :
				return f(*args, **kwargs) # redirect to current url
			else:
				conf_data  = UserModel().get_confe(conf_id,conf_key)
				delData    = UserModel().get_delegate_app(conf_id)
				app_style  = UserModel().GetAppStyle(conf_id)
				del_url    = None
				if delData:
					del_url = delData['app_url']
				if conf_data:
					Auth.conference(conf_data,conf_id)
					if app_style:
						Auth.app_style(app_style,conf_id)
					
					return f(*args, **kwargs) # redirect to current url
				else:
					return ("<html><h1>Invalid URL</h1></html>")
		return wrap


	def bo_access_required(f):
		@wraps(f)
		def wrap(*args, **kwargs):
			# checking for backoffice access only admin can access
			conf_id = request.view_args['conf_id']
			conf_key = request.view_args['conf_key']
			society_id = Auth.get_conference(conf_id).get("society_id")
			if((Auth.get_user(society_id).get('is_admin'))):
				if int(Auth.get_user(society_id).get('is_admin')) == 1:
					return f(*args, **kwargs)
				else:
					flash("You can't access backoffice")
					return redirect(url_for('DB.Dashboard',conf_id=conf_id,conf_key=conf_key))
			else:
					flash("You can't access backoffice")
					return redirect(url_for('DB.Dashboard',conf_id=conf_id,conf_key=conf_key))
		return wrap

	def validation_OP_required(f):
		@wraps(f)
		def wrap(*args, **kwargs):  
			conf_id = request.view_args['conf_id']
			conf_key = request.view_args['conf_key']
			abs_type = request.view_args['abs_type']
			society_id = Auth.get_conference(conf_id).get("society_id")
			validation    = AbstractModel().abstract_home_validation(abs_type,Auth.get_user(society_id).get('user_id'),conf_id)
			if(validation["status"] in [0,1,3] ):
				return f(*args, **kwargs)
			else:
				# flash(validation["msg"])
				return redirect(url_for('main.AbstractsIndex',abs_type=abs_type,conf_id = conf_id,conf_key=conf_key ))
		return wrap

	def validation_VP_required(f):
		@wraps(f)
		def wrap(*args, **kwargs):  
			conf_id = request.view_args['conf_id']
			society_id = Auth.get_conference(conf_id).get("society_id")
			validation    = AbstractModel().abstract_home_validation('VP',Auth.get_user(society_id).get('user_id'),conf_id)
			if(validation["status"] == 1 or validation["status"] == 0 ):
				return f(*args, **kwargs)
			else:
				# flash(validation["msg"])
				return redirect(url_for('VP.AbstractsIndex',abs_type='VP'))
		return wrap

	def validation_EP_required(f):
		@wraps(f)
		def wrap(*args, **kwargs):  
			conf_id = request.view_args['conf_id']
			society_id = Auth.get_conference(conf_id).get("society_id")
			validation    = AbstractModel().abstract_home_validation('EP',Auth.get_user(society_id).get('user_id'),conf_id)
			if(validation["status"] == 1 or validation["status"] == 0 ):
				return f(*args, **kwargs)
			else:
				# flash(validation["msg"])
				return redirect(url_for('EP.AbstractsIndex',abs_type='EP'))
		return wrap

	def validation_IC_required(f):
		@wraps(f)
		def wrap(*args, **kwargs):  
			conf_id = request.view_args['conf_id']
			society_id = Auth.get_conference(conf_id).get("society_id")
			validation    = AbstractModel().abstract_home_validation('IC',Auth.get_user(society_id).get('user_id'),conf_id)
			if(validation["status"] == 1 or validation["status"] == 0 ):
				return f(*args, **kwargs)
			else:
				# flash(validation["msg"])
				return redirect(url_for('IC.AbstractsIndex',abs_type='IC'))
		return wrap

	def validation_FP_required(f):
		@wraps(f)
		def wrap(*args, **kwargs):  
			conf_id = request.view_args['conf_id']
			society_id = Auth.get_conference(conf_id).get("society_id")
			validation    = AbstractModel().abstract_home_validation('FP',Auth.get_user(society_id).get('user_id'),conf_id)
			if(validation["status"] == 1 or validation["status"] == 0 ):
				return f(*args, **kwargs)
			else:
				# flash(validation["msg"])
				return redirect(url_for('FP.AbstractsIndex',abs_type='FP'))
		return wrap

	def validation_VT_required(f):
		@wraps(f)
		def wrap(*args, **kwargs):  
			conf_id = request.view_args['conf_id']
			society_id = Auth.get_conference(conf_id).get("society_id")
			validation    = AbstractModel().abstract_home_validation('VT',Auth.get_user(society_id).get('user_id'),conf_id)
			if(validation["status"] == 1 or validation["status"] == 0 ):
				return f(*args, **kwargs)
			else:
				# flash(validation["msg"])
				return redirect(url_for('VT.AbstractsIndex',abs_type='VT'))
		return wrap

	def validation_PP_required(f):
		@wraps(f)
		def wrap(*args, **kwargs):  
			conf_id = request.view_args['conf_id']
			society_id = Auth.get_conference(conf_id).get("society_id")
			validation    = AbstractModel().abstract_home_validation('PP',Auth.get_user(society_id).get('user_id'),conf_id)
			if(validation["status"] == 1 or validation["status"] == 0 ):
				return f(*args, **kwargs)
			else:
				# flash(validation["msg"])
				return redirect(url_for('PP.AbstractsIndex',abs_type='PP'))
		return wrap

	def ic_consent_date(f):
		@wraps(f)
		def wrap(*args, **kwargs):
			# if user is not logged in, redirect to login page
			conf_id = request.view_args['conf_id']
			conf_key = request.view_args['conf_key']
			setting_key   = 'IC_CONSENT_END_ON'
			settings_val  = AbstractModel().settings(setting_key,conf_id)
			if settings_val:
				consent_datetime =   datetime.strptime(settings_val[0][0]["setting_value"], '%Y-%m-%d %H:%M:%S')

			if consent_datetime > datetime.now():
				return f(*args, **kwargs)
			else:   
				alert_class   = 'alert-danger'
				alert_message = "Sorry! consent cannot be provided any more."
				alert_image   = "/static/images/right.png"
				return render_template('users/error_success.html',alert_class=alert_class,alert_message=alert_message,abs_type="IC",alert_image=alert_image,conf_id=conf_id,conf_key=conf_key)
		return wrap 

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