Header / Footer editor added - Right now linked to products permission, which should be changed

This commit is contained in:
2020-11-11 09:55:51 +05:30
parent 77fb8e8428
commit 8db9a7d757
19 changed files with 435 additions and 1 deletions

View File

@ -9,6 +9,7 @@ from .db.session import engine
from .routers import (
device,
guest_book,
header_footer,
login,
menu_category,
modifier,
@ -63,6 +64,7 @@ app.include_router(menu_category.router, prefix="/api/menu-categories", tags=["p
app.include_router(product.router, prefix="/api/products", tags=["products"])
app.include_router(device.router, prefix="/api/devices", tags=["devices"])
app.include_router(sale_category.router, prefix="/api/sale-categories", tags=["products"])
app.include_router(header_footer.router, prefix="/api/header-footer", tags=["products"])
app.include_router(section.router, prefix="/api/sections", tags=["sections"])
app.include_router(section_printer.router, prefix="/api/section-printers", tags=["section-printers"])

View File

@ -0,0 +1,58 @@
import barker.schemas.header_footer as schemas
from fastapi import APIRouter, Depends, HTTPException, Security, status
from sqlalchemy.exc import SQLAlchemyError
from sqlalchemy.orm import Session
from ..core.security import get_current_active_user as get_user
from ..db.session import SessionLocal
from ..models.master import DbSetting
from ..schemas.auth import UserToken
router = APIRouter()
# Dependency
def get_db():
try:
db = SessionLocal()
yield db
finally:
db.close()
@router.get("")
def get(
db: Session = Depends(get_db),
user: UserToken = Security(get_user, scopes=["products"]),
):
return [
{"id": item.id, "name": item.name, "text": item.data["Text"]}
for item in db.query(DbSetting).filter(DbSetting.name.in_(["Header", "Footer"])).all()
]
@router.post("")
def save(
data: schemas.HeaderFooter,
db: Session = Depends(get_db),
user: UserToken = Security(get_user, scopes=["products"]),
):
try:
item: DbSetting = db.query(DbSetting).filter(DbSetting.id == data.id_, DbSetting.name == data.name).first()
item.data = {"Text": data.text}
db.commit()
return [
{"id": item.id, "name": item.name, "text": item.data["Text"]}
for item in db.query(DbSetting).filter(DbSetting.name.in_(["Header", "Footer"])).all()
]
except SQLAlchemyError as e:
db.rollback()
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail=str(e),
)
except Exception:
db.rollback()
raise

View File

@ -0,0 +1,14 @@
import uuid
from pydantic import BaseModel
from . import to_camel
class HeaderFooter(BaseModel):
id_: uuid.UUID
name: str
text: str
class Config:
alias_generator = to_camel