2020-10-07 15:18:43 +00:00
|
|
|
from fastapi import APIRouter, Depends, Security
|
2020-05-21 20:55:46 +00:00
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
|
|
|
|
from ..core.security import get_current_active_user as get_user
|
|
|
|
from ..db.session import SessionLocal
|
2020-10-07 15:18:43 +00:00
|
|
|
from ..models.master import DbSetting
|
|
|
|
from ..schemas.auth import UserToken
|
|
|
|
from ..schemas.settings import LockInformation
|
|
|
|
|
2020-05-21 20:55:46 +00:00
|
|
|
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
|
|
|
|
|
|
# Dependency
|
|
|
|
def get_db() -> Session:
|
|
|
|
try:
|
|
|
|
db = SessionLocal()
|
|
|
|
yield db
|
|
|
|
finally:
|
|
|
|
db.close()
|
|
|
|
|
|
|
|
|
|
|
|
@router.post("", response_model=LockInformation)
|
|
|
|
def post(
|
2020-10-07 15:18:43 +00:00
|
|
|
data_in: LockInformation,
|
|
|
|
db: Session = Depends(get_db),
|
|
|
|
user: UserToken = Security(get_user, scopes=["lock-date"]),
|
2020-05-21 20:55:46 +00:00
|
|
|
):
|
|
|
|
data = {
|
|
|
|
"Start": {"Locked": data_in.lock_older},
|
|
|
|
"Finish": {"Locked": data_in.lock_newer},
|
|
|
|
}
|
|
|
|
|
|
|
|
if data_in.lock_older:
|
|
|
|
data["Start"]["Rolling"] = data_in.older_rolling
|
|
|
|
if data_in.older_rolling:
|
|
|
|
data["Start"]["Days"] = data_in.older_days
|
|
|
|
else:
|
|
|
|
data["Start"]["Date"] = data_in.older_date
|
|
|
|
if data_in.lock_newer:
|
|
|
|
data["Finish"]["Rolling"] = data_in.newer_rolling
|
|
|
|
if data_in.newer_rolling:
|
|
|
|
data["Finish"]["Days"] = data_in.newer_days
|
|
|
|
else:
|
|
|
|
data["Finish"]["Date"] = data_in.newer_date
|
|
|
|
|
|
|
|
lock_date = db.query(DbSetting).filter(DbSetting.name == "Lock Info").first()
|
|
|
|
if lock_date is not None:
|
|
|
|
lock_date.data = data
|
|
|
|
else:
|
|
|
|
lock_date = DbSetting(name="Lock Info", data=data)
|
|
|
|
db.add(lock_date)
|
|
|
|
db.commit()
|
|
|
|
return get_info(data)
|
|
|
|
|
|
|
|
|
|
|
|
@router.delete("")
|
|
|
|
def delete(
|
2020-10-07 15:18:43 +00:00
|
|
|
db: Session = Depends(get_db),
|
|
|
|
user: UserToken = Security(get_user, scopes=["lock-date"]),
|
2020-05-21 20:55:46 +00:00
|
|
|
):
|
|
|
|
lock_date = db.query(DbSetting).filter(DbSetting.name == "Lock Info").first()
|
|
|
|
if lock_date is not None and lock_date.data is not None:
|
|
|
|
lock_date.data = None
|
|
|
|
db.commit()
|
|
|
|
return get_info({})
|
|
|
|
|
|
|
|
|
|
|
|
@router.get("")
|
|
|
|
def get(
|
2020-10-07 15:18:43 +00:00
|
|
|
db: Session = Depends(get_db),
|
|
|
|
user: UserToken = Security(get_user),
|
2020-05-21 20:55:46 +00:00
|
|
|
):
|
|
|
|
data = db.query(DbSetting).filter(DbSetting.name == "Lock Info").first()
|
|
|
|
if data is None:
|
|
|
|
return get_info({})
|
|
|
|
else:
|
|
|
|
return get_info(data.data)
|
|
|
|
|
|
|
|
|
|
|
|
def get_info(data):
|
|
|
|
info = {}
|
|
|
|
if "Start" not in data:
|
|
|
|
info["lockOlder"] = False
|
|
|
|
else:
|
|
|
|
info["lockOlder"] = data["Start"]["Locked"]
|
|
|
|
if data["Start"]["Locked"]:
|
|
|
|
info["olderRolling"] = data["Start"]["Rolling"]
|
|
|
|
if data["Start"]["Rolling"]:
|
|
|
|
info["olderDays"] = data["Start"]["Days"]
|
|
|
|
else:
|
|
|
|
info["olderDate"] = data["Start"]["Date"].strftime("%d-%b-%Y")
|
|
|
|
if "Finish" not in data:
|
|
|
|
info["lockNewer"] = False
|
|
|
|
else:
|
|
|
|
info["lockNewer"] = data["Finish"]["Locked"]
|
|
|
|
if data["Finish"]["Locked"]:
|
|
|
|
info["newerRolling"] = data["Finish"]["Rolling"]
|
|
|
|
if data["Finish"]["Rolling"]:
|
|
|
|
info["newerDays"] = data["Finish"]["Days"]
|
|
|
|
else:
|
|
|
|
info["newerDate"] = data["Finish"]["Date"].strftime("%d-%b-%Y")
|
|
|
|
return info
|