Spaces:
Sleeping
Sleeping
| 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 | |
| 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}"} | |
| 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}"} | |