events started

This commit is contained in:
2025-01-31 13:58:40 +03:00
parent 1fe88e226a
commit 93db5eff72
16 changed files with 577 additions and 455 deletions

View File

@@ -3,6 +3,7 @@ from typing import Union, Optional
from ApiLayers.ApiValidations.Request import ListOptions
from Events.base_request_model import BaseRouteModel, ListOptionsBase
from Services.PostgresDb.Models.pagination import PaginationResult
from ApiLayers.Schemas import AddressNeighborhood
class Handlers:
@@ -14,38 +15,32 @@ class Handlers:
return
class TemplateFunctions(BaseRouteModel):
"""
Class for handling authentication functions
Is a template 4 TokenMiddleware.event_required decorator function groups.
results as :
STATIC_MESSAGE & LANG retrieved from redis
{
"completed": true,
"message": STATIC_MESSAGE,
"lang": LANG,
"pagination": {
"size": 10,
"page": 2,
"allCount": 28366,
"totalCount": 18,
"totalPages": 2,
"pageCount": 8,
"orderField": ["type_code", "neighborhood_name"],
"orderType": ["asc", "desc"]
},
"data": [
{
"created_at": "2025-01-12 09:39:48 +00:00",
"active": true,
"expiry_starts": "2025-01-12 09:39:48 +00:00",
"locality_uu_id": "771fd152-aca1-4d75-a42e-9b29ea7112b5",
"uu_id": "e1baa3bc-93ce-4099-a078-a11b71d3b1a8"
},
...
]
}
"""
class AddressListFunctions(BaseRouteModel):
@classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult:
list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None,
)
db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant:
AddressNeighborhood.pre_query = AddressNeighborhood.filter_all(
AddressNeighborhood.neighborhood_code.icontains("10"),
db=db_session,
).query
elif cls.context_retriever.token.is_employee:
AddressNeighborhood.pre_query = AddressNeighborhood.filter_all(
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session)
return list_options_base.paginated_result(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
class AddressCreateFunctions(BaseRouteModel):
@classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult:
@@ -67,4 +62,67 @@ class TemplateFunctions(BaseRouteModel):
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session)
return list_options_base.paginated_result(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
)
class AddressSearchFunctions(BaseRouteModel):
"""Event methods for searching addresses.
This class handles address search functionality including text search
and filtering.
"""
@classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None,
)
db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant:
AddressNeighborhood.pre_query = AddressNeighborhood.filter_all(
AddressNeighborhood.neighborhood_code.icontains("10"),
db=db_session,
).query
elif cls.context_retriever.token.is_employee:
AddressNeighborhood.pre_query = AddressNeighborhood.filter_all(
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session)
return list_options_base.paginated_result(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
class AddressUpdateFunctions(BaseRouteModel):
@classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None,
)
db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant:
AddressNeighborhood.pre_query = AddressNeighborhood.filter_all(
AddressNeighborhood.neighborhood_code.icontains("10"),
db=db_session,
).query
elif cls.context_retriever.token.is_employee:
AddressNeighborhood.pre_query = AddressNeighborhood.filter_all(
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session)
return list_options_base.paginated_result(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
class AddressSuperUserFunctions:
AddressListFunctions = AddressListFunctions
AddressCreateFunctions = AddressCreateFunctions
AddressSearchFunctions = AddressSearchFunctions
AddressUpdateFunctions = AddressUpdateFunctions