Sindbad~EG File Manager

Current Path : /home/numerotech/admin.numerotech.com/admin_app_v1/core/controller/
Upload File :
Current File : //home/numerotech/admin.numerotech.com/admin_app_v1/core/controller/AdminAccessController.py

from dataclasses import dataclass
from flask import Flask, request, Blueprint, jsonify, redirect, url_for,flash, render_template,session,json
import datetime
from datetime import timedelta,date,datetime
from .. import Cryptography,Auth,RouteGroup,Helper
from core.library.email import EMAIL
from core.model.AdminAccessModel import AdminAccessModel
from urllib.parse import unquote
import random
import os
from os import path
import logging
from werkzeug.utils import secure_filename
from os.path import join, dirname, realpath
import boto3, botocore
from botocore.exceptions import ClientError
import math, random
import time
import datetime
from urllib.parse import unquote
from collections import defaultdict
from core.library.helper import Helper
from datetime import timedelta,date,datetime


app = Blueprint('admin_access', __name__)


@app.route('/view_admin/<int:society_id>/<society_key>',methods = ["GET", "POST"])
def ViewAdmin(society_id,society_key):
	# society_data = Auth.getSociety(society_id)
	get_data=AdminAccessModel().get_admin_data(society_id)
	return render_template('admin_templates/view_admin.html',society_id=society_id,society_key=society_key,get_data=get_data)

# @app.route('/edit_admin',methods = ["GET", "POST"])
@app.route('/edit_admin/<int:society_id>/<society_key>',methods = ["GET", "POST"])
def EditAdmin(society_id,society_key):
	admin_email = request.values.get('admin_email') or None
	data1 = AdminAccessModel().get_admin_data_by_admin_email(society_id,admin_email)
	password=None
	if data1:
		if data1[0]['password']:
			password = '*' * len(data1[0]['password'])
		data1=data1[0]
		# for d in data1: #commented by mukesh
		# 	data1=d
	admin_roles = AdminAccessModel().get_admin_roles()
	data = AdminAccessModel().get_app_by_admin_email(society_id,admin_email)
	return render_template('admin_templates/edit_admin.html',society_id=society_id,society_key=society_key,data=data,admin_roles=admin_roles,data1=data1,password=password,admin_email=admin_email)

@app.route('/post_edit_admin/<int:society_id>/<society_key>',methods = ["GET", "POST"])
def PostEditAdmin(society_id,society_key):
	if request.method == "POST":
		user_id					= request.values.get("user_id")
		admin_email      		= request.values.get("email_id")
		admin_role_id     		= request.values.get("role")
		app_datas 	            = request.form.getlist('chk_app_name')
		btn_name 	            = request.values.get('btn_value')
		user_name 	            = request.values.get('user_name')
		password 	            = request.values.get('pswrd')
		
		if btn_name =="Verify Email":
			return redirect(url_for('admin_access.EditAdmin',society_id=society_id,society_key=society_key,admin_email=admin_email))
		if btn_name =="Register":
			return redirect(url_for('admin_access.PostAddAdmin',society_id=society_id,society_key=society_key,admin_email=admin_email,name=user_name,password=password))
		if btn_name =="Update":
			user_name 				= request.values.get('full_name')
			mobile					= request.values.get('mobile')
			password 	            = request.values.get('d_password')
			data        = {
				'full_name'  : user_name,
				'password'   : password,
				'mobile'     : mobile
			}
			count_mobile        = AdminAccessModel().count_mobile_num(user_id,mobile,society_id)
			mobile_count        = count_mobile[0]
			if int(mobile_count) > 0 :
				flash('Mobile number '+data["mobile"]+' already exists with us.We cannot use same number.','errorMsg')
				return redirect(url_for('admin_access.EditAdmin',society_id=society_id,society_key=society_key,admin_email=admin_email))
			else:
				AdminAccessModel().update_user_data(user_id,data)
			return redirect(url_for('admin_access.EditAdmin',society_id=society_id,society_key=society_key,admin_email=admin_email))
		old_app_datas = AdminAccessModel().get_old_app_datas(admin_email,society_id)

		old_app_type_ids  = []
		old_admin_role_id = 0
		if old_app_datas:
			old_admin_role_id = old_app_datas[0]['admin_role_id']
			for i in old_app_datas:
				app_type_id = i.get('app_type_ids')
				if app_type_id != None:
					old_app_type_ids.append(app_type_id) 

		inserted_app_type_ids = app_datas
		insert = [i for i in inserted_app_type_ids if i not in old_app_type_ids] #to be insert
		delete = [i for i in old_app_type_ids if i not in inserted_app_type_ids] #to be delete

		if admin_role_id == '1':
			if insert:
				apps=[]
				for i in insert:
					item = i.split('-')
					if item[2] == '0':
						conf_id=None
					else:
						conf_id=int(item[2])
					app_items = {
						'app_type_id' : int(item[0]),
						'society_id' : int(item[1]),
						'conf_id' : conf_id,
						'admin_email':admin_email,
						'admin_role_id':int(admin_role_id)
						}
					
					apps.append(app_items)
				if old_admin_role_id == 2:
					data1={
						'admin_role_id':old_admin_role_id,
						'society_id' : society_id,
						'admin_email'  : admin_email
					}
					AdminAccessModel().delete_admin(data1)
				AdminAccessModel().insert_admin_access(apps) #insert
			if delete:
				delete_apps=[]
				for i in delete:
					items = i.split('-')
					if items[2] == '0':
						conf_id = None
					else:
						conf_id=int(items[2])
					delete_items= {
						'app_type_id' :items[0],
						'society_id'  :items[1],
						'admin_email' :admin_email,
						'conf_id'     : conf_id,
						'admin_role_id':admin_role_id
					}
					delete_apps.append(delete_items)
				AdminAccessModel().delete_admin_access(delete_apps)
		else:
			delete_apps=[]
			for i in old_app_type_ids:
				items = i.split('-')
				if items[2] == '0':
					conf_id=None
				else:
					conf_id  = int(items[2])
				delete_items = {
					'app_type_id' :items[0],
					'society_id'  :items[1],
					'admin_email' :admin_email,
					'conf_id'     : conf_id,
					'admin_role_id':old_admin_role_id
				}
				delete_apps.append(delete_items)
			if delete_apps:
				AdminAccessModel().delete_admin_access(delete_apps)
			data = {
					'admin_email'   : admin_email,
					'admin_role_id' : admin_role_id,
					'society_id'    : society_id
					}
			
			if (old_app_datas == None) or (old_app_datas[0]['admin_role_id'] != 2) :
				AdminAccessModel().insert_super_admin(data)
	# flash("Successfully Updated!","successMsg")	
	# return redirect(url_for('admin_access.ViewAdmin',society_id=society_id,society_key=society_key))
	return redirect(url_for('admin_access.UserAccess',society_id=society_id))

