Fix: Sale category was not opening as product query error of sorting on menu category without a join
This commit is contained in:
@ -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)
|
||||||
|
|||||||
@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user