Fix door check db session
This commit is contained in:
@@ -4,12 +4,12 @@ from contextlib import asynccontextmanager
|
||||
from dotenv import load_dotenv
|
||||
|
||||
from .controllers import userManager, cardManager, groupManager, aaManager, doorManager
|
||||
from .services.database import create_db_and_tables, get_session
|
||||
from .services.database import create_db_and_tables, get_db_session
|
||||
from .services.auth import token_router, create_first_user
|
||||
from app.services.scanner import BackgroundScanner
|
||||
|
||||
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
|
||||
scanner = BackgroundScanner(db=get_session())
|
||||
scanner = BackgroundScanner(db=get_db_session())
|
||||
|
||||
@asynccontextmanager
|
||||
async def lifespan(app: FastAPI):
|
||||
|
||||
@@ -13,6 +13,9 @@ def get_session():
|
||||
with Session(engine) as db:
|
||||
yield db
|
||||
|
||||
def get_db_session():
|
||||
return Session(engine)
|
||||
|
||||
def add_and_refresh(db: Session, obj):
|
||||
db.add(obj)
|
||||
db.commit()
|
||||
|
||||
@@ -32,7 +32,7 @@ def closeDoor():
|
||||
def isDoorOpen():
|
||||
return doorIsOpen
|
||||
|
||||
def checkAccess(uuid: str, db: Session = Depends(get_session)):
|
||||
def checkAccess(uuid: str, db: Session):
|
||||
try:
|
||||
current_weekday = datetime.datetime.weekday(datetime.date.today())
|
||||
current_time = datetime.datetime.now()
|
||||
@@ -47,8 +47,10 @@ def checkAccess(uuid: str, db: Session = Depends(get_session)):
|
||||
endtime = starttime + datetime.timedelta(minutes=timetable.duration)
|
||||
print(f" comparing time: Start:{starttime} Current:{current_time} End:{endtime}")
|
||||
if starttime < current_time < endtime:
|
||||
print("Access Valid!")
|
||||
return True
|
||||
print("No more auths found")
|
||||
return False
|
||||
except exc.NoResultFound:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND)
|
||||
raise Exception("No Access with that key found, this might be a db error")
|
||||
|
||||
|
||||
@@ -18,6 +18,8 @@ from desfire.enums import DESFireCommunicationMode, DESFireFileType, DESFireKeyS
|
||||
from desfire.schemas import FilePermissions, FileSettings, KeySettings
|
||||
import desfire.exceptions as desExceptions
|
||||
|
||||
from app.services.door import openDoor, closeDoor, isDoorOpen, checkAccess
|
||||
|
||||
|
||||
#ENV vars
|
||||
load_dotenv()
|
||||
@@ -263,12 +265,11 @@ class BackgroundScanner:
|
||||
try:
|
||||
card_content = self._read_card()
|
||||
if card_content:
|
||||
logger.info(f"content: {card_content}")
|
||||
self._check_db(card_content)
|
||||
time.sleep(5)
|
||||
logger.debug("READY after success")
|
||||
#self._check_db(card_content)
|
||||
else:
|
||||
time.sleep(0.5)
|
||||
time.sleep(0.1)
|
||||
logger.debug("READY after timout")
|
||||
|
||||
except Exception as e:
|
||||
@@ -289,4 +290,11 @@ class BackgroundScanner:
|
||||
return rdata
|
||||
except Exception as e:
|
||||
logger.error(f"something went wrong: {e}")
|
||||
time.sleep(5)
|
||||
time.sleep(5)
|
||||
|
||||
def _check_db(self, key):
|
||||
check = checkAccess(key, self.db)
|
||||
if check == True:
|
||||
openDoor()
|
||||
else:
|
||||
print("Access denied!")
|
||||
|
||||
Reference in New Issue
Block a user