Sindbad~EG File Manager
from sqlalchemy import create_engine, MetaData, Table, insert, select,update,delete,text
from sqlalchemy.sql import and_, or_
from core import app
import json
# engine = create_engine(app.config['DATABASE_URI_TNOA'])
engine = create_engine(app.config['DATABASE_URI'],pool_recycle=3600)
class APIModel():
def __init__(self):
try:
self.meta = MetaData()
self.users = Table("users", self.meta, autoload=True, autoload_with=engine)
self.abs_agenda = Table("abs_agenda", self.meta, autoload=True, autoload_with=engine)
except Exception as e:
print(e)
def get_user_by_email(self,email,society_id):
conn = engine.connect()
stmt = text("select * from users where email= :email and society_id=:society_id;")
result = conn.execute(stmt,email=email,society_id=society_id)
conn.close()
results = [dict(r) for r in result] if result else None
if results :
return results[0]
else:
return None
def checkIsEvaluator(self,user_id):
conn = engine.connect()
stmt = text("select case when count(*) >0 then 1 else 0 end as IsEvaluator from abs_marks where eva_id = :user_id")
result = conn.execute(stmt,user_id=user_id)
conn.close()
results = [dict(r) for r in result] if result else None
if results :
return results[0]
else:
return None
def checkEvaluator(self,user_id,conf_id,current_dt):
conn = engine.connect()
stmt = text(" SELECT DISTINCT a.abs_type,m.eva_id as user_id,DATE_FORMAT(dt.start_date, '%Y-%m-%d %H:%i:%s') as start_date,DATE_FORMAT(dt.end_date, '%Y-%m-%d %H:%i:%s') as end_date, "
+ " CASE WHEN dt.start_date <= :current_dt AND dt.end_date >= :current_dt THEN 1 ELSE 0 END AS can_evaluate "
+ " from abs_marks m inner join abstracts a ON a.abs_id = m.abs_id "
+ " inner join abs_types dt ON dt.abs_type = m.eva_abs_type"
+ " where m.eva_id = :user_id and a.conf_id=:conf_id and dt.conf_id = :conf_id")
result = conn.execute(stmt,user_id=user_id,current_dt=current_dt,conf_id=conf_id)
conn.close()
results = [dict(r) for r in result] if result else None
if results :
return results
else:
return None
def getUserEvaluationAssignment(self,user_id,conf_id):
conn = engine.connect()
stmt = text("select t.*,m.mark_id,m.abs_id,m.order_by as evaluation_order_by,m.m1,m.m2,m.m3,m.m4,m.m5,m.marks_total,m.comments,m.sync_at,m.mark_update_count from abs_marks m "
+ " inner join sqlite_eabstract t on t.abs_id =m.abs_id "
+ " where can_evaluate = 1 and m.eva_id = :user_id and t.conf_id = :conf_id")
result = conn.execute(stmt,user_id=user_id,conf_id=conf_id)
conn.close()
results = [dict(r) for r in result] if result else None
if results :
return results
else:
return None
def getSociety(self,society_id):
conn = engine.connect()
stmt = text("select * from societies where society_id = :society_id;")
results = conn.execute(stmt,society_id=society_id)
conn.close()
results= [dict(r) for r in results] if results else None
if results :
return results[0]
else:
return None
def getConf(self,conf_id):
conn = engine.connect()
stmt = text("select * from conference where conf_id = :conf_id;")
results = conn.execute(stmt,conf_id=conf_id)
conn.close()
results= [dict(r) for r in results] if results else None
if results :
return results[0]
else:
return None
def update_member(self,user_id,data):
stmt = self.users.update().values(data).where(self.users.c.user_id.in_([user_id]))
select_stmt = text("select * from users where user_id = "+str(user_id)+" ")
conn = engine.connect()
result = conn.execute(stmt)
select_result = conn.execute(select_stmt)
conn.close()
result_2 = [dict(r) for r in select_result] if select_result else None
conn.close()
if result_2 :
return result_2[0]
else:
return None
def getAbstracts(self,updated_at,conf_id):
conn = engine.connect()
if updated_at :
stmt = text("select * from sqlite_eabstract where updated_at >'"+updated_at+"' and conf_id ="+conf_id+";")
else :
stmt = text("select * from sqlite_eabstract where conf_id ="+conf_id+";")
results = conn.execute(stmt)
conn.close()
result = [dict(r) for r in results] if results else None
if result :
return result
else :
return []
def getAgendaByUserId(self,user_id,conf_id):
conn = engine.connect()
stmt = text("select * from abs_agenda where user_id ="+user_id+" and conf_id ="+conf_id+";")
results = conn.execute(stmt)
conn.close()
result = [dict(r) for r in results] if results else None
if result :
return result
else :
return []
def deleteAgendasByUserIdAndAbsIds(self,user_id,conf_id,abs_ids):
conn = engine.connect()
print(abs_ids)
abs_ids =','.join(str(v) for v in abs_ids)
print(abs_ids)
stmt = text("delete from abs_agenda where can_delete = 1 and user_id ="+user_id+" and conf_id ="+conf_id+" and abs_id in ("+abs_ids+");")
print("deleteAgendasByUserId")
print(stmt)
results = conn.execute(stmt)
conn.close()
return True
def getAgendasByAgendaIds(self,user_id,conf_id,agenda_ids):
conn = engine.connect()
stmt = text("select * from abs_agenda where user_id ="+user_id+" and conf_id ="+conf_id+" and agenda_id in ("+','.join(agenda_ids)+";")
results = conn.execute(stmt)
conn.close()
result = [dict(r) for r in results] if results else None
if result :
return result
else :
return None
def insertAgendas(self,data):
conn = engine.connect()
result = conn.execute(self.abs_agenda.insert(), data)
conn.close()
return "success"
def update_marks(self,update_data):
stmt = 'UPDATE abs_marks SET '
column_names = ["m1","m2","m3","m4","m5","sys_m1","sys_m2","sys_m3","sys_m4","sys_m5","comments","marks_total","sys_marks_total","mark_update_count","sync_at","device_type"]
pkids = []
for j in column_names:
stmt = stmt + j +" = case "
for i in update_data:
stmt = stmt + ' When mark_id = ' + str(i["mark_id"]) + " then '" + (str(i[j]) if i[j] else 'Null') +"'"
pkids.append(i["mark_id"])
stmt = stmt + ' END, '
stmt = stmt[:-2]
pkid = ','.join(str(e) for e in pkids)
stmt = stmt + ' Where mark_id in (' +str(pkid)+' );'
print("stmt : ",stmt)
conn = engine.connect()
result = conn.execute(stmt)
conn.close()
return "Success"
def getUserEvaluations(self,user_id,conf_id,last_sync_at):
conn = engine.connect()
if last_sync_at:
stmt = text("select m.* from abs_marks m inner join abstracts a on a.abs_id = m.abs_id where conf_id = :conf_id and marks_total > 0 and eva_id = :user_id and sync_at > :last_sync_at")
else:
stmt = text("select m.* from abs_marks m inner join abstracts a on a.abs_id = m.abs_id where conf_id = :conf_id and marks_total > 0 and eva_id = :user_id")
result = conn.execute(stmt,conf_id=conf_id,user_id=user_id,last_sync_at=last_sync_at)
conn.close()
results = [dict(r) for r in result] if result else None
if results :
return results
else:
return None
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists