129 lines
5.5 KiB
Python
129 lines
5.5 KiB
Python
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:
|
|
"""Class for handling authentication functions"""
|
|
|
|
@classmethod # Requires no auth context
|
|
def handle_function(cls, **kwargs):
|
|
"""Handle function with kwargs"""
|
|
return
|
|
|
|
|
|
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:
|
|
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 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
|