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.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