Sindbad~EG File Manager
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