Fix: Sale category was not opening as product query error of sorting on menu category without a join

This commit is contained in:
2025-07-10 10:56:30 +00:00
parent 0dbec4784b
commit d80d097c0e
2 changed files with 19 additions and 4 deletions

View File

@ -334,12 +334,13 @@ def show_term(
date_: date = Depends(effective_date), date_: date = Depends(effective_date),
current_user: UserToken = Depends(get_user), current_user: UserToken = Depends(get_user),
): ):
print(f"Fetching products for MenuCategory: {mc}, SaleCategory: {sc}, Date: {date_}")
list_ = [] list_ = []
query = select(ProductVersion) query = select(ProductVersion)
if mc is not None: if mc is not None:
query = query.join(ProductVersion.menu_category) query = query.join(ProductVersion.menu_category)
if sc is not None: if sc is not None:
query = query.join(ProductVersion.sale_category).join(SaleCategory.tax) query = query.join(ProductVersion.menu_category).join(ProductVersion.sale_category).join(SaleCategory.tax)
query = query.where( query = query.where(
and_( and_(
or_( or_(
@ -364,6 +365,7 @@ def show_term(
if sc is not None: if sc is not None:
query = query.options( query = query.options(
contains_eager(ProductVersion.sale_category).contains_eager(SaleCategory.tax), contains_eager(ProductVersion.sale_category).contains_eager(SaleCategory.tax),
contains_eager(ProductVersion.menu_category),
) )
if mc is not None: if mc is not None:
@ -451,7 +453,7 @@ def show_id(
) )
.order_by(ProductVersion.sort_order, ProductVersion.name) .order_by(ProductVersion.sort_order, ProductVersion.name)
.options( .options(
contains_eager(ProductVersion.sale_category).contains_eager(ProductVersion.sale_category), contains_eager(ProductVersion.sale_category),
) )
).scalar_one() ).scalar_one()
return product_info(item) return product_info(item)

View File

@ -5,6 +5,7 @@ from decimal import Decimal
from fastapi import APIRouter, Depends, HTTPException, Security, status from fastapi import APIRouter, Depends, HTTPException, Security, status
from sqlalchemy import select from sqlalchemy import select
from sqlalchemy.exc import SQLAlchemyError from sqlalchemy.exc import SQLAlchemyError
from sqlalchemy.orm import contains_eager
from sqlalchemy.sql.functions import count from sqlalchemy.sql.functions import count
from ..core.security import get_current_active_user as get_user from ..core.security import get_current_active_user as get_user
@ -86,7 +87,14 @@ def show_list(user: UserToken = Depends(get_user)) -> list[schemas.SaleCategory]
with SessionFuture() as db: with SessionFuture() as db:
return [ return [
sale_category_info(item) sale_category_info(item)
for item in db.execute(select(SaleCategory).order_by(SaleCategory.name)).scalars().all() for item in db.execute(
select(SaleCategory)
.join(SaleCategory.tax)
.order_by(SaleCategory.name)
.options(contains_eager(SaleCategory.tax))
)
.scalars()
.all()
] ]
@ -96,7 +104,12 @@ def show_id(
user: UserToken = Security(get_user, scopes=["products"]), user: UserToken = Security(get_user, scopes=["products"]),
) -> schemas.SaleCategory: ) -> schemas.SaleCategory:
with SessionFuture() as db: with SessionFuture() as db:
item: SaleCategory = db.execute(select(SaleCategory).where(SaleCategory.id == id_)).scalar_one() item: SaleCategory = db.execute(
select(SaleCategory)
.join(SaleCategory.tax)
.where(SaleCategory.id == id_)
.options(contains_eager(SaleCategory.tax))
).scalar_one()
return sale_category_info(item) return sale_category_info(item)