57 lines
1.6 KiB
Python
57 lines
1.6 KiB
Python
from fastapi import APIRouter, Depends, Security
|
|
from sqlalchemy.orm import Session
|
|
|
|
from ..core.security import get_current_active_user as get_user
|
|
from ..db.session import SessionLocal
|
|
from ..models import User
|
|
from ..models.master import DbSetting
|
|
from ..schemas.auth import UserToken
|
|
from ..schemas.settings import Maintenance
|
|
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
# Dependency
|
|
def get_db() -> Session:
|
|
try:
|
|
db = SessionLocal()
|
|
yield db
|
|
finally:
|
|
db.close()
|
|
|
|
|
|
@router.get("", response_model=Maintenance)
|
|
def get_maintenance(
|
|
db: Session = Depends(get_db),
|
|
user: UserToken = Security(get_user),
|
|
):
|
|
data = db.query(DbSetting).filter(DbSetting.name == "Maintenance").first()
|
|
return info(data, db)
|
|
|
|
|
|
@router.post("", response_model=Maintenance)
|
|
def set_maintenance(
|
|
data: Maintenance,
|
|
db: Session = Depends(get_db),
|
|
user: UserToken = Security(get_user, scopes=["maintenance"]),
|
|
):
|
|
maintenance = db.query(DbSetting).filter(DbSetting.name == "Maintenance").first()
|
|
if data.enabled is False and maintenance is not None:
|
|
db.delete(maintenance)
|
|
maintenance = None
|
|
elif data.enabled is True and maintenance is None:
|
|
maintenance = DbSetting(name="Maintenance", data=user.id_)
|
|
db.add(maintenance)
|
|
elif data.enabled is True and maintenance.data != user.id_:
|
|
maintenance.data = user.id_
|
|
db.commit()
|
|
return info(maintenance, db)
|
|
|
|
|
|
def info(data, db: Session):
|
|
if data is None:
|
|
return {"enabled": False, "user": ""}
|
|
user = db.query(User).filter(User.id == data.data).one()
|
|
return {"enabled": True, "user": user.name}
|