Sindbad~EG File Manager

Current Path : /home/numerotech/live.numerotech.com/common_user_dashboard/core/model/
Upload File :
Current File : //home/numerotech/live.numerotech.com/common_user_dashboard/core/model/AdminModel.py

from sqlalchemy import create_engine, MetaData, Table, insert, select,update,delete,text
from sqlalchemy.sql import and_, or_
from sqlalchemy import asc, desc
from core import app
import json

# engine = create_engine(app.config['DATABASE_URI'],pool_size=5000,pool_pre_ping=True,pool_recycle=3600)
engine = create_engine(app.config['DATABASE_URI'],
					pool_size=10,        # Maximum number of connections in the pool
					max_overflow=5,      # Maximum number of additional connections to be created if pool is exhausted
					pool_timeout=30,     # Seconds to wait before giving up when trying to connect to the pool
					pool_recycle=3600,   # Time in seconds after which a connection will be recycled
				)



class AdminModel():
	def __init__(self):
		try:
			self.meta                   = MetaData()
			self.users                  = Table("users", self.meta,  autoload_with=engine)
			self.societies              = Table("societies", self.meta,  autoload_with=engine)
			self.m_attachment_type      = Table("m_attachment_type", self.meta,  autoload_with=engine)
			self.admin_access           = Table("admin_access", self.meta,  autoload_with=engine)
			self.m_app_type             = Table("m_app_type", self.meta,  autoload_with=engine)
		   
		except Exception as e:
			print(e)
		
	def get_admin_data(self,society_id):
		with engine.connect() as conn:
			stmt = text("select aa.admin_access_id,aa.admin_role_id,mar.role,aa.society_id,aa.conf_id,group_concat(aa.app_type_id) as app_type_id,u.user_id,aa.admin_email,concat(ifnull(u.prefix,''), u.full_name) as full_name, group_concat(mat.app_name) as app_name from admin_access aa "+
						"inner join users u on aa.admin_email=u.email and aa.society_id=u.society_id "+
						"left join m_app_type mat on mat.app_type_id = aa.app_type_id "+
						"left join m_admin_role mar on mar.admin_role_id = aa.admin_role_id "+
						f"where aa.society_id={society_id} "+
						"group by aa.admin_email order by admin_access_id")
			results = conn.execute(stmt).all()
			results = [dict(r._mapping) for r in results] if results else None
			conn.close()
			return results
		
	def get_admin_roles(self):
		with engine.connect() as conn:
			stmt = text("select * from m_admin_role;")
			result = conn.execute(stmt).all()
			results = [dict(r._mapping) for r in result] if result else None
			conn.close()
			return results
		
	def get_app_by_admin_email(self,society_id,admin_email):
		with engine.connect() as conn:
			stmt = text("select concat(ifnull (u.prefix,''),u.full_name)as full_name,u.mobile,u.password,ua.admin_access_id,ua.admin_role_id,a.app_type_id,s.society_id, ifnull(s.conf_id,0) as conf_id, app_name,c.conf_name,concat(a.app_type_id,'-',s.society_id,'-',ifnull(s.conf_id,0)) as access_key ,ua.admin_email from m_app_type a "+
							"inner join society_applications  s on s.app_type_id = a.app_type_id "+
							"left join conference c on c.conf_id = s.conf_id "+
							f"left join admin_access ua on ua.society_id=s.society_id and ifnull(ua.conf_id,0) = ifnull(s.conf_id,0) and ua.app_type_id=s.app_type_id and ua.admin_email='{admin_email}' "+
							f"left join users u on u.email = '{admin_email}'  and u.society_id=s.society_id "
							f"where s.society_id = {society_id} and a.app_type_id not in (9) "+
							"order by field(a.app_type_id,1,4,7,2,3,5) ,year(c.conf_start_time);")
			results = conn.execute(stmt).all()
			results = [dict(r._mapping) for r in results] if results else None
			conn.close()
			return results
		
	def get_admin_data_by_admin_email(self,society_id,admin_email):
		with engine.connect() as conn:
			stmt = text("select u.prefix,u.full_name,u.email as u_email,u.mobile,u.password,aa.admin_role_id,aa.admin_email,u.user_id from users u "+
						"left join admin_access aa on aa.admin_email=u.email and aa.society_id =u.society_id "
						f"where u.society_id={society_id} and u.email='{admin_email}' group by u_email;")
			result = conn.execute(stmt).all()
			results = [dict(r._mapping) for r in result] if result else None
			conn.close()
			return results
		
	# def get_admin_data_by_admin_email(self,society_id,admin_email):
	# 	with engine.connect() as conn:
	# 		stmt = text("select aa.admin_access_id,aa.admin_role_id,aa.admin_email,u.user_id from admin_access aa "+
	# 		   "inner join users u on u.email=aa.admin_email "+
	# 		    f"where aa.society_id = {society_id} and aa.admin_email='{admin_email}' group by admin_email")
	# 		result = conn.execute(stmt).all()
	# 		results = [dict(r._mapping) for r in result] if result else None
	# 		return results
		
	def get_old_app_datas(self,admin_email,society_id):
		with engine.connect() as conn:
			stmt = text("select admin_role_id,concat(app_type_id,'-',society_id,'-',ifnull(conf_id,0))as app_type_ids from admin_access "+ 
						f"where society_id={society_id} and admin_email='{admin_email}';")
			results = conn.execute(stmt).all()
			results = [dict(r._mapping) for r in results] if results else None
			conn.close()
			return results
		
	def insert_admin_access(self,apps):
		with engine.connect() as conn:
			stmt_1 = insert(self.admin_access).values(apps)
			result = conn.execute(stmt_1)
			conn.commit()
			conn.close()
			return result
		
	def delete_admin_access(self,delete_apps):
		with engine.connect() as conn:
			for i in delete_apps:
				where_con = ""
				if i["conf_id"]:
					where_con = " and conf_id =  "+str(i["conf_id"])
				stmt_1 = text(f"delete from admin_access where society_id = {i['society_id']} and app_type_id = {i['app_type_id']} and admin_email = '{i['admin_email']}' and admin_role_id = {i['admin_role_id']} {where_con}")
			# stmt_1 = insert(self.admin_access).values(delete_apps)
				result = conn.execute(stmt_1)
				conn.commit()
			conn.close()
			return result
		
	def insert_super_admin(self,data):
		with engine.connect() as conn:
			stmt_1 = insert(self.admin_access).values(data)
			result = conn.execute(stmt_1)
			conn.commit()
			conn.close()
			return result
		
	def delete_super_admin(self,data1):
		with engine.connect() as conn:
			stmt_1 = text(f"delete from admin_access where society_id = {data1['society_id']}  and admin_email = '{data1['admin_email']}' and admin_role_id = {data1['admin_role_id']}")
			# stmt_1 = insert(self.admin_access).values(delete_apps)
			result = conn.execute(stmt_1)
			conn.commit()
			conn.close()
			return result
		
	def insert_new_access_admin(self,data):
		with engine.connect() as conn:
			result = conn.execute(self.admin_access.insert(), data)
			conn.commit()
			conn.close()
			pk_id = result.inserted_primary_key[0] if result.inserted_primary_key[0] else None
			return pk_id
		
	def insert_admin_user(self,data):
		with engine.connect() as conn:
			result = conn.execute(self.users.insert(), data)
			conn.commit()
			conn.close()
			return result
		
	def delete_admin_access_by_email(self,data):
		with engine.connect() as conn:
			stmt_1 = text(f"delete from admin_access where society_id = {data['society_id']}  and admin_email = '{data['admin_email']}' ")
			# stmt_1 = insert(self.admin_access).values(delete_apps)
			result = conn.execute(stmt_1)
			conn.commit()
			conn.close()
			return result
		
	def update_user_data(self,user_id,data):
		with engine.connect() as conn:
			stmt = self.users.update().where(self.users.c.user_id.in_([user_id])).values(data)
			result = conn.execute(stmt)
			conn.commit()
			conn.close()
			return "success"
		
	def count_mobile_num(self,user_id,mobile,society_id):
		with engine.connect() as conn:
			stmt = text(f"select count(*) from users where user_id <> {user_id} and (mobile= '{mobile}' or whatsapp_number='{mobile}') and society_id={society_id};")
			result = conn.execute(stmt)
			conn.close()
			results = result.fetchone()
			if results :
				return results
			else:
				return None
		
	# def insert_admin_access(self,app_type_ids,society_ids,conf_ids,user_id):
	# 	with engine.connect() as conn:
	# 		row_val = []
	# 		for i in app_type_ids:
	# 			row_val.append({'category_id':i,'user_id':user_id})

	# 		stmt_1 = insert(self.users_participate_sections).values(row_val)
	# 		result = conn.execute(stmt_1)
	# 		conn.commit()
	# 		return result
		
	# def get_app_data(self,society_id):
	# 	with engine.connect() as conn:
	# 		stmt = text("select a.app_type_id,s.society_id, ifnull(s.conf_id,0) as conf_id, app_name,c.conf_name from m_app_type a "+
	# 					  "inner join society_applications  s on s.app_type_id = a.app_type_id "+
	# 					  "left join conference c on c.conf_id = s.conf_id "+
	# 					  f"where s.society_id = {society_id} and a.app_type_id not in (9) "+
 	# 					  "order by field(a.app_type_id,1,4,7,2,3,5) ,year(c.conf_start_time)")
	# 		result = conn.execute(stmt).all()
	# 		results = [dict(r._mapping) for r in result] if result else None
	# 		return results

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