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 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -33,16 +56,16 @@
- {
+ "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