Sindbad~EG File Manager

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

from core import app
from flask import url_for, session, redirect,request,flash,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.CertificateModel import CertificateModel

# 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 = Auth.getConf(conf_id=request.view_args['conf_id'],conf_key=request.view_args['conf_key'])
			if Auth.check(conf['society_id']):
				return f(*args, **kwargs)
			else:
				flash("Session Invalid!. Please login.." , "errorMsg")
				return redirect(url_for('certificate.Login',conf_id=request.view_args['conf_id'],conf_key=request.view_args['conf_key']))
		return wrap

	def bo_cert_login_required(f):
		@wraps(f)
		def wrap(*args, **kwargs):
			# if user is not logged in, redirect to login page      
			conf = Auth.getConf(conf_id=request.view_args['conf_id'],conf_key=request.view_args['conf_key'])
			if Auth.bocheck(conf['society_id']):
				return f(*args, **kwargs)
			else:
				flash("Session Invalid!. Please login.." , "errorMsg")
				return redirect(url_for('bocertificate.BOlogin',conf_id=request.view_args['conf_id'],conf_key=request.view_args['conf_key']))
		return wrap

	def check_date_open(f):
		@wraps(f)
		def wrap(*args, **kwargs):
			test = request.args.get('test')
			# print(test)
			if test=='1':
				return f(*args, **kwargs)
			else:
				conf_id     = request.view_args['conf_id']
				conf_key    = request.view_args['conf_key']
				conf 		= Auth.getConf(conf_id,conf_key)
				open_status = 4 #  app start time not configured 
				start_date1 = conf["app_start_at"]
				text_content= conf["app_open_close_content"]

				if start_date1:
					start_date  = start_date1.strftime("%Y-%m-%d %H:%M")
					end_date1   = conf["app_end_at"]
					end_date    = end_date1.strftime("%Y-%m-%d %H:%M")
					start_dt_msg= start_date1.strftime("%d/%b/%Y")
					end_dt_msg  = end_date1.strftime("%d/%b/%Y")
					now         = datetime.now()
					curr_dt     = now.strftime("%Y-%m-%d %H:%M")
					# return "test 2"
					open_status = 1 # 1 is app open , 2 = yet open , 3 = closed 
					if curr_dt < start_date:
						open_status = 2
					elif curr_dt >= end_date:       
						open_status = 3

				if open_status == 1: # if app open then = true
					return f(*args, **kwargs)	
				elif open_status != 4 and text_content: # if have start date and content then = true
					support_email	= conf["support_email"]
					data 			= {'support_email':support_email,'conf_id':conf_id,'conf_key':conf_key,'start_date':start_date,'start_dt_msg':start_dt_msg,'end_dt_msg':end_dt_msg,'open_status':open_status}
					cerf_temp   	= Helper().convert_jinja_cert_date(text_content,data)
					return render_template('certificate_design/app_start_and_end.html',conf_id=conf_id,conf_key=conf_key,conf=conf,start_date=start_date,start_dt_msg=start_dt_msg,end_dt_msg=end_dt_msg,open_status=open_status,cerf_temp=cerf_temp)
				else: # if not start time or not content then = true
					return "<h2 style='color:red;text-align:center;'>Certificate application currently closed</h2>"
		return wrap


	def conf_required(f):
		@wraps(f)
		def wrap(*args, **kwargs):
			# if user is not logged in, redirect to login page 
				 
			if Auth.checkConf(request.view_args['conf_id'],request.view_args['conf_key']):
				return f(*args, **kwargs)
			else:
				return "<h1> Invaild Link</h1>"
		return wrap
	

	# def bologin_required(f):
	# 	@wraps(f)
	# 	def wrap(*args, **kwargs):
	# 		# if user is not logged in, redirect to login page      
	# 		if Auth.bocheck():
	# 			return f(*args, **kwargs)
	# 		else:
	# 			return redirect(url_for('back_office.Home',conf_id=request.view_args['conf_id'],conf_key=request.view_args['conf_key']))
	# 	return wrap

	# def logout_required(f):
	# 	@wraps(f)
	# 	def wrap(*args, **kwargs):
	# 		# if user is not logged in, redirect to login page      
	# 		if Auth.check():
	# 			return f(*args, **kwargs)
	# 		else:
	# 			return redirect(url_for('user.Home',conf_id=request.view_args['conf_id'],conf_key=request.view_args['conf_key']))
	# 	return wrap

	def bo_login_required(f):
		@wraps(f)
		def wrap(*args, **kwargs):
			# if user is not logged in, redirect to login page      
			if session.get('backoffice'):
				return f(*args, **kwargs)
			else:
				return redirect(url_for('backoffice.BOLogin'))
		return wrap

	# def profile_required(f):
	# 	@wraps(f)
	# 	def wrap(*args, **kwargs):
	# 		u=User()
	# 		user = session.get('user')
	# 		user_id = user.get('user_id')
	# 		user = User().get_user(user_id)
	# 		is_profile_update = user.get('is_profile_update')
	# 		print(str(is_profile_update))
	# 		# return str(is_profile_update)
	# 		if is_profile_update != 1 :
	# 			return redirect(url_for('user.UserProfile',user_id= user_id))
	# 		else :
	# 			return f(*args, **kwargs)

	# 	return wrap    

	# def payment_required(f):
	# 	@wraps(f)
	# 	def wrap(*args, **kwargs):
	# 		p = Payment()
	# 		user = session.get('user')
	# 		user_id = user.get('user_id')
	# 		checkpayment = p.checkuserinpayment(user_id)
	# 		# return len(checkpayment)
	# 		if (len(checkpayment)) == 1 :
	# 			return f(*args, **kwargs)
	# 		else:
	# 			return redirect(url_for('payupayment.payment'))
	# 	return wrap

	
	# Controller Sample :
	# from flask import request, Blueprint, jsonify, redirect, url_for,flash, render_template
	# from core.library.route_group import RouteGroup


	# @app.route('/home' , methods = ["GET"])
	# @RouteGroup.login_required #check if login else automatically redirect to login page
	# def home():
	#       return "welcome home"

	# @app.route('/payment' , methods = ["GET"])
	# @RouteGroup.login_required #check if login else automatically redirect to login page
	# @RouteGroup.payment_required #check if payment done else  automatically redirect to payment page
	# def payment():
	#       return "payment page here"

	

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