diff --git a/.idea/workspace.xml b/.idea/workspace.xml index d98707d..d3e7e5a 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -6,9 +6,32 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - { + "keyToString": { + "Python.how_to.executor": "Run", + "Python.identity.executor": "Run", + "RunOnceActivity.ShowReadmeOnStart": "true", + "RunOnceActivity.git.unshallow": "true", + "git-widget-placeholder": "development", + "last_opened_file_path": "/home/berkay/git-gitea-evyos/wag-managment-api-service-version-5/ApiLayers/ApiValidations/Queries" } -}]]> +} @@ -52,7 +75,11 @@ - + + + + + diff --git a/ApiLayers/ApiServices/Cluster/create_router.py b/ApiLayers/ApiServices/Cluster/create_router.py index cc4adbd..f8f0ffa 100644 --- a/ApiLayers/ApiServices/Cluster/create_router.py +++ b/ApiLayers/ApiServices/Cluster/create_router.py @@ -8,7 +8,8 @@ class CreateRouterFromCluster: def __init__(self, **kwargs): self.prefix = kwargs.get("prefix") self.tags = kwargs.get("tags") - self.router = APIRouter(prefix=self.prefix, tags=self.tags) + self.include_in_schema = bool(kwargs.get("include_in_schema", True)) + self.router = APIRouter(prefix=self.prefix, tags=self.tags, include_in_schema=self.include_in_schema) class CreateEndpointFromCluster: diff --git a/Events/AllEvents/events/building/build_area.py b/Events/AllEvents/__init__.py similarity index 100% rename from Events/AllEvents/events/building/build_area.py rename to Events/AllEvents/__init__.py diff --git a/Events/AllEvents/events/account/api_events.py b/Events/AllEvents/events/account/api_events.py index b270854..0070c93 100644 --- a/Events/AllEvents/events/account/api_events.py +++ b/Events/AllEvents/events/account/api_events.py @@ -13,23 +13,23 @@ from .function_handlers import ( AccountListEventMethods, ) - -class SelectResponseAccount(BaseModel): - """ - Response model for account list. - """ - neighborhood_code: str - neighborhood_name: str - type_code: str - type_description: str - +# +# class SelectResponseAccount(BaseModel): +# """ +# Response model for account list. +# """ +# neighborhood_code: str +# neighborhood_name: str +# type_code: str +# type_description: str +# # Auth Login account_insert_super_user_event = Event( name="account_insert_super_user_event", key="36a165fe-a2f3-437b-80ee-1ee44670fe70", - request_validator=ListOptions, - response_validator=SelectResponseAccount, + request_validator=AccountRequestValidators.ListAccountRecord, + # response_validator=SelectResponseAccount, # language_models=[AccountRecords.__language_model__], language_models=[], statics="ACCOUNTS_LIST", diff --git a/Events/AllEvents/events/account/models.py b/Events/AllEvents/events/account/models.py index a47a359..7dc6361 100644 --- a/Events/AllEvents/events/account/models.py +++ b/Events/AllEvents/events/account/models.py @@ -1,11 +1,9 @@ """ Account records request and response models. """ +from typing import Optional -from typing import TYPE_CHECKING, Dict, Any, Optional -from pydantic import BaseModel - -from ApiLayers.ApiValidations.Request import PydanticBaseModel +from ApiLayers.ApiValidations.Request import PydanticBaseModel, ListOptions class InsertAccountRecord(PydanticBaseModel): @@ -88,44 +86,8 @@ class UpdateAccountRecord(PydanticBaseModel): build_decision_book_uu_id: Optional[str] = None -class ListAccountRecord(PydanticBaseModel): - - iban: Optional[str] = None - bank_date: Optional[str] = None - currency_value: Optional[float] = None - bank_balance: Optional[float] = None - currency: Optional[str] = None - additional_balance: Optional[float] = None - channel_branch: Optional[str] = None - process_name: Optional[str] = None - process_type: Optional[str] = None - process_comment: Optional[str] = None - bank_reference_code: Optional[str] = None - - add_comment_note: Optional[str] = None - is_receipt_mail_send: Optional[bool] = None - found_from: Optional[str] = None - similarity: Optional[float] = None - remainder_balance: Optional[float] = None - bank_date_y: Optional[int] = None - bank_date_m: Optional[int] = None - bank_date_w: Optional[int] = None - bank_date_d: Optional[int] = None - approving_accounting_record: Optional[bool] = None - accounting_receipt_date: Optional[str] = None - accounting_receipt_number: Optional[int] = None - approved_record: Optional[bool] = None - import_file_name: Optional[str] = None - receive_debit_uu_id: Optional[str] = None - budget_type_uu_id: Optional[str] = None - company_uu_id: Optional[str] = None - send_company_uu_id: Optional[str] = None - customer_id: Optional[str] = None - customer_uu_id: Optional[str] = None - send_person_uu_id: Optional[str] = None - approving_accounting_person_uu_id: Optional[str] = None - build_parts_uu_id: Optional[str] = None - build_decision_book_uu_id: Optional[str] = None +class ListAccountRecord(ListOptions): + pass class AccountRequestValidators: diff --git a/Events/AllEvents/events/address/api_events.py b/Events/AllEvents/events/address/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/address/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/address/cluster.py b/Events/AllEvents/events/address/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/address/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/address/endpoints.py b/Events/AllEvents/events/address/endpoints.py deleted file mode 100644 index d9205d8..0000000 --- a/Events/AllEvents/events/address/endpoints.py +++ /dev/null @@ -1,112 +0,0 @@ -""" -Account records endpoint configurations. - -""" - -from ApiEvents.abstract_class import ( - RouteFactoryConfig, - EndpointFactoryConfig, - endpoint_wrapper, -) -from ApiEvents.base_request_model import EndpointBaseRequestModel - -from Services.PostgresDb.Models.alchemy_response import DictJsonResponse -from fastapi import Request, Path, Body - - -@endpoint_wrapper("/address/list") -async def address_list(request: "Request", data: EndpointBaseRequestModel): - """Handle address list endpoint.""" - auth_dict = address_list.auth - code_dict = getattr(address_list, "func_code", {"function_code": None}) - return {"auth_dict": auth_dict, "code_dict": code_dict, "data": data} - - -@endpoint_wrapper("/address/create") -async def address_create(request: "Request", data: EndpointBaseRequestModel): - """Handle address creation endpoint.""" - return { - "data": data, - "request": str(request.headers), - "request_url": str(request.url), - "request_base_url": str(request.base_url), - } - - -@endpoint_wrapper("/address/update/{address_uu_id}") -async def address_update( - request: Request, - address_uu_id: str = Path(..., description="UUID of the address to update"), - request_data: EndpointBaseRequestModel = Body(..., description="Request body"), -): - """ - Handle address update endpoint. - - Args: - request: FastAPI request object - address_uu_id: UUID of the address to update - request_data: Request body containing updated address data - - Returns: - DictJsonResponse: Response containing updated address info - """ - auth_dict = address_update.auth - return DictJsonResponse( - data={ - "address_uu_id": address_uu_id, - "data": request_data.root, - "request": str(request.headers), - "request_url": str(request.url), - "request_base_url": str(request.base_url), - } - ) - - -prefix = "/address" - - -# Address Router Configuration -ADDRESS_CONFIG = RouteFactoryConfig( - name="address", - prefix=prefix, - tags=["Address"], - include_in_schema=True, - endpoints=[ - EndpointFactoryConfig( - url_prefix=prefix, - url_endpoint="/list", - url_of_endpoint=f"{prefix}/list", - endpoint="/list", - method="POST", - summary="List Active/Delete/Confirm Address", - description="List Active/Delete/Confirm Address", - is_auth_required=True, - is_event_required=True, - endpoint_function=address_list, - ), - EndpointFactoryConfig( - url_prefix=prefix, - url_endpoint="/create", - url_of_endpoint=f"{prefix}/create", - endpoint="/create", - method="POST", - summary="Create Address with given auth levels", - description="Create Address with given auth levels", - is_auth_required=False, - is_event_required=False, - endpoint_function=address_create, - ), - EndpointFactoryConfig( - url_prefix=prefix, - url_endpoint="/{address_uu_id}", - url_of_endpoint="{prefix}/" + "{address_uu_id}", - endpoint="/{address_uu_id}", - method="PUT", - summary="Update Address with given auth levels", - description="Update Address with given auth levels", - is_auth_required=True, - is_event_required=True, - endpoint_function=address_update, - ), - ], -).as_dict() diff --git a/Events/AllEvents/events/address/function_handlers.py b/Events/AllEvents/events/address/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/address/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/address/info.py b/Events/AllEvents/events/address/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/address/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/building/build_area/api_events.py b/Events/AllEvents/events/building/build_area/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/building/build_area/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/building/build_parts.py b/Events/AllEvents/events/building/build_area/build_area.py similarity index 100% rename from Events/AllEvents/events/building/build_parts.py rename to Events/AllEvents/events/building/build_area/build_area.py diff --git a/Events/AllEvents/events/building/build_area/cluster.py b/Events/AllEvents/events/building/build_area/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/building/build_area/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/building/build_area/function_handlers.py b/Events/AllEvents/events/building/build_area/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/building/build_area/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/building/build_area/info.py b/Events/AllEvents/events/building/build_area/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/building/build_area/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/building/build_parts/api_events.py b/Events/AllEvents/events/building/build_parts/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/building/build_parts/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/building/build_sites.py b/Events/AllEvents/events/building/build_parts/build_parts.py similarity index 100% rename from Events/AllEvents/events/building/build_sites.py rename to Events/AllEvents/events/building/build_parts/build_parts.py diff --git a/Events/AllEvents/events/building/build_parts/cluster.py b/Events/AllEvents/events/building/build_parts/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/building/build_parts/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/building/build_parts/function_handlers.py b/Events/AllEvents/events/building/build_parts/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/building/build_parts/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/building/build_parts/info.py b/Events/AllEvents/events/building/build_parts/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/building/build_parts/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/building/build_sites/api_events.py b/Events/AllEvents/events/building/build_sites/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/building/build_sites/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/building/build_types.py b/Events/AllEvents/events/building/build_sites/build_sites.py similarity index 100% rename from Events/AllEvents/events/building/build_types.py rename to Events/AllEvents/events/building/build_sites/build_sites.py diff --git a/Events/AllEvents/events/building/build_sites/cluster.py b/Events/AllEvents/events/building/build_sites/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/building/build_sites/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/building/build_sites/function_handlers.py b/Events/AllEvents/events/building/build_sites/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/building/build_sites/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/building/build_sites/info.py b/Events/AllEvents/events/building/build_sites/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/building/build_sites/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/building/build_types/api_events.py b/Events/AllEvents/events/building/build_types/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/building/build_types/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/building/living_spaces.py b/Events/AllEvents/events/building/build_types/build_types.py similarity index 100% rename from Events/AllEvents/events/building/living_spaces.py rename to Events/AllEvents/events/building/build_types/build_types.py diff --git a/Events/AllEvents/events/building/build_types/cluster.py b/Events/AllEvents/events/building/build_types/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/building/build_types/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/building/build_types/function_handlers.py b/Events/AllEvents/events/building/build_types/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/building/build_types/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/building/build_types/info.py b/Events/AllEvents/events/building/build_types/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/building/build_types/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/building/living_spaces/api_events.py b/Events/AllEvents/events/building/living_spaces/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/building/living_spaces/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/building/living_spaces/cluster.py b/Events/AllEvents/events/building/living_spaces/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/building/living_spaces/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/building/living_spaces/function_handlers.py b/Events/AllEvents/events/building/living_spaces/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/building/living_spaces/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/building/living_spaces/info.py b/Events/AllEvents/events/building/living_spaces/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/building/living_spaces/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/company/company.py b/Events/AllEvents/events/building/living_spaces/living_spaces.py similarity index 100% rename from Events/AllEvents/events/company/company.py rename to Events/AllEvents/events/building/living_spaces/living_spaces.py diff --git a/Events/AllEvents/events/company/company/api_events.py b/Events/AllEvents/events/company/company/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/company/company/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/company/company/cluster.py b/Events/AllEvents/events/company/company/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/company/company/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/company/department.py b/Events/AllEvents/events/company/company/company.py similarity index 100% rename from Events/AllEvents/events/company/department.py rename to Events/AllEvents/events/company/company/company.py diff --git a/Events/AllEvents/events/company/company/function_handlers.py b/Events/AllEvents/events/company/company/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/company/company/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/company/company/info.py b/Events/AllEvents/events/company/company/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/company/company/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/company/department/api_events.py b/Events/AllEvents/events/company/department/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/company/department/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/company/department/cluster.py b/Events/AllEvents/events/company/department/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/company/department/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/company/duties.py b/Events/AllEvents/events/company/department/department.py similarity index 100% rename from Events/AllEvents/events/company/duties.py rename to Events/AllEvents/events/company/department/department.py diff --git a/Events/AllEvents/events/company/department/function_handlers.py b/Events/AllEvents/events/company/department/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/company/department/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/company/department/info.py b/Events/AllEvents/events/company/department/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/company/department/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/company/duties/api_events.py b/Events/AllEvents/events/company/duties/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/company/duties/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/company/duties/cluster.py b/Events/AllEvents/events/company/duties/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/company/duties/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/company/duty.py b/Events/AllEvents/events/company/duties/duties.py similarity index 100% rename from Events/AllEvents/events/company/duty.py rename to Events/AllEvents/events/company/duties/duties.py diff --git a/Events/AllEvents/events/company/duties/function_handlers.py b/Events/AllEvents/events/company/duties/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/company/duties/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/company/duties/info.py b/Events/AllEvents/events/company/duties/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/company/duties/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/company/duty/api_events.py b/Events/AllEvents/events/company/duty/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/company/duty/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/company/duty/cluster.py b/Events/AllEvents/events/company/duty/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/company/duty/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/company/employee.py b/Events/AllEvents/events/company/duty/duty.py similarity index 100% rename from Events/AllEvents/events/company/employee.py rename to Events/AllEvents/events/company/duty/duty.py diff --git a/Events/AllEvents/events/company/duty/function_handlers.py b/Events/AllEvents/events/company/duty/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/company/duty/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/company/duty/info.py b/Events/AllEvents/events/company/duty/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/company/duty/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/company/employee/api_events.py b/Events/AllEvents/events/company/employee/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/company/employee/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/company/employee/cluster.py b/Events/AllEvents/events/company/employee/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/company/employee/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/company/staff.py b/Events/AllEvents/events/company/employee/employee.py similarity index 100% rename from Events/AllEvents/events/company/staff.py rename to Events/AllEvents/events/company/employee/employee.py diff --git a/Events/AllEvents/events/company/employee/function_handlers.py b/Events/AllEvents/events/company/employee/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/company/employee/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/company/employee/info.py b/Events/AllEvents/events/company/employee/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/company/employee/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/company/staff/api_events.py b/Events/AllEvents/events/company/staff/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/company/staff/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/company/staff/cluster.py b/Events/AllEvents/events/company/staff/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/company/staff/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/company/staff/function_handlers.py b/Events/AllEvents/events/company/staff/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/company/staff/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/company/staff/info.py b/Events/AllEvents/events/company/staff/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/company/staff/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/decision_book/book_payment.py b/Events/AllEvents/events/company/staff/staff.py similarity index 100% rename from Events/AllEvents/events/decision_book/book_payment.py rename to Events/AllEvents/events/company/staff/staff.py diff --git a/Events/AllEvents/events/decision_book/book_payment/api_events.py b/Events/AllEvents/events/decision_book/book_payment/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/decision_book/book_payment/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/decision_book/decision_book.py b/Events/AllEvents/events/decision_book/book_payment/book_payment.py similarity index 100% rename from Events/AllEvents/events/decision_book/decision_book.py rename to Events/AllEvents/events/decision_book/book_payment/book_payment.py diff --git a/Events/AllEvents/events/decision_book/book_payment/cluster.py b/Events/AllEvents/events/decision_book/book_payment/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/decision_book/book_payment/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/decision_book/book_payment/function_handlers.py b/Events/AllEvents/events/decision_book/book_payment/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/decision_book/book_payment/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/decision_book/book_payment/info.py b/Events/AllEvents/events/decision_book/book_payment/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/decision_book/book_payment/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/decision_book/decision_book/api_events.py b/Events/AllEvents/events/decision_book/decision_book/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/decision_book/decision_book/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/decision_book/decision_book/cluster.py b/Events/AllEvents/events/decision_book/decision_book/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/decision_book/decision_book/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/decision_book/decision_book_items.py b/Events/AllEvents/events/decision_book/decision_book/decision_book.py similarity index 100% rename from Events/AllEvents/events/decision_book/decision_book_items.py rename to Events/AllEvents/events/decision_book/decision_book/decision_book.py diff --git a/Events/AllEvents/events/decision_book/decision_book/function_handlers.py b/Events/AllEvents/events/decision_book/decision_book/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/decision_book/decision_book/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/decision_book/decision_book/info.py b/Events/AllEvents/events/decision_book/decision_book/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/decision_book/decision_book/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/decision_book/decision_book_items/api_events.py b/Events/AllEvents/events/decision_book/decision_book_items/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/decision_book/decision_book_items/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/decision_book/decision_book_items/cluster.py b/Events/AllEvents/events/decision_book/decision_book_items/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/decision_book/decision_book_items/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/decision_book/decision_book_items_debits.py b/Events/AllEvents/events/decision_book/decision_book_items/decision_book_items.py similarity index 100% rename from Events/AllEvents/events/decision_book/decision_book_items_debits.py rename to Events/AllEvents/events/decision_book/decision_book_items/decision_book_items.py diff --git a/Events/AllEvents/events/decision_book/decision_book_items/function_handlers.py b/Events/AllEvents/events/decision_book/decision_book_items/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/decision_book/decision_book_items/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/decision_book/decision_book_items/info.py b/Events/AllEvents/events/decision_book/decision_book_items/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/decision_book/decision_book_items/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/decision_book/decision_book_items_debits/api_events.py b/Events/AllEvents/events/decision_book/decision_book_items_debits/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/decision_book/decision_book_items_debits/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/decision_book/decision_book_items_debits/cluster.py b/Events/AllEvents/events/decision_book/decision_book_items_debits/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/decision_book/decision_book_items_debits/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/decision_book/decision_book_person.py b/Events/AllEvents/events/decision_book/decision_book_items_debits/decision_book_items_debits.py similarity index 100% rename from Events/AllEvents/events/decision_book/decision_book_person.py rename to Events/AllEvents/events/decision_book/decision_book_items_debits/decision_book_items_debits.py diff --git a/Events/AllEvents/events/decision_book/decision_book_items_debits/function_handlers.py b/Events/AllEvents/events/decision_book/decision_book_items_debits/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/decision_book/decision_book_items_debits/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/decision_book/decision_book_items_debits/info.py b/Events/AllEvents/events/decision_book/decision_book_items_debits/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/decision_book/decision_book_items_debits/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/decision_book/decision_book_person/api_events.py b/Events/AllEvents/events/decision_book/decision_book_person/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/decision_book/decision_book_person/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/decision_book/decision_book_person/cluster.py b/Events/AllEvents/events/decision_book/decision_book_person/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/decision_book/decision_book_person/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/decision_book/invitations.py b/Events/AllEvents/events/decision_book/decision_book_person/decision_book_person.py similarity index 100% rename from Events/AllEvents/events/decision_book/invitations.py rename to Events/AllEvents/events/decision_book/decision_book_person/decision_book_person.py diff --git a/Events/AllEvents/events/decision_book/decision_book_person/function_handlers.py b/Events/AllEvents/events/decision_book/decision_book_person/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/decision_book/decision_book_person/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/decision_book/decision_book_person/info.py b/Events/AllEvents/events/decision_book/decision_book_person/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/decision_book/decision_book_person/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/decision_book/invitations/api_events.py b/Events/AllEvents/events/decision_book/invitations/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/decision_book/invitations/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/decision_book/invitations/cluster.py b/Events/AllEvents/events/decision_book/invitations/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/decision_book/invitations/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/decision_book/invitations/function_handlers.py b/Events/AllEvents/events/decision_book/invitations/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/decision_book/invitations/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/decision_book/invitations/info.py b/Events/AllEvents/events/decision_book/invitations/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/decision_book/invitations/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/identity/people.py b/Events/AllEvents/events/decision_book/invitations/invitations.py similarity index 100% rename from Events/AllEvents/events/identity/people.py rename to Events/AllEvents/events/decision_book/invitations/invitations.py diff --git a/Events/AllEvents/events/identity/people/api_events.py b/Events/AllEvents/events/identity/people/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/identity/people/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/identity/people/cluster.py b/Events/AllEvents/events/identity/people/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/identity/people/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/identity/people/function_handlers.py b/Events/AllEvents/events/identity/people/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/identity/people/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/identity/people/info.py b/Events/AllEvents/events/identity/people/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/identity/people/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/identity/users.py b/Events/AllEvents/events/identity/people/people.py similarity index 100% rename from Events/AllEvents/events/identity/users.py rename to Events/AllEvents/events/identity/people/people.py diff --git a/Events/AllEvents/events/identity/users/api_events.py b/Events/AllEvents/events/identity/users/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/identity/users/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/identity/users/cluster.py b/Events/AllEvents/events/identity/users/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/identity/users/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/identity/users/function_handlers.py b/Events/AllEvents/events/identity/users/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/identity/users/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/identity/users/info.py b/Events/AllEvents/events/identity/users/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/identity/users/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/project_decision_book/project_decision_book.py b/Events/AllEvents/events/identity/users/users.py similarity index 100% rename from Events/AllEvents/events/project_decision_book/project_decision_book.py rename to Events/AllEvents/events/identity/users/users.py diff --git a/Events/AllEvents/events/project_decision_book/project_decision_book/api_events.py b/Events/AllEvents/events/project_decision_book/project_decision_book/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/project_decision_book/project_decision_book/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/project_decision_book/project_decision_book/cluster.py b/Events/AllEvents/events/project_decision_book/project_decision_book/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/project_decision_book/project_decision_book/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/project_decision_book/project_decision_book/function_handlers.py b/Events/AllEvents/events/project_decision_book/project_decision_book/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/project_decision_book/project_decision_book/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/project_decision_book/project_decision_book/info.py b/Events/AllEvents/events/project_decision_book/project_decision_book/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/project_decision_book/project_decision_book/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/project_decision_book/project_decision_book_items.py b/Events/AllEvents/events/project_decision_book/project_decision_book/project_decision_book.py similarity index 100% rename from Events/AllEvents/events/project_decision_book/project_decision_book_items.py rename to Events/AllEvents/events/project_decision_book/project_decision_book/project_decision_book.py diff --git a/Events/AllEvents/events/project_decision_book/project_decision_book_items/api_events.py b/Events/AllEvents/events/project_decision_book/project_decision_book_items/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/project_decision_book/project_decision_book_items/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/project_decision_book/project_decision_book_items/cluster.py b/Events/AllEvents/events/project_decision_book/project_decision_book_items/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/project_decision_book/project_decision_book_items/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/project_decision_book/project_decision_book_items/function_handlers.py b/Events/AllEvents/events/project_decision_book/project_decision_book_items/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/project_decision_book/project_decision_book_items/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/project_decision_book/project_decision_book_items/info.py b/Events/AllEvents/events/project_decision_book/project_decision_book_items/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/project_decision_book/project_decision_book_items/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/project_decision_book/project_decision_book_person.py b/Events/AllEvents/events/project_decision_book/project_decision_book_items/project_decision_book_items.py similarity index 100% rename from Events/AllEvents/events/project_decision_book/project_decision_book_person.py rename to Events/AllEvents/events/project_decision_book/project_decision_book_items/project_decision_book_items.py diff --git a/Events/AllEvents/events/project_decision_book/project_decision_book_person/api_events.py b/Events/AllEvents/events/project_decision_book/project_decision_book_person/api_events.py new file mode 100644 index 0000000..be66917 --- /dev/null +++ b/Events/AllEvents/events/project_decision_book/project_decision_book_person/api_events.py @@ -0,0 +1,21 @@ +from Events.Engine.abstract_class import Event +from ApiLayers.LanguageModels.Request import ( + LoginRequestLanguageModel, +) + +from models import TemplateResponseModels, TemplateRequestModels +from function_handlers import TemplateFunctions + + +# Auth Login +template_event = Event( + name="authentication_login_super_user_event", + key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", + request_validator=TemplateRequestModels.TemplateRequestModelX, + language_models=[LoginRequestLanguageModel], + response_validation_static="LOGIN_SUCCESS", + description="Login super user", +) + + +template_event.endpoint_callable = TemplateFunctions.template_example_function() diff --git a/Events/AllEvents/events/project_decision_book/project_decision_book_person/cluster.py b/Events/AllEvents/events/project_decision_book/project_decision_book_person/cluster.py new file mode 100644 index 0000000..de5066b --- /dev/null +++ b/Events/AllEvents/events/project_decision_book/project_decision_book_person/cluster.py @@ -0,0 +1,14 @@ +from Events.Engine.abstract_class import CategoryCluster +from info import template_page_info + + +TemplateCluster = CategoryCluster( + name="TemplateCluster", + tags=["template"], + prefix="/template", + description="Template cluster", + pageinfo=template_page_info, + endpoints={}, + include_in_schema=True, + sub_category=[], +) diff --git a/Events/AllEvents/events/project_decision_book/project_decision_book_person/function_handlers.py b/Events/AllEvents/events/project_decision_book/project_decision_book_person/function_handlers.py new file mode 100644 index 0000000..4c8fbcd --- /dev/null +++ b/Events/AllEvents/events/project_decision_book/project_decision_book_person/function_handlers.py @@ -0,0 +1,70 @@ +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 + + +class Handlers: + """Class for handling authentication functions""" + + @classmethod # Requires no auth context + def handle_function(cls, **kwargs): + """Handle function with kwargs""" + 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" + }, + ... + ] + } + """ + + @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) + ) \ No newline at end of file diff --git a/Events/AllEvents/events/project_decision_book/project_decision_book_person/info.py b/Events/AllEvents/events/project_decision_book/project_decision_book_person/info.py new file mode 100644 index 0000000..89d163f --- /dev/null +++ b/Events/AllEvents/events/project_decision_book/project_decision_book_person/info.py @@ -0,0 +1,11 @@ +from Events.Engine.abstract_class import PageInfo + + +template_page_info = PageInfo( + name="template", + title={"en": "template"}, + description={"en": "template"}, + icon="", + parent="", + url="", +) diff --git a/Events/AllEvents/events/project_decision_book/project_decision_book_person/project_decision_book_person.py b/Events/AllEvents/events/project_decision_book/project_decision_book_person/project_decision_book_person.py new file mode 100644 index 0000000..e69de29 diff --git a/Events/__init__.py b/Events/__init__.py new file mode 100644 index 0000000..e69de29