Mohammedallyl's picture
Upload 27 files
c4dc0b3 verified
from fastapi import APIRouter,BackgroundTasks,HTTPException
import sqlite3
from passlib.context import CryptContext
import subprocess
from pydantic import BaseModel
ModelIndoorTrainer=APIRouter(prefix="/Trainer")
TrainingProcess2={}
def TrainModel(UserId):
global TrainingProcess2
if TrainingProcess2.get(UserId,False) and TrainingProcess2.get(UserId).poll():
raise HTTPException(status_code=400,detail="Model is already training.")
TrainingProcess2[UserId]=subprocess.Popen(["python","./IndoorLocalization/IndoorlocalizationTrainer.py",f"{UserId}"])
TrainingProcess2[UserId]=None
class DataType(BaseModel):
Email:str
Password:str
@ModelIndoorTrainer.post("/TrainIndoorModel")
async def SpeachToTextEndPoint(Tasks:BackgroundTasks,Data:DataType):
global TrainingProcess2
try:
connect=sqlite3.connect("DataBase/DataBase.bd")
cursor=connect.execute(f'''
SELECT UserId,Password FROM Users where Email='{Data.Email}'
''')
if len(cursor.fetchall())==1:
HasedPassword=cursor.fetchall()[0][1]
UserId=cursor.fetchall()[0][0]
State=Data.Password==HasedPassword
if State:
if TrainingProcess2.get(UserId,False) and TrainingProcess2.get(UserId).poll() is None:
raise HTTPException(status_code=400,detail="Model is already training.")
Tasks.add_task(TrainModel,args=[UserId])
return{"message":"Training Started"}
else:
return {"Status":False,"Message":"Email or Password is not correct"}
except Exception as e:
return {"Status":False,"Message":f"{e}"}
@ModelIndoorTrainer.post("/TrainIndoorModelStatus")
async def SpeachToTextEndPoint(Data:DataType):
global TrainingProcess2
try:
connect=sqlite3.connect("DataBase/DataBase.bd")
cursor=connect.execute(f'''
SELECT UserId, Password FROM Users where Email='{Data.Email}'
''')
if len(cursor.fetchall())==1:
HasedPassword=cursor.fetchall()[0][1]
UserId=cursor.fetchall()[0][0]
State=Data.Password==HasedPassword
if State:
if TrainingProcess2.get(UserId,False) and TrainingProcess2.get(UserId).poll() is None:
return{"message":"Model still Training "}
else:
return{"message":"Model Training ended"}
else:
return {"Status":False,"Message":"Email or Password is not correct"}
except Exception as e:
return {"Status":False,"Message":f"{e}"}