Sindbad~EG File Manager

Current Path : /home/numerotech/live.numerotech.com/common_user_dashboard/core/controller/
Upload File :
Current File : //home/numerotech/live.numerotech.com/common_user_dashboard/core/controller/AdminController.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.AdminModel import AdminModel
from core.model.UserModel import UserModel
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', __name__)


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

@app.route('/edit_admin/<int:society_id>/<society_key>',methods = ["GET", "POST"])
@RouteGroup.society_required
def EditAdmin(society_id,society_key):
	admin_email = request.values.get('admin_email') or None
	data1 = AdminModel().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 = AdminModel().get_admin_roles()
	data = AdminModel().get_app_by_admin_email(society_id,admin_email)
	return render_template('user/admin/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"])
@RouteGroup.society_required
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.EditAdmin',society_id=society_id,society_key=society_key,admin_email=admin_email))
		if btn_name =="Register":
			return redirect(url_for('admin.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        = AdminModel().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.EditAdmin',society_id=society_id,society_key=society_key,admin_email=admin_email))
			else:
				AdminModel().update_user_data(user_id,data)
			return redirect(url_for('admin.EditAdmin',society_id=society_id,society_key=society_key,admin_email=admin_email))
		old_app_datas = AdminModel().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 != '2':
			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
					}
					AdminModel().delete_super_admin(data1)
				AdminModel().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)
				AdminModel().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:
				AdminModel().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) :
				AdminModel().insert_super_admin(data)
	flash("Successfully Updated!","successMsg")	
	return redirect(url_for('admin.ViewAdmin',society_id=society_id,society_key=society_key))

@app.route('/add_admin/<int:society_id>/<society_key>',methods = ["GET", "POST"])
@RouteGroup.society_required
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
				}
	
	AdminModel().insert_admin_user(data)
	flash("Successfully Registered!","successMsg")
	return redirect(url_for('admin.EditAdmin',society_id=society_id,society_key=society_key,admin_email=admin_email))

@app.route('/delete_admin_access/<int:society_id>/<society_key>',methods = ["GET", "POST"])
@RouteGroup.society_required
def DeleteAdmin(society_id,society_key):
	admin_email = request.values.get('admin_email') or None
	data  = {
		'society_id'  : society_id,
		'admin_email' : admin_email
	}
	
	AdminModel().delete_admin_access_by_email(data)
	flash("Successfully Deleted!","successMsg")
	return redirect(url_for('admin.ViewAdmin',society_id=society_id,society_key=society_key))

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