Fix door check db session

This commit is contained in:
2026-05-23 17:32:28 +02:00
parent 495535a6de
commit 3d1893d84e
4 changed files with 21 additions and 8 deletions

View File

@@ -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):

View File

@@ -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()

View File

@@ -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")

View File

@@ -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!")