Sindbad~EG File Manager

Current Path : /home/numerotech/hs.numerotech.com/scan_v1/core/model/
Upload File :
Current File : //home/numerotech/hs.numerotech.com/scan_v1/core/model/VenueScanModel.py

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'],future=True)
engine_fk = create_engine(app.config['DATABASE_URI_FK'],future=True)
engine_conf = create_engine(app.config['DATABASE_URI_CONF'],future=True)

class VenueScanModel():
	def __init__(self):
		try:
			self.meta = MetaData()
			self.entrance_exit_scan = Table("entrance_exit_scan", self.meta,  autoload_with=engine_conf)     
			self.kc_sessions = Table("kc_sessions", self.meta,  autoload_with=engine_fk)
			self.kc_users = Table("kc_users", self.meta,  autoload_with=engine_fk)
		except Exception as e:
			print(e)


	def getVenueScanConf(self,conf_id,conf_key):
		with engine.connect() as conn:
			stmt =text("select * from conference where  conf_id ="+str(conf_id)+" and conf_key ='"+conf_key+"'  ;")
			results = conn.execute(stmt).one_or_none()
			if results :
				return dict(results._mapping)
			else:
				return None
						

	def insertEntryScannedData(self,conf_id,delegate_no,del_table_name,ent_scan_table,is_entry_scan):			
		connection = engine_conf.raw_connection()
		cursor     = connection.cursor()
		cursor.callproc("usp_save_entrance_scanned_data",[conf_id,(delegate_no or None),(del_table_name or None),(ent_scan_table or None),(is_entry_scan or None)])
		if cursor.description :
			columns = [column[0] for column in cursor.description]
			results = []
			for row in cursor.fetchall():
				results.append(dict(zip(columns, row)))
			cursor.close()
			connection.commit()
			return results
		else :
			cursor.close()
			connection.commit()
			return None


	def updateExitScannedData(self,data,conf_id,delegate_no,del_table_name,current_dt):
		with engine_fk.connect() as conn:
			stmt = text("select * from "+str(del_table_name)+" where conf_id = "+str(conf_id)+" and delegate_no = "+str(delegate_no)+" ;")
			print("updated stmt")
			print(stmt)
			result = conn.execute(stmt).one_or_none()
			results = dict(result._mapping) if result else None
		if results:

			with engine_conf.connect() as conn:
				try:
					stmt = text("select * from entrance_exit_scan where conf_id = "+str(conf_id)+" and delegate_no = "+str(delegate_no)+"  ;")
					result = conn.execute(stmt).all()
					results = [dict(r._mapping) for r in result] if result else None

					if results:
						print("inside if to update")
						stmt_1 	= self.entrance_exit_scan.update().where(self.entrance_exit_scan.c.delegate_no.in_([delegate_no]),self.entrance_exit_scan.c.conf_id.in_([conf_id]),self.entrance_exit_scan.c.is_exit == None).values(data)
						result = conn.execute(stmt_1)
						conn.commit()
					else:
						update_data = {'conf_id':conf_id,'delegate_no':delegate_no,'created_at':current_dt}
						del data['updated_at']
						data.update(update_data)
						print(data)
						result = conn.execute(self.entrance_exit_scan.insert(), data)
						conn.commit()	
				except Exception as e:
					return str(e)
		else:
			return None
				
	def venue_scan_report(self,conf_id,scan_data,start_time,end_time,is_unique_count):
		connection = engine_conf.raw_connection()
		cursor     = connection.cursor()
		cursor.callproc("venue_scan_report",[conf_id,(scan_data or None),(start_time or None),(end_time or None),(is_unique_count or None)])
		if cursor.description :
			columns = [column[0] for column in cursor.description]
			results = []
			for row in cursor.fetchall():
				results.append(dict(zip(columns, row)))
			cursor.close()
			connection.commit()
			return results
		else :
			cursor.close()
			connection.commit()
			return None

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