@app.route('/add_admin/<int:society_id>/<society_key>',methods = ["GET", "POST"])
def PostAddAdmin(society_id,society_key):
	admin_email = request.values.get('admin_email') or None
	name        = request.values.get('name') or None
	password    = request.values.get('password') or None
	data        = {
					'email'      : admin_email,
					'full_name'  : name,
					'password'   : password,
					'society_id' : society_id
				}
	
	AdminAccessModel().insert_admin_user(data)
	flash("Successfully Registered!","successMsg")
	return redirect(url_for('admin_access.EditAdmin',society_id=society_id,society_key=society_key,admin_email=admin_email))

@app.route('/delete_admin_access/<int:society_id>/<society_key>/<admin_email>',methods = ["GET", "POST"])
# @app.route('/delete_admin_access/<admin_email>',methods = ["GET", "POST"])
def DeleteAdmin(admin_email,society_id=None,society_key=None):
	
	data  = {
		'society_id'  : society_id,
		'admin_email' : admin_email
	}
		
	AdminAccessModel().delete_admin_access_by_society(data)
	# data = {
	# 	'admin_email' : admin_email
	# }
	# AdminAccessModel().delete_admin_access_by_email(data)
	# flash("Successfully Deleted!","successMsg")
	return redirect(url_for('admin_access.UserAccess',society_id=society_id))

# --- User Access ---
@app.route('/user_admin',methods = ["GET", "POST"])
@app.route('/user_admin/<int:society_id>',methods = ["GET", "POST"])
def UserAccess(society_id = None):
	get_societies = AdminAccessModel().get_all_society()
	# get_super_admin = AdminAccessModel().get_super_admin_data()
	return render_template('admin_templates/user_access.html',society_id=society_id,get_societies=get_societies)
	# return render_template('admin_templates/user_access.html',get_societies=get_societies,get_super_admin=get_super_admin)

@app.route('/get_user_access_by_society_id/<int:society_id>',methods = ["GET", "POST"])
def GetUserAccessBySocietyId(society_id):
	get_data = AdminAccessModel().get_admin_data(society_id)
	society_key = AdminAccessModel().get_society_key(society_id)
	society_key = society_key['society_key']
	html_data 		= render_template('admin_templates/view_user_access_table.html',get_data=get_data,society_id=society_id,society_key=society_key)
	data      		= {"html_data":html_data,"msg" : "success" ,"status" : 1 }
	json_data = json.dumps(data,default = str)
	return json_data

