Moved all auth schemas into their own files. Updated imports.

This commit is contained in:
tanshu committed 2020-12-21 11:18:58 +05:30
1 parent c6da3b9e38
commit b85e930ace
54 files changed
+289 -473

No files matched your search

+1 -1
View File
@@ -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={})
+4 -3
View File
@@ -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.
-163
View File
@@ -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()
],
)
+1 -1
View File
@@ -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()
+7 -7
View File
@@ -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(
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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()
+2 -2
View File
@@ -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
],
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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
@@ -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
+2 -1
View File
@@ -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
+1 -1
View File
@@ -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
+55 -55
View File
@@ -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)
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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()
+21 -57
View File
@@ -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,
}
+1 -1
View File
@@ -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 -2
View File
@@ -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,
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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
-118
View File
@@ -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]
+1 -1
View File
@@ -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):
+17
View File
@@ -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
+12
View File
@@ -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"}
+48
View File
@@ -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"}
+1 -1
View File
@@ -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):
+4 -19
View File
@@ -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:
+1 -1
View File
@@ -28,7 +28,7 @@ class Table(TableIn):
class TableBlank(TableIn):
name: str = Field(..., min_length=1)
name: str
section: Optional[SectionLink]
class Config:
+48
View File
@@ -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")}
+13
View File
@@ -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]
+4 -4
View File
@@ -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);
}
+1 -1
View File
@@ -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;