Moved all auth schemas into their own files. Updated imports.
This commit is contained in:
1 parent
c6da3b9e38
commit
b85e930ace
54 files changed
+289
-473
No files matched your search
@@ -17,7 +17,7 @@ from ..models.auth import Device
|
||||
from ..models.auth import User as UserModel
|
||||
|
||||
# to get a string like this run:
|
||||
from ..schemas.auth import UserToken
|
||||
from ..schemas.user_token import UserToken
|
||||
|
||||
|
||||
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/token", scopes={})
|
||||
|
||||
@@ -16,6 +16,7 @@ from .routers import (
|
||||
modifier_category,
|
||||
printer,
|
||||
product,
|
||||
role,
|
||||
sale_category,
|
||||
section,
|
||||
section_printer,
|
||||
@@ -23,10 +24,10 @@ from .routers import (
|
||||
table,
|
||||
tax,
|
||||
update_product_prices,
|
||||
user,
|
||||
)
|
||||
from .routers.auth import role, user
|
||||
from .routers.reports import (
|
||||
beer_consumption_report,
|
||||
beer_sale_report,
|
||||
bill_settlement_report,
|
||||
cashier_report,
|
||||
discount_report,
|
||||
@@ -80,7 +81,7 @@ app.include_router(tax.router, prefix="/api/taxes", tags=["taxes"])
|
||||
app.include_router(table.router, prefix="/api/tables", tags=["sections"])
|
||||
|
||||
app.include_router(
|
||||
beer_consumption_report.router,
|
||||
beer_sale_report.router,
|
||||
prefix="/api/beer-sale-report",
|
||||
tags=["reports"],
|
||||
)
|
||||
|
||||
Whitespace-only changes.
@@ -1,163 +0,0 @@
|
||||
import uuid
|
||||
|
||||
from typing import List
|
||||
|
||||
import barker.schemas.auth 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.auth import Permission, Role
|
||||
from ...schemas.auth import UserToken
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
# Dependency
|
||||
def get_db():
|
||||
try:
|
||||
db = SessionLocal()
|
||||
yield db
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
|
||||
@router.post("", response_model=schemas.Role)
|
||||
def save(
|
||||
data: schemas.RoleIn,
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["users"]),
|
||||
) -> schemas.Role:
|
||||
try:
|
||||
item = Role(data.name)
|
||||
db.add(item)
|
||||
add_permissions(item, data.permissions, db)
|
||||
db.commit()
|
||||
return role_info(item, db)
|
||||
except SQLAlchemyError as e:
|
||||
db.rollback()
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
detail=str(e),
|
||||
)
|
||||
except Exception:
|
||||
db.rollback()
|
||||
raise
|
||||
|
||||
|
||||
@router.put("/{id_}", response_model=schemas.Role)
|
||||
def update(
|
||||
id_: uuid.UUID,
|
||||
data: schemas.RoleIn,
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["users"]),
|
||||
) -> schemas.Role:
|
||||
try:
|
||||
item: Role = db.query(Role).filter(Role.id == id_).first()
|
||||
item.name = data.name
|
||||
add_permissions(item, data.permissions, db)
|
||||
db.commit()
|
||||
return role_info(item, db)
|
||||
except SQLAlchemyError as e:
|
||||
db.rollback()
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
detail=str(e),
|
||||
)
|
||||
except Exception:
|
||||
db.rollback()
|
||||
raise
|
||||
|
||||
|
||||
def add_permissions(role: Role, permissions: List[schemas.PermissionItem], db):
|
||||
for permission in permissions:
|
||||
gp = [p for p in role.permissions if p.id == permission.id_]
|
||||
gp = None if len(gp) == 0 else gp[0]
|
||||
if permission.enabled and gp is None:
|
||||
role.permissions.append(db.query(Permission).filter(Permission.id == permission.id_).one())
|
||||
elif not permission.enabled and gp:
|
||||
role.permissions.remove(gp)
|
||||
|
||||
|
||||
@router.delete("/{id_}", response_model=schemas.RoleIn)
|
||||
def delete(
|
||||
id_: uuid.UUID,
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["users"]),
|
||||
) -> schemas.RoleIn:
|
||||
try:
|
||||
item: Role = db.query(Role).filter(Role.id == id_).first()
|
||||
if item is None:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
detail="Role not found",
|
||||
)
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_501_NOT_IMPLEMENTED,
|
||||
detail="Role deletion not implemented",
|
||||
)
|
||||
except Exception:
|
||||
db.rollback()
|
||||
raise
|
||||
|
||||
|
||||
@router.get("", response_model=schemas.RoleIn)
|
||||
def show_blank(
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["users"]),
|
||||
) -> schemas.RoleIn:
|
||||
return blank_role_info(db)
|
||||
|
||||
|
||||
@router.get("/list", response_model=List[schemas.RoleList])
|
||||
async def show_list(
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["users"]),
|
||||
) -> List[schemas.RoleList]:
|
||||
return [
|
||||
schemas.RoleList(
|
||||
id=item.id,
|
||||
name=item.name,
|
||||
permissions=[p.name for p in sorted(item.permissions, key=lambda p: p.name)],
|
||||
)
|
||||
for item in db.query(Role).order_by(Role.name).all()
|
||||
]
|
||||
|
||||
|
||||
@router.get("/{id_}", response_model=schemas.Role)
|
||||
def show_id(
|
||||
id_: uuid.UUID,
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["users"]),
|
||||
) -> schemas.Role:
|
||||
item: Role = db.query(Role).filter(Role.id == id_).first()
|
||||
return role_info(item, db)
|
||||
|
||||
|
||||
def role_info(item: Role, db: Session) -> schemas.Role:
|
||||
return schemas.Role(
|
||||
id=item.id,
|
||||
name=item.name,
|
||||
permissions=[
|
||||
schemas.PermissionItem(
|
||||
id=p.id,
|
||||
name=p.name,
|
||||
enabled=True if p in item.permissions else False,
|
||||
)
|
||||
for p in db.query(Permission).order_by(Permission.name).all()
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
def blank_role_info(db: Session) -> schemas.RoleIn:
|
||||
return schemas.RoleIn(
|
||||
name="",
|
||||
permissions=[
|
||||
schemas.PermissionItem(id=p.id, name=p.name, enabled=False)
|
||||
for p in db.query(Permission).order_by(Permission.name).all()
|
||||
],
|
||||
)
|
||||
@@ -11,7 +11,7 @@ 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 Customer
|
||||
from ..schemas.auth import UserToken
|
||||
from ..schemas.user_token import UserToken
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -10,8 +10,8 @@ from sqlalchemy.orm import Session
|
||||
|
||||
from ..core.security import get_current_active_user as get_user
|
||||
from ..db.session import SessionLocal
|
||||
from ..models.auth import Device
|
||||
from ..schemas.auth import UserToken
|
||||
from ..models.auth import Device, LoginHistory
|
||||
from ..schemas.user_token import UserToken
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
@@ -51,17 +51,17 @@ def update(
|
||||
raise
|
||||
|
||||
|
||||
@router.delete("/{id_}", response_model=schemas.Device)
|
||||
@router.delete("/{id_}")
|
||||
def delete(
|
||||
id_: uuid.UUID,
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["add-devices"]),
|
||||
) -> schemas.Device:
|
||||
):
|
||||
try:
|
||||
item: Device = db.query(Device).filter(Device.id == id_).first()
|
||||
db.delete(item)
|
||||
db.execute(LoginHistory.__table__.delete(LoginHistory.device_id == id_))
|
||||
db.execute(Device.__table__.delete(Device.id == id_))
|
||||
db.commit()
|
||||
return device_info(item)
|
||||
return {}
|
||||
except SQLAlchemyError as e:
|
||||
db.rollback()
|
||||
raise HTTPException(
|
||||
|
||||
@@ -14,7 +14,7 @@ from ..core.security import get_current_active_user as get_user
|
||||
from ..db.session import SessionLocal
|
||||
from ..models.master import Customer
|
||||
from ..models.voucher import GuestBook
|
||||
from ..schemas.auth import UserToken
|
||||
from ..schemas.user_token import UserToken
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -7,7 +7,7 @@ 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
|
||||
from ..schemas.user_token import UserToken
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -27,7 +27,7 @@ from ..core.security import (
|
||||
)
|
||||
from ..db.session import SessionLocal
|
||||
from ..models.auth import LoginHistory
|
||||
from ..schemas.auth import UserToken
|
||||
from ..schemas.user_token import UserToken
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -14,7 +14,7 @@ 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 MenuCategory, ProductVersion
|
||||
from ..schemas.auth import UserToken
|
||||
from ..schemas.user_token import UserToken
|
||||
from . import effective_date
|
||||
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ 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 Modifier
|
||||
from ..schemas.auth import UserToken
|
||||
from ..schemas.user_token import UserToken
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -15,7 +15,7 @@ from sqlalchemy.orm import Session, contains_eager, joinedload
|
||||
from ..core.security import get_current_active_user as get_user
|
||||
from ..db.session import SessionLocal
|
||||
from ..models.master import MenuCategory, ModifierCategory, Product, ProductVersion
|
||||
from ..schemas.auth import UserToken
|
||||
from ..schemas.user_token import UserToken
|
||||
from . import effective_date
|
||||
|
||||
|
||||
@@ -292,7 +292,7 @@ def modifier_category_blank(date_: date, db: Session) -> schemas.ModifierCategor
|
||||
id=mc.id,
|
||||
name=mc.name,
|
||||
enabled=False,
|
||||
products=[ProductLinkSchema(id=p.id, name=p.name, enabled=False) for p in mc.products],
|
||||
products=[ProductLinkSchema(id=p.product_id, name=p.name, enabled=False) for p in mc.products],
|
||||
)
|
||||
for mc in menu_categories
|
||||
],
|
||||
|
||||
@@ -11,7 +11,7 @@ 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 Printer
|
||||
from ..schemas.auth import UserToken
|
||||
from ..schemas.user_token import UserToken
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -13,7 +13,7 @@ from sqlalchemy.orm import Session, contains_eager, joinedload
|
||||
from ..core.security import get_current_active_user as get_user
|
||||
from ..db.session import SessionLocal
|
||||
from ..models.master import MenuCategory, Product, ProductVersion, SaleCategory
|
||||
from ..schemas.auth import UserToken
|
||||
from ..schemas.user_token import UserToken
|
||||
from . import effective_date
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ from ...core.security import get_current_active_user as get_user
|
||||
from ...db.session import SessionLocal
|
||||
from ...models.master import ProductVersion, VoucherType
|
||||
from ...models.voucher import Inventory, Kot, Voucher
|
||||
from ...schemas.auth import UserToken
|
||||
from ...schemas.user_token import UserToken
|
||||
from . import report_finish_date, report_start_date
|
||||
|
||||
|
||||
@@ -9,8 +9,8 @@ from ...core.security import get_current_active_user as get_user
|
||||
from ...db.session import SessionLocal
|
||||
from ...models.master import ReportingLevel, SettleOption
|
||||
from ...models.voucher import Reprint, Settlement, Voucher
|
||||
from ...schemas.auth import UserToken
|
||||
from ...schemas.bill_settlement_report import BillSettlement, BillSettlementItem
|
||||
from ...schemas.user_token import UserToken
|
||||
from . import report_finish_date, report_start_date
|
||||
|
||||
|
||||
|
||||
@@ -14,13 +14,14 @@ from ...models.auth import User
|
||||
from ...models.master import ReportingLevel
|
||||
from ...models.voucher import Settlement, Voucher
|
||||
from ...printing.cashier_report import print_cashier_report
|
||||
from ...schemas.auth import UserLink, UserToken
|
||||
from ...schemas.cashier_report import (
|
||||
CashierReport,
|
||||
InfoItem,
|
||||
NameAmount,
|
||||
SettleOptionSchema,
|
||||
)
|
||||
from ...schemas.user import UserLink
|
||||
from ...schemas.user_token import UserToken
|
||||
from . import report_finish_date, report_start_date
|
||||
|
||||
|
||||
|
||||
@@ -13,8 +13,8 @@ from ...db.session import SessionLocal
|
||||
from ...models.master import ProductVersion, SaleCategory, VoucherType
|
||||
from ...models.voucher import Inventory, Kot, Voucher
|
||||
from ...printing.discount_report import print_discount_report
|
||||
from ...schemas.auth import UserToken
|
||||
from ...schemas.discount_report import DiscountReport, DiscountReportItem
|
||||
from ...schemas.user_token import UserToken
|
||||
from . import report_finish_date, report_start_date
|
||||
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ from ...db.session import SessionLocal
|
||||
from ...models.master import MenuCategory, ProductVersion, SaleCategory, VoucherType
|
||||
from ...models.voucher import Inventory, Kot, Voucher
|
||||
from ...schemas import to_camel
|
||||
from ...schemas.auth import UserToken
|
||||
from ...schemas.user_token import UserToken
|
||||
from . import report_finish_date, report_start_date
|
||||
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ from sqlalchemy.orm import Session, contains_eager, joinedload
|
||||
from ...core.security import get_current_active_user as get_user
|
||||
from ...db.session import SessionLocal
|
||||
from ...models.master import MenuCategory, ProductVersion
|
||||
from ...schemas.auth import UserToken
|
||||
from ...schemas.user_token import UserToken
|
||||
from . import report_finish_date, report_start_date
|
||||
|
||||
|
||||
|
||||
@@ -13,8 +13,9 @@ from ...db.session import SessionLocal
|
||||
from ...models.master import ProductVersion, SaleCategory, SettleOption, VoucherType
|
||||
from ...models.voucher import Inventory, Kot, Settlement, Voucher
|
||||
from ...printing.sale_report import print_sale_report
|
||||
from ...schemas.auth import UserLink, UserToken
|
||||
from ...schemas.sale_report import SaleReport, SaleReportItem
|
||||
from ...schemas.user import UserLink
|
||||
from ...schemas.user_token import UserToken
|
||||
from . import report_finish_date, report_start_date
|
||||
from .tax_report import get_tax
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ from ...core.security import get_current_active_user as get_user
|
||||
from ...db.session import SessionLocal
|
||||
from ...models.master import Tax, VoucherType
|
||||
from ...models.voucher import Inventory, Kot, Voucher
|
||||
from ...schemas.auth import UserToken
|
||||
from ...schemas.tax_report import TaxReport, TaxReportItem
|
||||
from ...schemas.user_token import UserToken
|
||||
from . import report_finish_date, report_start_date
|
||||
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import uuid
|
||||
|
||||
from typing import List, Optional
|
||||
from typing import List
|
||||
|
||||
import barker.schemas.auth as schemas
|
||||
import barker.schemas.role as schemas
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException, Security, status
|
||||
from sqlalchemy.exc import SQLAlchemyError
|
||||
@@ -11,7 +11,7 @@ from sqlalchemy.orm import Session
|
||||
from ..core.security import get_current_active_user as get_user
|
||||
from ..db.session import SessionLocal
|
||||
from ..models.auth import Permission, Role
|
||||
from ..schemas.auth import UserToken
|
||||
from ..schemas.user_token import UserToken
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
@@ -31,7 +31,7 @@ def save(
|
||||
data: schemas.RoleIn,
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["users"]),
|
||||
):
|
||||
) -> schemas.Role:
|
||||
try:
|
||||
item = Role(data.name)
|
||||
db.add(item)
|
||||
@@ -55,7 +55,7 @@ def update(
|
||||
data: schemas.RoleIn,
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["users"]),
|
||||
):
|
||||
) -> schemas.Role:
|
||||
try:
|
||||
item: Role = db.query(Role).filter(Role.id == id_).first()
|
||||
item.name = data.name
|
||||
@@ -73,22 +73,12 @@ def update(
|
||||
raise
|
||||
|
||||
|
||||
def add_permissions(role: Role, permissions: List[schemas.PermissionItem], db):
|
||||
for permission in permissions:
|
||||
gp = [p for p in role.permissions if p.id == permission.id_]
|
||||
gp = None if len(gp) == 0 else gp[0]
|
||||
if permission.enabled and gp is None:
|
||||
role.permissions.append(db.query(Permission).filter(Permission.id == permission.id_).one())
|
||||
elif not permission.enabled and gp:
|
||||
role.permissions.remove(gp)
|
||||
|
||||
|
||||
@router.delete("/{id_}")
|
||||
@router.delete("/{id_}", response_model=schemas.RoleBlank)
|
||||
def delete(
|
||||
id_: uuid.UUID,
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["users"]),
|
||||
):
|
||||
) -> schemas.RoleBlank:
|
||||
try:
|
||||
item: Role = db.query(Role).filter(Role.id == id_).first()
|
||||
if item is None:
|
||||
@@ -96,35 +86,34 @@ def delete(
|
||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
detail="Role not found",
|
||||
)
|
||||
else:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_501_NOT_IMPLEMENTED,
|
||||
detail="Role deletion not implemented",
|
||||
)
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_501_NOT_IMPLEMENTED,
|
||||
detail="Role deletion not implemented",
|
||||
)
|
||||
except Exception:
|
||||
db.rollback()
|
||||
raise
|
||||
|
||||
|
||||
@router.get("")
|
||||
@router.get("", response_model=schemas.RoleBlank)
|
||||
def show_blank(
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["users"]),
|
||||
):
|
||||
return role_info(None, db)
|
||||
) -> schemas.RoleBlank:
|
||||
return role_blank(db)
|
||||
|
||||
|
||||
@router.get("/list", response_model=List[schemas.RoleList])
|
||||
async def show_list(
|
||||
def show_list(
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["users"]),
|
||||
):
|
||||
) -> List[schemas.RoleList]:
|
||||
return [
|
||||
{
|
||||
"id": item.id,
|
||||
"name": item.name,
|
||||
"permissions": [p.name for p in sorted(item.permissions, key=lambda p: p.name)],
|
||||
}
|
||||
schemas.RoleList(
|
||||
id=item.id,
|
||||
name=item.name,
|
||||
permissions=[p.name for p in sorted(item.permissions, key=lambda p: p.name)],
|
||||
)
|
||||
for item in db.query(Role).order_by(Role.name).all()
|
||||
]
|
||||
|
||||
@@ -134,30 +123,41 @@ def show_id(
|
||||
id_: uuid.UUID,
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["users"]),
|
||||
):
|
||||
) -> schemas.Role:
|
||||
item: Role = db.query(Role).filter(Role.id == id_).first()
|
||||
return role_info(item, db)
|
||||
|
||||
|
||||
def role_info(item: Optional[Role], db):
|
||||
if item is None:
|
||||
return {
|
||||
"name": "",
|
||||
"permissions": [
|
||||
{"id": p.id, "name": p.name, "enabled": False}
|
||||
for p in db.query(Permission).order_by(Permission.name).all()
|
||||
],
|
||||
}
|
||||
else:
|
||||
return {
|
||||
"id": item.id,
|
||||
"name": item.name,
|
||||
"permissions": [
|
||||
{
|
||||
"id": p.id,
|
||||
"name": p.name,
|
||||
"enabled": True if p in item.permissions else False,
|
||||
}
|
||||
for p in db.query(Permission).order_by(Permission.name).all()
|
||||
],
|
||||
}
|
||||
def role_info(item: Role, db: Session) -> schemas.Role:
|
||||
return schemas.Role(
|
||||
id=item.id,
|
||||
name=item.name,
|
||||
permissions=[
|
||||
schemas.PermissionItem(
|
||||
id=p.id,
|
||||
name=p.name,
|
||||
enabled=True if p in item.permissions else False,
|
||||
)
|
||||
for p in db.query(Permission).order_by(Permission.name).all()
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
def role_blank(db: Session) -> schemas.RoleBlank:
|
||||
return schemas.RoleBlank(
|
||||
name="",
|
||||
permissions=[
|
||||
schemas.PermissionItem(id=p.id, name=p.name, enabled=False)
|
||||
for p in db.query(Permission).order_by(Permission.name).all()
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
def add_permissions(role: Role, permissions: List[schemas.PermissionItem], db: Session):
|
||||
for permission in permissions:
|
||||
gp = [p for p in role.permissions if p.id == permission.id_]
|
||||
gp = None if len(gp) == 0 else gp[0]
|
||||
if permission.enabled and gp is None:
|
||||
role.permissions.append(db.query(Permission).filter(Permission.id == permission.id_).one())
|
||||
elif not permission.enabled and gp:
|
||||
role.permissions.remove(gp)
|
||||
@@ -11,7 +11,7 @@ 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 SaleCategory
|
||||
from ..schemas.auth import UserToken
|
||||
from ..schemas.user_token import UserToken
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -11,7 +11,7 @@ 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 Section
|
||||
from ..schemas.auth import UserToken
|
||||
from ..schemas.user_token import UserToken
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -13,7 +13,7 @@ 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 MenuCategory, SectionPrinter
|
||||
from ..schemas.auth import UserToken
|
||||
from ..schemas.user_token import UserToken
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
@@ -34,16 +34,16 @@ def save(
|
||||
data: List[schemas.SectionPrinter],
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["section-printers"]),
|
||||
):
|
||||
) -> List[schemas.SectionPrinter]:
|
||||
try:
|
||||
current = []
|
||||
default_copies = 0
|
||||
for mcs in data:
|
||||
if mcs.menu_category.id_ is None and mcs.printer.id_ is None:
|
||||
if mcs.menu_category is None and mcs.printer is None:
|
||||
raise ValueError("Please choose a default printer")
|
||||
if mcs.printer.id_ is None:
|
||||
if mcs.printer is None:
|
||||
continue
|
||||
if mcs.menu_category.id_ is None:
|
||||
if mcs.menu_category is None:
|
||||
default_copies = mcs.copies
|
||||
stmt = (
|
||||
pg_insert(SectionPrinter.__table__)
|
||||
@@ -60,7 +60,7 @@ def save(
|
||||
)
|
||||
)
|
||||
db.execute(stmt)
|
||||
current.append(mcs.menu_category.id_)
|
||||
current.append(None if mcs.menu_category is None else mcs.menu_category.id_)
|
||||
db.execute(
|
||||
SectionPrinter.__table__.delete(
|
||||
or_(
|
||||
@@ -91,12 +91,12 @@ def save(
|
||||
raise
|
||||
|
||||
|
||||
@router.delete("/{id_}")
|
||||
@router.delete("/{id_}", response_model=List[schemas.SectionPrinter])
|
||||
def delete(
|
||||
id_: uuid.UUID,
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["section-printers"]),
|
||||
):
|
||||
) -> List[schemas.SectionPrinter]:
|
||||
try:
|
||||
SectionPrinter.__table__.delete(SectionPrinter.section_id == id_)
|
||||
db.commit()
|
||||
@@ -112,44 +112,24 @@ def delete(
|
||||
raise
|
||||
|
||||
|
||||
@router.get("")
|
||||
@router.get("", response_model=List[schemas.SectionPrinter])
|
||||
def show_blank(
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["section-printers"]),
|
||||
):
|
||||
) -> List[schemas.SectionPrinter]:
|
||||
return report(None, db)
|
||||
|
||||
|
||||
@router.get("/{id_}")
|
||||
@router.get("/{id_}", response_model=List[schemas.SectionPrinter])
|
||||
def show_id(
|
||||
id_: uuid.UUID,
|
||||
db: Session = Depends(get_db),
|
||||
user: UserToken = Security(get_user, scopes=["section-printers"]),
|
||||
):
|
||||
) -> List[schemas.SectionPrinter]:
|
||||
return report(id_, db)
|
||||
|
||||
|
||||
# @view_config(
|
||||
# request_method="GET",
|
||||
# route_name="v1_section_printers_id",
|
||||
# renderer="json",
|
||||
# request_param="m",
|
||||
# permission="Authenticated",
|
||||
# )
|
||||
# def show_details(request):
|
||||
# section_id = uuid.UUID(request.matchdict["section_id"])
|
||||
# menu_category_id = request.GET.get("m", None)
|
||||
# if menu_category_id is not None:
|
||||
# menu_category_id = uuid.UUID(menu_category_id)
|
||||
# item = (
|
||||
# request.dbsession.query(SectionPrinter)
|
||||
# .filter(SectionPrinter.section_id == section_id, SectionPrinter.menu_category_id == menu_category_id,)
|
||||
# .first()
|
||||
# )
|
||||
# return section_printer_info(item, request.dbsession)
|
||||
|
||||
|
||||
def report(section_id: uuid.UUID, db: Session):
|
||||
def report(section_id: Optional[uuid.UUID], db: Session) -> List[schemas.SectionPrinter]:
|
||||
menu_categories = (
|
||||
db.query(MenuCategory.id, MenuCategory.name)
|
||||
.filter(MenuCategory.is_active == True) # noqa: E712
|
||||
@@ -157,36 +137,20 @@ def report(section_id: uuid.UUID, db: Session):
|
||||
.all()
|
||||
)
|
||||
list_ = []
|
||||
for item in [(None,)] + menu_categories:
|
||||
mc = (
|
||||
for mc_id, mc_name in [(None, None)] + menu_categories:
|
||||
section_printer = (
|
||||
db.query(SectionPrinter)
|
||||
.filter(
|
||||
SectionPrinter.section_id == section_id,
|
||||
SectionPrinter.menu_category_id == item[0],
|
||||
SectionPrinter.menu_category_id == mc_id,
|
||||
)
|
||||
.first()
|
||||
)
|
||||
list_.append(
|
||||
{
|
||||
"menuCategory": {} if item[0] is None else {"id": item[0], "name": item[1]},
|
||||
"printer": {} if mc is None else {"id": mc.printer_id},
|
||||
"copies": 0 if mc is None else mc.copies,
|
||||
}
|
||||
schemas.SectionPrinter(
|
||||
menuCategory=None if mc_id is None else schemas.MenuCategoryLink(id=mc_id, name=mc_name),
|
||||
printer=None if section_printer is None else schemas.PrinterLink(id=section_printer.printer_id),
|
||||
copies=0 if section_printer is None else section_printer.copies,
|
||||
)
|
||||
)
|
||||
return list_
|
||||
|
||||
|
||||
def section_printer_info(item: Optional[SectionPrinter]):
|
||||
if item is None:
|
||||
return {"menuCategory": {}, "section": {}, "printer": {}, "copies": 0}
|
||||
# if type(item) is uuid.UUID:
|
||||
# item = db.query(SectionPrinter).filter(SectionPrinter.id == item).first()
|
||||
return {
|
||||
"id": item.id,
|
||||
"menuCategory": None
|
||||
if item.menu_category is None
|
||||
else {"id": item.menu_category.id, "name": item.menu_category.name},
|
||||
"section": {"id": item.section.id, "name": item.section.name},
|
||||
"printer": {"id": item.printer.id, "name": item.printer.name},
|
||||
"copies": item.copies,
|
||||
}
|
||||
@@ -6,7 +6,7 @@ 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
|
||||
from ..schemas.user_token import UserToken
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -3,13 +3,14 @@ from typing import List
|
||||
import barker.schemas.settle_option as schemas
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException, Security, status
|
||||
from sqlalchemy import func
|
||||
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 ReportingLevel, SettleOption, VoucherType
|
||||
from ..schemas.auth import UserToken
|
||||
from ..schemas.user_token import UserToken
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
@@ -32,7 +33,7 @@ def save(
|
||||
) -> schemas.SettleOption:
|
||||
try:
|
||||
item = SettleOption(
|
||||
id_=data.id_,
|
||||
id_=db.query(func.max(SettleOption.id) + 1).scalar(),
|
||||
name=data.name,
|
||||
voucher_type=data.voucher_type,
|
||||
reporting_level=data.reporting_level,
|
||||
|
||||
@@ -12,7 +12,7 @@ from ..core.security import get_current_active_user as get_user
|
||||
from ..db.session import SessionLocal
|
||||
from ..models.master import FoodTable
|
||||
from ..models.voucher import Overview
|
||||
from ..schemas.auth import UserToken
|
||||
from ..schemas.user_token import UserToken
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -15,7 +15,7 @@ from ..core.security import get_current_active_user as get_user
|
||||
from ..db.session import SessionLocal
|
||||
from ..models.master import SaleCategory, Tax
|
||||
from ..models.voucher import Inventory
|
||||
from ..schemas.auth import UserToken
|
||||
from ..schemas.user_token import UserToken
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -11,8 +11,8 @@ from sqlalchemy.orm import Session, contains_eager, joinedload
|
||||
from ..core.security import get_current_active_user as get_user
|
||||
from ..db.session import SessionLocal
|
||||
from ..models.master import MenuCategory, ProductVersion
|
||||
from ..schemas.auth import UserToken
|
||||
from ..schemas.update_product_prices import UpdateProductPrices, UpdateProductPricesItem
|
||||
from ..schemas.user_token import UserToken
|
||||
from . import optional_query_date
|
||||
|
||||
|
||||
|
||||
@@ -2,17 +2,16 @@ import uuid
|
||||
|
||||
from typing import List
|
||||
|
||||
import barker.schemas.auth as schemas
|
||||
import barker.schemas.user as schemas
|
||||
|
||||
from barker.core.security import get_current_active_user as get_user
|
||||
from barker.db.session import SessionLocal
|
||||
from barker.models.auth import Role, User
|
||||
from barker.schemas.user_token import UserToken
|
||||
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.auth import Role, User
|
||||
from ...schemas.auth import UserToken
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -13,8 +13,8 @@ from ...db.session import SessionLocal
|
||||
from ...models.master import SettleOption, VoucherType
|
||||
from ...models.voucher import Overview, Reprint, Voucher
|
||||
from ...routers.voucher import do_update_settlements, get_guest_book
|
||||
from ...schemas.auth import UserToken
|
||||
from ...schemas.receive_payment import ReceivePaymentItem as SettleSchema
|
||||
from ...schemas.user_token import UserToken
|
||||
from .save import do_save
|
||||
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ from ...db.session import SessionLocal
|
||||
from ...models.master import VoucherType
|
||||
from ...models.voucher import Kot, Overview, Settlement, Voucher
|
||||
from ...routers.voucher import do_update_settlements, do_update_table, get_bill_id
|
||||
from ...schemas.auth import UserToken
|
||||
from ...schemas.user_token import UserToken
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -10,7 +10,7 @@ from ...core.security import get_current_active_user as get_user
|
||||
from ...db.session import SessionLocal
|
||||
from ...models.master import SettleOption, VoucherType
|
||||
from ...models.voucher import Overview, Voucher
|
||||
from ...schemas.auth import UserToken
|
||||
from ...schemas.user_token import UserToken
|
||||
from . import do_update_settlements
|
||||
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ from ...routers.voucher import (
|
||||
happy_hour_has_discount,
|
||||
happy_hour_items_balanced,
|
||||
)
|
||||
from ...schemas.auth import UserToken
|
||||
from ...schemas.user_token import UserToken
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -12,7 +12,7 @@ from ...core.security import get_current_active_user as get_user
|
||||
from ...db.session import SessionLocal
|
||||
from ...models.master import FoodTable, ProductVersion, VoucherType
|
||||
from ...models.voucher import GuestBook, Overview, Voucher
|
||||
from ...schemas.auth import UserToken
|
||||
from ...schemas.user_token import UserToken
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -22,8 +22,8 @@ from ...routers.voucher import (
|
||||
do_update_table,
|
||||
get_bill_id,
|
||||
)
|
||||
from ...schemas.auth import UserToken
|
||||
from ...schemas.receive_payment import ReceivePaymentItem as SettleSchema
|
||||
from ...schemas.user_token import UserToken
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -28,7 +28,7 @@ from ...routers.voucher import (
|
||||
happy_hour_items_balanced,
|
||||
happy_hour_items_more_than_regular,
|
||||
)
|
||||
from ...schemas.auth import UserToken
|
||||
from ...schemas.user_token import UserToken
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -8,8 +8,8 @@ from ...core.security import get_current_active_user as get_user
|
||||
from ...db.session import SessionLocal
|
||||
from ...models.master import SettleOption, VoucherType
|
||||
from ...models.voucher import Overview, Voucher
|
||||
from ...schemas.auth import UserToken
|
||||
from ...schemas.receive_payment import ReceivePaymentItem as SettleSchema
|
||||
from ...schemas.user_token import UserToken
|
||||
from . import do_update_settlements
|
||||
|
||||
|
||||
|
||||
@@ -1,118 +0,0 @@
|
||||
import uuid
|
||||
|
||||
from datetime import datetime
|
||||
from typing import List, Optional
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from . import to_camel
|
||||
|
||||
|
||||
class ClientIn(BaseModel):
|
||||
name: str
|
||||
enabled: bool
|
||||
otp: Optional[int]
|
||||
|
||||
|
||||
class Client(ClientIn):
|
||||
id_: uuid.UUID
|
||||
code: int
|
||||
creation_date: datetime
|
||||
|
||||
|
||||
class LoginHistory(BaseModel):
|
||||
id_: uuid.UUID
|
||||
user_id: uuid.UUID
|
||||
client_id: uuid.UUID
|
||||
date: datetime
|
||||
|
||||
class Config:
|
||||
fields = {"id_": "id"}
|
||||
anystr_strip_whitespace = True
|
||||
alias_generator = to_camel
|
||||
|
||||
|
||||
class PermissionItem(BaseModel):
|
||||
id_: uuid.UUID
|
||||
name: str
|
||||
enabled: bool
|
||||
|
||||
class Config:
|
||||
fields = {"id_": "id"}
|
||||
|
||||
|
||||
class RoleIn(BaseModel):
|
||||
name: str
|
||||
permissions: List[PermissionItem]
|
||||
|
||||
class Config:
|
||||
fields = {"id_": "id"}
|
||||
anystr_strip_whitespace = True
|
||||
|
||||
|
||||
class Role(RoleIn):
|
||||
id_: uuid.UUID
|
||||
|
||||
|
||||
class RoleList(BaseModel):
|
||||
id_: uuid.UUID
|
||||
name: str
|
||||
permissions: List[str]
|
||||
|
||||
class Config:
|
||||
fields = {"id_": "id"}
|
||||
anystr_strip_whitespace = True
|
||||
|
||||
|
||||
class RoleItem(BaseModel):
|
||||
id_: uuid.UUID
|
||||
name: str
|
||||
enabled: bool
|
||||
|
||||
class Config:
|
||||
fields = {"id_": "id"}
|
||||
|
||||
|
||||
class UserIn(BaseModel):
|
||||
name: str
|
||||
password: str
|
||||
locked_out: bool
|
||||
roles: List[RoleItem]
|
||||
|
||||
class Config:
|
||||
fields = {"id_": "id"}
|
||||
anystr_strip_whitespace = True
|
||||
alias_generator = to_camel
|
||||
|
||||
|
||||
class User(UserIn):
|
||||
id_: uuid.UUID
|
||||
|
||||
|
||||
class UserLink(BaseModel):
|
||||
id_: Optional[uuid.UUID]
|
||||
name: Optional[str]
|
||||
|
||||
class Config:
|
||||
alias_generator = to_camel
|
||||
|
||||
|
||||
class UserList(BaseModel):
|
||||
id_: uuid.UUID
|
||||
name: str
|
||||
roles: List[str]
|
||||
last_device: str
|
||||
last_date: Optional[datetime]
|
||||
|
||||
class Config:
|
||||
anystr_strip_whitespace = True
|
||||
alias_generator = to_camel
|
||||
json_encoders = {datetime: lambda v: v.strftime("%d-%b-%Y %H:%M")}
|
||||
|
||||
|
||||
class UserToken(BaseModel):
|
||||
id_: uuid.UUID
|
||||
name: str
|
||||
locked_out: bool = None
|
||||
password: str
|
||||
permissions: List[str]
|
||||
@@ -5,7 +5,7 @@ from typing import Dict, List
|
||||
from pydantic import BaseModel, validator
|
||||
|
||||
from . import to_camel
|
||||
from .auth import UserLink
|
||||
from .user import UserLink
|
||||
|
||||
|
||||
class NameAmount(BaseModel):
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
import uuid
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
from barker.schemas import to_camel
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class LoginHistory(BaseModel):
|
||||
id_: uuid.UUID
|
||||
user_id: uuid.UUID
|
||||
client_id: uuid.UUID
|
||||
date: datetime
|
||||
|
||||
class Config:
|
||||
anystr_strip_whitespace = True
|
||||
alias_generator = to_camel
|
||||
@@ -0,0 +1,12 @@
|
||||
import uuid
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class PermissionItem(BaseModel):
|
||||
id_: uuid.UUID
|
||||
name: str
|
||||
enabled: bool
|
||||
|
||||
class Config:
|
||||
fields = {"id_": "id"}
|
||||
@@ -0,0 +1,48 @@
|
||||
import uuid
|
||||
|
||||
from typing import List
|
||||
|
||||
from barker.schemas.permission import PermissionItem
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class RoleIn(BaseModel):
|
||||
name: str = Field(..., min_length=1)
|
||||
permissions: List[PermissionItem]
|
||||
|
||||
class Config:
|
||||
anystr_strip_whitespace = True
|
||||
|
||||
|
||||
class Role(RoleIn):
|
||||
id_: uuid.UUID
|
||||
|
||||
class Config:
|
||||
anystr_strip_whitespace = True
|
||||
fields = {"id_": "id"}
|
||||
|
||||
|
||||
class RoleBlank(RoleIn):
|
||||
name: str
|
||||
|
||||
class Config:
|
||||
anystr_strip_whitespace = True
|
||||
|
||||
|
||||
class RoleList(BaseModel):
|
||||
id_: uuid.UUID
|
||||
name: str
|
||||
permissions: List[str]
|
||||
|
||||
class Config:
|
||||
fields = {"id_": "id"}
|
||||
anystr_strip_whitespace = True
|
||||
|
||||
|
||||
class RoleItem(BaseModel):
|
||||
id_: uuid.UUID
|
||||
name: str
|
||||
enabled: bool
|
||||
|
||||
class Config:
|
||||
fields = {"id_": "id"}
|
||||
@@ -5,7 +5,7 @@ from typing import List
|
||||
from pydantic import BaseModel, validator
|
||||
|
||||
from . import to_camel
|
||||
from .auth import UserLink
|
||||
from .user import UserLink
|
||||
|
||||
|
||||
class SaleReportItem(BaseModel):
|
||||
|
||||
@@ -1,30 +1,15 @@
|
||||
import uuid
|
||||
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from . import to_camel
|
||||
|
||||
|
||||
class MenuCategoryLink(BaseModel):
|
||||
id_: Optional[uuid.UUID]
|
||||
name: Optional[str]
|
||||
|
||||
class Config:
|
||||
fields = {"id_": "id"}
|
||||
|
||||
|
||||
class PrinterLink(BaseModel):
|
||||
id_: Optional[uuid.UUID]
|
||||
|
||||
class Config:
|
||||
fields = {"id_": "id"}
|
||||
from .menu_category import MenuCategoryLink
|
||||
from .printer import PrinterLink
|
||||
|
||||
|
||||
class SectionPrinter(BaseModel):
|
||||
menu_category: MenuCategoryLink
|
||||
printer: PrinterLink
|
||||
menu_category: Optional[MenuCategoryLink]
|
||||
printer: Optional[PrinterLink]
|
||||
copies: int = Field(ge=0)
|
||||
|
||||
class Config:
|
||||
|
||||
@@ -28,7 +28,7 @@ class Table(TableIn):
|
||||
|
||||
|
||||
class TableBlank(TableIn):
|
||||
name: str = Field(..., min_length=1)
|
||||
name: str
|
||||
section: Optional[SectionLink]
|
||||
|
||||
class Config:
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
import uuid
|
||||
|
||||
from datetime import datetime
|
||||
from typing import List, Optional
|
||||
|
||||
from barker.schemas import to_camel
|
||||
from barker.schemas.role import RoleItem
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class UserIn(BaseModel):
|
||||
name: str
|
||||
password: str
|
||||
locked_out: bool
|
||||
roles: List[RoleItem]
|
||||
|
||||
class Config:
|
||||
anystr_strip_whitespace = True
|
||||
alias_generator = to_camel
|
||||
|
||||
|
||||
class User(UserIn):
|
||||
id_: uuid.UUID
|
||||
|
||||
class Config:
|
||||
anystr_strip_whitespace = True
|
||||
alias_generator = to_camel
|
||||
|
||||
|
||||
class UserLink(BaseModel):
|
||||
id_: Optional[uuid.UUID]
|
||||
name: Optional[str]
|
||||
|
||||
class Config:
|
||||
fields = {"id_": "id"}
|
||||
|
||||
|
||||
class UserList(BaseModel):
|
||||
id_: uuid.UUID
|
||||
name: str
|
||||
roles: List[str]
|
||||
last_device: str
|
||||
last_date: Optional[datetime]
|
||||
|
||||
class Config:
|
||||
anystr_strip_whitespace = True
|
||||
alias_generator = to_camel
|
||||
json_encoders = {datetime: lambda v: v.strftime("%d-%b-%Y %H:%M")}
|
||||
@@ -0,0 +1,13 @@
|
||||
import uuid
|
||||
|
||||
from typing import List
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class UserToken(BaseModel):
|
||||
id_: uuid.UUID
|
||||
name: str
|
||||
locked_out: bool = None
|
||||
password: str
|
||||
permissions: List[str]
|
||||
@@ -2,13 +2,13 @@ import { MenuCategory } from './menu-category';
|
||||
import { Printer } from './printer';
|
||||
|
||||
export class SectionPrinter {
|
||||
menuCategory: MenuCategory;
|
||||
printer: Printer;
|
||||
menuCategory: MenuCategory | null;
|
||||
printer: Printer | null;
|
||||
copies: number;
|
||||
|
||||
public constructor(init?: Partial<SectionPrinter>) {
|
||||
this.menuCategory = new MenuCategory();
|
||||
this.printer = new Printer();
|
||||
this.menuCategory = null;
|
||||
this.printer = null;
|
||||
this.copies = 0;
|
||||
Object.assign(this, init);
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ export class Table {
|
||||
id: string | undefined;
|
||||
name: string;
|
||||
seats: number;
|
||||
section: Section;
|
||||
section?: Section;
|
||||
isActive: boolean;
|
||||
voucherId?: string;
|
||||
status?: string;
|
||||
|
||||
@@ -122,7 +122,11 @@ export class SectionPrinterComponent implements OnInit {
|
||||
const array = this.form.get('menuCategories') as FormArray;
|
||||
this.list.forEach((item, index) => {
|
||||
const cont = array.controls[index].value;
|
||||
item.printer = { id: cont.printer };
|
||||
if (cont.printer === null || cont.printer === undefined) {
|
||||
item.printer = null;
|
||||
} else {
|
||||
item.printer = { id: cont.printer };
|
||||
}
|
||||
item.copies = +cont.copies;
|
||||
});
|
||||
return this.list;
|
||||
|
||||
@@ -50,7 +50,7 @@ export class TableDetailComponent implements OnInit, AfterViewInit {
|
||||
this.form.setValue({
|
||||
name: this.item.name,
|
||||
seats: this.item.seats,
|
||||
section: this.item.section.id ? this.item.section.id : '',
|
||||
section: this.item.section ? this.item.section.id : '',
|
||||
isActive: this.item.isActive,
|
||||
});
|
||||
}
|
||||
@@ -104,6 +104,9 @@ export class TableDetailComponent implements OnInit, AfterViewInit {
|
||||
const formModel = this.form.value;
|
||||
this.item.name = formModel.name;
|
||||
this.item.seats = +formModel.seats;
|
||||
if (this.item.section === null || this.item.section === undefined) {
|
||||
this.item.section = new Section();
|
||||
}
|
||||
this.item.section.id = formModel.section;
|
||||
this.item.isActive = formModel.isActive;
|
||||
return this.item;
|
||||
|
||||
Reference in new issue
Block a user