#---Super Admin ---
@app.route('/view_super_admin',methods = ["GET", "POST"])
def ViewSuperAdmin():
	get_super_admin = AdminAccessModel().get_super_admin_data()
	return render_template('admin_templates/super_admin.html',get_super_admin=get_super_admin)

@app.route('/edit_super_admin', methods = ["GET", "POST"])
def EditSuperAdmin():
	admin_access_id = request.values.get('admin_access_id') or 0
	societyId = request.values.get('society_id') or None
	societies = AdminAccessModel().get_all_society()
	if admin_access_id:
		get_super_admin = AdminAccessModel().get_super_admin_data_by_id(admin_access_id)
		return render_template('admin_templates/edit_super_admin.html',data = get_super_admin,societies=societies,societyId=societyId,admin_access_id=admin_access_id)
	else:
		return render_template('admin_templates/edit_super_admin.html',data=None,societies=societies,societyId=societyId,admin_access_id=admin_access_id)

@app.route('/post_verify_email', methods=["GET","POST"])
def PostVerifyEmail():
	if request.method == "POST":
		societies = AdminAccessModel().get_all_society()
		super_admin_email = request.values.get('super_admin_email') or None
		admin_access_id = request.values.get('admin_access_id') or 0
		societyId = request.values.get('societies') or None
		full_name = request.values.get('full_name') or None
		password = request.values.get('password') or None
		
		if societyId == "All Society" or int(admin_access_id) == 0:
			data= {
				'admin_email':super_admin_email,
				'society_id':None,
				'admin_role_id':2
			}
			check_super_admin_email = AdminAccessModel().check_super_admin_in_all_society(super_admin_email) #check in user
			check_already_exists_data = AdminAccessModel().check_already_exists_data(super_admin_email) #check in admin_access
			
			if check_super_admin_email != None:
				society_ids = [i['society_id'] for i in check_super_admin_email]
				for s in society_ids:
					society_id = s
					super_admin_email = super_admin_email
					AdminAccessModel().Insert_user_for_all_society(full_name,password,super_admin_email,society_id)
			if int(admin_access_id)==0:
				if check_already_exists_data== 0:
					AdminAccessModel().insert_new_super_admin(data)
					flash("Successfully Inserted!","successMsg")
					return redirect(url_for('admin_access.ViewSuperAdmin'))
				else:
					flash("Already Exists","errorMsg")
					return redirect(url_for('admin_access.ViewSuperAdmin'))
			else:
				if check_already_exists_data == 0:
					AdminAccessModel().Update_super_admin(admin_access_id,data)
					flash("Successfully Updated!","successMsg")
					return redirect(url_for('admin_access.ViewSuperAdmin'))
				else:
					flash("Already Exists","errorMsg")
					return redirect(url_for('admin_access.ViewSuperAdmin'))
			
		else:
			data= {
				'admin_email':super_admin_email,
				'society_id':societyId,
				'admin_role_id':2
			}
			check_super_admin_email = AdminAccessModel().check_super_admin_email(super_admin_email,societyId) #check in user table
			check_super_admin = AdminAccessModel().check_super_admin(super_admin_email,societyId) #check in admin_access table

			if check_super_admin_email==None:
				AdminAccessModel().Insert_user_data(super_admin_email,societyId) #add new user by society
				if check_super_admin == None:
					AdminAccessModel().Insert_super_admin_by_society(data) #add in admin access
					flash("Successfully Inserted!","successMsg")
					return redirect(url_for('admin_access.ViewSuperAdmin'))
				else:
					flash("Already Exists","errorMsg")
					return redirect(url_for('admin_access.ViewSuperAdmin'))
			else:
				if check_super_admin == None:
					AdminAccessModel().Update_super_admin(admin_access_id,data)
					flash("Successfully Updated!","successMsg")
					return redirect(url_for('admin_access.ViewSuperAdmin'))
				else:
					flash("Already Exists","errorMsg")
					return redirect(url_for('admin_access.ViewSuperAdmin'))
		return redirect(url_for('admin_access.ViewSuperAdmin'))
		# return render_template('admin_templates/edit_super_admin.html',super_admin_email = super_admin_email,societies=societies,societyId=societyId)

@app.route('/delete_super_admin/<admin_access_id>', methods = ["GET", "POST"])
def DeleteSuperAdmin(admin_access_id):
	if admin_access_id:
		AdminAccessModel().delete_super_admin_by_admin_id(admin_access_id)
		flash("Successfully Deleted!","successMsg")
		return redirect(url_for('admin_access.ViewSuperAdmin'))
	return redirect(url_for('admin_access.ViewSuperAdmin'))

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