diff --git a/papermerge/core/db/doc.py b/papermerge/core/db/doc.py index 8ce65157d..75be48a2d 100644 --- a/papermerge/core/db/doc.py +++ b/papermerge/core/db/doc.py @@ -18,6 +18,7 @@ Page, ) from papermerge.core.exceptions import InvalidDateFormat +from papermerge.core.types import OrderEnum from .common import get_ancestors @@ -336,7 +337,7 @@ def get_docs_by_type( type_id: UUID, user_id: UUID, order_by: str | None = None, - order: str = "desc", + order: OrderEnum = OrderEnum.desc, ) -> list[schemas.DocumentCFV]: """ Returns list of documents + doc CFv for all documents with of given type @@ -349,7 +350,7 @@ def get_docs_by_type( params = {"document_type_id": str_type_id} rows = session.execute(text(stmt), params) else: - stmt = STMT_WITH_ORDER_BY.format(order=order) + stmt = STMT_WITH_ORDER_BY.format(order=order.value) params = {"document_type_id": str_type_id, "custom_field_name": order_by} rows = session.execute(text(stmt), params) diff --git a/papermerge/core/routers/documents.py b/papermerge/core/routers/documents.py index 5e35dcf59..0a3416877 100644 --- a/papermerge/core/routers/documents.py +++ b/papermerge/core/routers/documents.py @@ -12,6 +12,7 @@ from papermerge.core import db, schemas, utils from papermerge.core.auth import get_current_user, scopes from papermerge.core.models import Document +from papermerge.core.types import OrderEnum router = APIRouter( prefix="/documents", @@ -32,7 +33,7 @@ def get_documents_by_type( ], db_session: db.Session = Depends(db.get_session), order_by: str | None = None, - order: str = "desc", + order: OrderEnum = OrderEnum.desc, ) -> list[schemas.DocumentCFV]: """ Get all documents of specific type with all custom field values diff --git a/papermerge/core/types.py b/papermerge/core/types.py index 593750a54..1c33913e6 100644 --- a/papermerge/core/types.py +++ b/papermerge/core/types.py @@ -36,3 +36,8 @@ class TokenData(BaseModel): CFValueType: TypeAlias = str | int | date | bool | float | None CFNameType: TypeAlias = str + + +class OrderEnum(str, Enum): + asc = "asc" + desc = "desc" diff --git a/tests/core/models/test_document.py b/tests/core/models/test_document.py index 0ce1ad0a4..45f4b545e 100644 --- a/tests/core/models/test_document.py +++ b/tests/core/models/test_document.py @@ -17,6 +17,7 @@ from papermerge.core.db.models import CustomField, CustomFieldValue from papermerge.core.models import Document, User from papermerge.core.storage import abs_path +from papermerge.core.types import OrderEnum from papermerge.test import TestCase from papermerge.test.baker_recipes import document_recipe, folder_recipe, user_recipe from papermerge.test.utils import breadcrumb_fmt @@ -659,7 +660,7 @@ def test_get_docs_by_type_order_by_cfv(db_session: Session, make_document_receip type_id=type_id, user_id=user_id, order_by="EffectiveDate", # !!! EffectiveDate !!! - order="desc", # !!! DESC !!! + order=OrderEnum.desc, # !!! DESC !!! ) assert len(items) == 3 @@ -683,7 +684,7 @@ def test_get_docs_by_type_order_by_cfv(db_session: Session, make_document_receip type_id=type_id, user_id=user_id, order_by="EffectiveDate", # !!! EffectiveDate !!! - order="asc", # !!! ASC !!! + order=OrderEnum.asc, # !!! ASC !!! ) results_eff_date_asc = [] @@ -705,7 +706,7 @@ def test_get_docs_by_type_order_by_cfv(db_session: Session, make_document_receip type_id=type_id, user_id=user_id, order_by="Total", # !!! Total !!! - order="desc", # !!! desc !!! + order=OrderEnum.desc, # !!! desc !!! ) results_total_desc = [] @@ -727,7 +728,7 @@ def test_get_docs_by_type_order_by_cfv(db_session: Session, make_document_receip type_id=type_id, user_id=user_id, order_by="Total", # !!! Total !!! - order="asc", # !!! ASC !!! + order=OrderEnum.asc, # !!! ASC !!! ) results_total_asc = []