events cluster updated with PageInfo

This commit is contained in:
2025-02-03 20:53:31 +03:00
parent f0613e96e8
commit b67090087a
51 changed files with 1041 additions and 286 deletions

50
.idea/workspace.xml generated
View File

@@ -6,6 +6,56 @@
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="b5202e0c-6ddf-4a56-a13a-e18798c4c7cf" name="Changes" comment=""> <list default="true" id="b5202e0c-6ddf-4a56-a13a-e18798c4c7cf" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ApiLayers/AllConfigs/Redis/configs.py" beforeDir="false" afterPath="$PROJECT_DIR$/ApiLayers/AllConfigs/Redis/configs.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ApiLayers/ApiServices/Cluster/create_router.py" beforeDir="false" afterPath="$PROJECT_DIR$/ApiLayers/ApiServices/Cluster/create_router.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ApiLayers/ApiServices/Token/token_handler.py" beforeDir="false" afterPath="$PROJECT_DIR$/ApiLayers/ApiServices/Token/token_handler.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ApiLayers/ApiValidations/Response/default_response.py" beforeDir="false" afterPath="$PROJECT_DIR$/ApiLayers/ApiValidations/Response/default_response.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ApiLayers/LanguageModels/Response/accounts/accounts.py" beforeDir="false" afterPath="$PROJECT_DIR$/ApiLayers/LanguageModels/Response/accounts/accounts.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/authentication/auth/info.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/authentication/auth/info.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/__init__.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/__init__.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/account/account_records.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/account/account_records.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/account/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/account/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/account/info.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/account/info.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/account/models.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/account/models.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/address/address.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/address/address.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/address/api_events.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/address/api_events.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/address/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/address/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/address/info.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/address/info.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/building/build_area/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/building/build_area/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/building/build_parts/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/building/build_parts/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/building/build_sites/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/building/build_sites/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/building/build_types/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/building/build_types/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/building/building/api_events.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/building/building/api_events.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/building/building/building.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/building/building/building.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/building/building/cluster.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/building/building/cluster.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/building/building/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/building/building/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/building/building/info.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/building/building/info.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/building/living_spaces/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/building/living_spaces/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/company/company/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/company/company/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/company/department/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/company/department/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/company/duties/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/company/duties/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/company/duty/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/company/duty/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/company/employee/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/company/employee/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/company/staff/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/company/staff/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/decision_book/book_payment/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/decision_book/book_payment/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/decision_book/decision_book/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/decision_book/decision_book/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/decision_book/decision_book_items/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/decision_book/decision_book_items/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/decision_book/decision_book_items_debits/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/decision_book/decision_book_items_debits/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/decision_book/decision_book_person/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/decision_book/decision_book_person/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/decision_book/invitations/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/decision_book/invitations/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/identity/people/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/identity/people/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/identity/users/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/identity/users/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/project_decision_book/project_decision_book/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/project_decision_book/project_decision_book/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/project_decision_book/project_decision_book_items/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/project_decision_book/project_decision_book_items/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/events/project_decision_book/project_decision_book_person/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/events/project_decision_book/project_decision_book_person/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/template/template/function_handlers.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/template/template/function_handlers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/AllEvents/validations/validation/validation.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/AllEvents/validations/validation/validation.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/Engine/abstract_class.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/Engine/abstract_class.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/Engine/set_defaults/prepare_redis_items.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/Engine/set_defaults/prepare_redis_items.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/Engine/set_defaults/setClusters.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/Engine/set_defaults/setClusters.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Events/base_request_model.py" beforeDir="false" afterPath="$PROJECT_DIR$/Events/base_request_model.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Services/PostgresDb/Models/pagination.py" beforeDir="false" afterPath="$PROJECT_DIR$/Services/PostgresDb/Models/pagination.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Services/PostgresDb/how_to.py" beforeDir="false" afterPath="$PROJECT_DIR$/Services/PostgresDb/how_to.py" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />

View File

@@ -50,6 +50,51 @@ class RedisCategoryKeys:
MENU_MAPPER: str = "MENU_MAPPER" MENU_MAPPER: str = "MENU_MAPPER"
class RedisCategoryPageInfoKeys:
"""
### /create?site=BuildingCluster, #/update?site=BuildingCluster, #/dashboard?site=BuildingCluster
PAGE_URL: /dashboard?site=BuildingCluster
PAGE_NAME: BuildingCluster
PAGE_INFO: {LANGUAGE_MODELS: "", ICON: "", URL: ""}
PAGE_MENU_INDEX: 1 # {build_living_space: "uuid4", LAYER: 1, MENU_INDEX: 1}
PAGE_MENU_COMPONENT: {..., lang: {"tr"}: {...}, lang: {"en"}: {...}}
PAGE_LANGUAGE: {{"tr"}: {...},{"en"}: {...}}
"""
PAGE_URL: str = "PAGE_URL"
PAGE_NAME: str = "PAGE_NAME"
PAGE_INFO: str = "PAGE_INFO"
PAGE_COMPONENT: str = "PAGE_COMPONENT"
PAGE_MENU_INDEX: str = "PAGE_MENU_INDEX"
PAGE_MENU_COMPONENT: str = "PAGE_MENU_COMPONENT"
PAGE_LANGUAGE: str = "PAGE_LANGUAGE"
class RedisCategoryPageInfoKeysAction:
"""
PAGE_MAPPER: {PAGE_URL: /dashboard?site=BuildingCluster, PAGE_NAME: BuildingCluster, PAGE_INFO: {LANGUAGE_MODELS: "", ICON: "", URL: ""}}
value : {RedisCategoryPageInfoKeys.PAGE_INFO}
MENU_MAPPER: {PAGE_MENU_INDEX: 1, PAGE_MENU_COMPONENT: {..., lang: {"tr"}: {...}, lang: {"en"}: {...}}}
value : {RedisCategoryPageInfoKeys.PAGE_INFO}
"""
page_index: str = f"{RedisCategoryPageInfoKeys.PAGE_MENU_INDEX}:{RedisCategoryPageInfoKeys.PAGE_URL}"
page_mapper_key: str = (
f"{RedisCategoryPageInfoKeys.PAGE_MENU_INDEX}:{RedisCategoryPageInfoKeys.PAGE_URL}"
)
page_mapper_key: str = (
f"{page_mapper_key}:{RedisCategoryPageInfoKeys.PAGE_LANGUAGE}"
)
menu_mapper_key: str = (
f"{RedisCategoryPageInfoKeys.PAGE_URL}:{RedisCategoryPageInfoKeys.PAGE_MENU_INDEX}"
)
menu_mapper_key: str = (
f"{menu_mapper_key}:{RedisCategoryPageInfoKeys.PAGE_MENU_COMPONENT}"
)
class RedisValidationKeysAction: class RedisValidationKeysAction:
# LANGUAGE_MODELS:DYNAMIC:VALIDATIONS: # LANGUAGE_MODELS:DYNAMIC:VALIDATIONS:
dynamic_validation_key: str = ( dynamic_validation_key: str = (

View File

@@ -9,7 +9,9 @@ class CreateRouterFromCluster:
self.prefix = kwargs.get("prefix") self.prefix = kwargs.get("prefix")
self.tags = kwargs.get("tags") self.tags = kwargs.get("tags")
self.include_in_schema = bool(kwargs.get("include_in_schema", True)) 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) self.router = APIRouter(
prefix=self.prefix, tags=self.tags, include_in_schema=self.include_in_schema
)
class CreateEndpointFromCluster: class CreateEndpointFromCluster:

View File

@@ -62,6 +62,7 @@ class TokenService:
) -> Dict[str, Any]: ) -> Dict[str, Any]:
"""Handle employee login process and return login information.""" """Handle employee login process and return login information."""
from ApiLayers.Schemas.identity.identity import UsersTokens, People from ApiLayers.Schemas.identity.identity import UsersTokens, People
db_session = Employees.new_session() db_session = Employees.new_session()
list_employee = Employees.filter_all( list_employee = Employees.filter_all(
Employees.people_id == user.person_id, db=db_session Employees.people_id == user.person_id, db=db_session

View File

@@ -26,7 +26,13 @@ class EndpointSuccessListResponse(BaseEndpointResponse): # 200 OK
def as_dict(self, data: Optional[dict] = None, pagination: Optional[dict] = None): def as_dict(self, data: Optional[dict] = None, pagination: Optional[dict] = None):
return JSONResponse( return JSONResponse(
status_code=status.HTTP_200_OK, status_code=status.HTTP_200_OK,
content=dict(completed=True, **self.response, lang=self.lang, pagination=pagination, data=data), content=dict(
completed=True,
**self.response,
lang=self.lang,
pagination=pagination,
data=data,
),
) )

View File

@@ -1,5 +1,3 @@
accountResponses = { accountResponses = {
"ACCOUNTS_LIST": { "ACCOUNTS_LIST": {
"tr": { "tr": {

View File

@@ -3,9 +3,9 @@ from Events.Engine.abstract_class import PageInfo
authentication_page_info = PageInfo( authentication_page_info = PageInfo(
name="Authentication", name="Authentication",
title={"en": "Authentication", "tr": "Kimlik Doğrulama"},
description={"en": "User&Event Authentication for users", "tr": "Kullanıcı ve Etkinlik Kimlik Doğrulama"},
icon="",
parent="",
url="", url="",
language_models={},
endpoints={},
icon="Authentication",
sub_components=[],
) )

View File

@@ -1,11 +1,9 @@
""" """
Events package initialization. Events package initialization.
""" """
from .account.cluster import AccountCluster from .account.cluster import AccountCluster
from .address.cluster import AddressCluster from .address.cluster import AddressCluster
__all__ = [ __all__ = ["AccountCluster", "AddressCluster"]
"AccountCluster",
"AddressCluster"
]

View File

@@ -1,13 +1,16 @@
""" """
Account related API endpoints. Account related API endpoints.
""" """
from typing import Any, Dict from typing import Any, Dict
from fastapi import Request from fastapi import Request
from Events.Engine.abstract_class import MethodToEvent from Events.Engine.abstract_class import MethodToEvent
from Events.base_request_model import EndpointBaseRequestModel, ContextRetrievers from Events.base_request_model import EndpointBaseRequestModel, ContextRetrievers
from ApiLayers.Middleware.token_event_middleware import TokenEventMiddleware from ApiLayers.Middleware.token_event_middleware import TokenEventMiddleware
from ApiLayers.ApiValidations.Response.default_response import EndpointSuccessListResponse from ApiLayers.ApiValidations.Response.default_response import (
EndpointSuccessListResponse,
)
from .function_handlers import AccountListEventMethods from .function_handlers import AccountListEventMethods
from .api_events import SuperUserAccountEvents from .api_events import SuperUserAccountEvents
@@ -46,9 +49,7 @@ def account_list_event_endpoint(
) )
AccountRecordsListEventMethods.endpoint_callable = ( AccountRecordsListEventMethods.endpoint_callable = account_list_event_endpoint
account_list_event_endpoint
)
AccountRecordsCreateEventMethods = MethodToEvent( AccountRecordsCreateEventMethods = MethodToEvent(
@@ -84,9 +85,7 @@ def account_create_event_endpoint(
) )
AccountRecordsCreateEventMethods.endpoint_callable = ( AccountRecordsCreateEventMethods.endpoint_callable = account_create_event_endpoint
account_create_event_endpoint
)
AccountRecordsUpdateEventMethods = MethodToEvent( AccountRecordsUpdateEventMethods = MethodToEvent(
@@ -122,7 +121,4 @@ def account_update_event_endpoint(
) )
AccountRecordsUpdateEventMethods.endpoint_callable = ( AccountRecordsUpdateEventMethods.endpoint_callable = account_update_event_endpoint
account_update_event_endpoint
)

View File

@@ -45,9 +45,13 @@ class AccountListEventMethods(BaseRouteModel):
""" """
@classmethod @classmethod
def account_records_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def account_records_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AccountRecords, list_options=data, model_query=None, table=AccountRecords,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -58,13 +62,14 @@ class AccountListEventMethods(BaseRouteModel):
).query ).query
elif cls.context_retriever.token.is_employee: elif cls.context_retriever.token.is_employee:
AccountRecords.pre_query = AccountRecords.filter_all( AccountRecords.pre_query = AccountRecords.filter_all(
AccountRecords.company_id == AccountRecords.company_id
cls.context_retriever.token.selected_company.company_id, == cls.context_retriever.token.selected_company.company_id,
db=db_session, db=db_session,
).query ).query
records = AccountRecords.filter_all(*query_options.convert(), db=db_session) records = AccountRecords.filter_all(*query_options.convert(), db=db_session)
return list_options_base.paginated_result( return list_options_base.paginated_result(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )
# @classmethod # @classmethod
@@ -212,7 +217,8 @@ class AccountCreateEventMethods(BaseRouteModel):
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
build_iban = BuildIbans.filter_one( build_iban = BuildIbans.filter_one(
BuildIbans.iban == data.iban, BuildIbans.iban == data.iban,
BuildIbans.build_id == cls.context_retriever.token.selected_occupant.build_id, BuildIbans.build_id
== cls.context_retriever.token.selected_occupant.build_id,
db=db_session, db=db_session,
).data ).data
if not build_iban: if not build_iban:
@@ -266,7 +272,9 @@ class AccountCreateEventMethods(BaseRouteModel):
data_dict["receive_debit"] = debit_type.id data_dict["receive_debit"] = debit_type.id
data_dict["receive_debit_uu_id"] = str(debit_type.uu_id) data_dict["receive_debit_uu_id"] = str(debit_type.uu_id)
account_record = AccountRecords.find_or_create(data_dict, db=db_session).data account_record = AccountRecords.find_or_create(
data_dict, db=db_session
).data
# return AlchemyJsonResponse( # return AlchemyJsonResponse(
# completed=True, # completed=True,
# message="Account record created successfully", # message="Account record created successfully",
@@ -282,7 +290,9 @@ class AccountUpdateEventMethods(BaseRouteModel):
pass pass
elif cls.context_retriever.token.is_employee: elif cls.context_retriever.token.is_employee:
pass pass
AccountRecords.build_parts_id = cls.context_retriever.token.selected_occupant.build_part_id AccountRecords.build_parts_id = (
cls.context_retriever.token.selected_occupant.build_part_id
)
account_record = AccountRecords.update_one(build_uu_id, data).data account_record = AccountRecords.update_one(build_uu_id, data).data
# return AlchemyJsonResponse( # return AlchemyJsonResponse(
# completed=True, # completed=True,
@@ -291,4 +301,3 @@ class AccountUpdateEventMethods(BaseRouteModel):
# cls_object=AccountRecords, # cls_object=AccountRecords,
# response_model=UpdateAccountRecord, # response_model=UpdateAccountRecord,
# ) # )

View File

@@ -1,14 +1,169 @@
from Events.Engine.abstract_class import PageInfo from Events.Engine.abstract_class import PageInfo
from .account_records import (
AccountRecordsUpdateEventMethods,
account_page_info = PageInfo( AccountRecordsCreateEventMethods,
name="Accounts", AccountRecordsListEventMethods,
title={"en": "Account Records", "tr": "Hesap Kayıtları"},
description={
"en": "Account Records for reaching user all types account information",
"tr": "Kullanıcı tüm hesap bilgilerine ulaşmak için Hesap Kayıtları"
},
icon="",
parent="",
url="",
) )
cluster_name = "AccountCluster"
page_type=f"/dashboard?site={cluster_name}"
prefix = "/accounts"
create_key = f"{prefix}{AccountRecordsCreateEventMethods.URL}"
update_key = f"{prefix}{AccountRecordsUpdateEventMethods.URL}"
list_key = f"{prefix}{AccountRecordsListEventMethods.URL}"
class LanguageModels:
SITE_URL: str
COMPONENT: str = "Table"
PREFIX_URL: str = ""
PAGE_INFO: dict
def as_dict(self):
return {
"SITE_URL": self.SITE_URL,
"COMPONENT": self.COMPONENT,
"PREFIX_URL": self.PREFIX_URL,
"PAGE_INFO": self.PAGE_INFO,
}
account_language_update_models = LanguageModels()
account_language_update_models.COMPONENT = "Link"
account_language_update_models.SITE_URL=f"/update?site={cluster_name}"
account_language_update_models.PREFIX_URL=f"{prefix}{AccountRecordsUpdateEventMethods.URL}"
account_language_update_models.PAGE_INFO = {
"en": {"page": "Update Account Records",},
"tr": {"page": "Hesap Kayıdı Güncelle",},
}
account_language_model_as_dict = account_language_update_models.as_dict()
account_language_created_models = LanguageModels()
account_language_created_models.COMPONENT = "Link"
account_language_created_models.SITE_URL=f"/create?site={cluster_name}"
account_language_created_models.PREFIX_URL=f"{prefix}{AccountRecordsCreateEventMethods.URL}"
account_language_created_models.PAGE_INFO = {
"en": {"page": "Create Account Records",},
"tr": {"page": "Hesap Kayıdı Oluştur"},
}
account_language_created_models_as_dict = account_language_created_models.as_dict()
account_language_list_models = LanguageModels()
account_language_list_models.COMPONENT = "Table"
account_language_list_models.SITE_URL = f"/list?site={cluster_name}"
account_language_list_models.PREFIX_URL = f"{prefix}{AccountRecordsListEventMethods.URL}"
account_language_list_models.PAGE_INFO = {
"en": {"page": "List Account Records",},
"tr": {"page": "Hesap Kayıtlarını Listele",},
}
account_language_list_models_as_dict = account_language_list_models.as_dict()
account_language_create_models = LanguageModels()
account_language_create_models.COMPONENT = "Form"
account_language_create_models.SITE_URL = f"/create?site={cluster_name}"
account_language_create_models.PREFIX_URL = f"{prefix}{AccountRecordsListEventMethods.URL}"
account_language_create_models.PAGE_INFO = {
"en": {"page": "List Account Records", "button:": "Create"},
"tr": {"page": "Hesap Kayıtlarını Listele", "button:": "Oluştur"},
}
account_language_create_models_as_dict = account_language_create_models.as_dict()
account_language_update_form_models = LanguageModels()
account_language_update_form_models.COMPONENT = "Form"
account_language_update_form_models.SITE_URL=f"/update?site={cluster_name}"
account_language_update_form_models.PREFIX_URL=f"{prefix}{AccountRecordsUpdateEventMethods.URL}"
account_language_update_form_models.PAGE_INFO = {
"en": {"page": "Update Account Records", "button:": "Update"},
"tr": {"page": "Hesap Kayıdı Güncelle", "button:": "Güncelle"},
}
account_language_update_form_models_as_dict = account_language_update_form_models.as_dict()
dashboard_page_info = PageInfo(
name=f"{cluster_name}",
url=f"/dashboard?site={cluster_name}",
icon="Building",
instructions={
"headers": {
"store": True, "url": "/validations/header", "data": {"event_code": f"/accounts/list", "asked_field": "headers"},
}
},
page_info={
"page": {
"en": "Account Records for reaching user all types account information",
"tr": "Kullanıcı tüm hesap bilgilerine ulaşmak için Hesap Kayıtları",
},
},
endpoints={
str(update_key): AccountRecordsUpdateEventMethods.retrieve_all_event_keys(),
str(create_key): AccountRecordsCreateEventMethods.retrieve_all_event_keys(),
str(list_key): AccountRecordsListEventMethods.retrieve_all_event_keys(),
},
language_models={
account_language_update_models.PREFIX_URL: account_language_model_as_dict,
account_language_created_models.PREFIX_URL: account_language_created_models_as_dict,
account_language_list_models.PREFIX_URL: account_language_list_models_as_dict,
},
)
create_page_info = PageInfo(
name=f"{cluster_name}",
url=f"/create?site={cluster_name}",
icon="Building",
instructions={
"validation": {
"store": True, "url": "/validations/validation", "data": {"event_code": f"/accounts/create", "asked_field": "validation"},
},
"headers": {
"store": True, "url": "/validations/header", "data": {"event_code": f"/accounts/create", "asked_field": "headers"},
}
},
page_info={
"page": {
"en": "Account Records creating for user all types account information",
"tr": "Kullanıcı tüm hesap bilgilerine ulaşmak için Hesap Kayıtları oluştur",
},
},
endpoints={
str(create_key): AccountRecordsCreateEventMethods.retrieve_all_event_keys(),
},
language_models={
account_language_create_models.PREFIX_URL: account_language_create_models_as_dict,
},
)
update_page_info = PageInfo(
name=f"{cluster_name}",
url=f"/update?site={cluster_name}",
icon="Building",
instructions={
"validation": {
"store": True, "url": "/validations/validation", "data": {"event_code": f"/accounts/update", "asked_field": "validation"},
},
"headers": {
"store": True, "url": "/validations/header", "data": {"event_code": f"/accounts/update", "asked_field": "headers"},
},
"data": {
"store": True, "url": f"{prefix}/list", "data": dict(page= 1, limit= 1),
}
},
page_info={
"page": {
"en": "Account Records updating for user all types account information",
"tr": "Kullanıcı tüm hesap bilgilerine ulaşmak için Hesap Kayıtları güncelle",
},
},
endpoints={
str(update_key): AccountRecordsUpdateEventMethods.retrieve_all_event_keys(),
},
language_models={
account_language_update_form_models.PREFIX_URL: account_language_update_form_models_as_dict,
},
)
account_page_info = {
f"/dashboard?site={cluster_name}" : dashboard_page_info,
f"/create?site={cluster_name}": create_page_info,
f"/update?site={cluster_name}": update_page_info,
}

View File

@@ -1,6 +1,7 @@
""" """
Account records request and response models. Account records request and response models.
""" """
from typing import Optional from typing import Optional
from ApiLayers.ApiValidations.Request import PydanticBaseModel, ListOptions from ApiLayers.ApiValidations.Request import PydanticBaseModel, ListOptions

View File

@@ -1,6 +1,7 @@
""" """
Account related API endpoints. Account related API endpoints.
""" """
from typing import Any, Dict from typing import Any, Dict
from fastapi import Request from fastapi import Request
@@ -8,7 +9,9 @@ from Events.Engine.abstract_class import MethodToEvent
from Events.base_request_model import EndpointBaseRequestModel, ContextRetrievers from Events.base_request_model import EndpointBaseRequestModel, ContextRetrievers
from ApiLayers.Middleware.token_event_middleware import TokenEventMiddleware from ApiLayers.Middleware.token_event_middleware import TokenEventMiddleware
from ApiLayers.ApiValidations.Response.default_response import EndpointSuccessListResponse from ApiLayers.ApiValidations.Response.default_response import (
EndpointSuccessListResponse,
)
from .function_handlers import ( from .function_handlers import (
AddressListFunctions, AddressListFunctions,
@@ -52,9 +55,7 @@ def account_list_event_endpoint(
) )
AddressListEventMethods.endpoint_callable = ( AddressListEventMethods.endpoint_callable = account_list_event_endpoint
account_list_event_endpoint
)
AddressCreateEventMethods = MethodToEvent( AddressCreateEventMethods = MethodToEvent(
@@ -90,9 +91,7 @@ def account_create_event_endpoint(
) )
AddressCreateEventMethods.endpoint_callable = ( AddressCreateEventMethods.endpoint_callable = account_create_event_endpoint
account_create_event_endpoint
)
AddressUpdateEventMethods = MethodToEvent( AddressUpdateEventMethods = MethodToEvent(
@@ -128,9 +127,7 @@ def account_update_event_endpoint(
) )
AddressUpdateEventMethods.endpoint_callable = ( AddressUpdateEventMethods.endpoint_callable = account_update_event_endpoint
account_update_event_endpoint
)
AddressSearchEventMethods = MethodToEvent( AddressSearchEventMethods = MethodToEvent(
@@ -165,9 +162,5 @@ def address_search_event_endpoint(
data=pagination_result.data, pagination=pagination_result.pagination.as_dict() data=pagination_result.data, pagination=pagination_result.pagination.as_dict()
) )
AddressSearchEventMethods.endpoint_callable = (
address_search_event_endpoint
)
AddressSearchEventMethods.endpoint_callable = address_search_event_endpoint

View File

@@ -77,6 +77,7 @@ address_search_super_user_event.endpoint_callable = (
AddressSuperUserFunctions.AddressSearchFunctions.template_example_function_list AddressSuperUserFunctions.AddressSearchFunctions.template_example_function_list
) )
class AddressSuperUserEvents: class AddressSuperUserEvents:
AddressListEvents = address_list_super_user_event AddressListEvents = address_list_super_user_event
AddressCreateEvents = address_create_super_user_event AddressCreateEvents = address_create_super_user_event

View File

@@ -17,11 +17,14 @@ class Handlers:
class AddressListFunctions(BaseRouteModel): class AddressListFunctions(BaseRouteModel):
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -34,19 +37,27 @@ class AddressListFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
*query_options.convert(), db=db_session
)
return list_options_base.paginated_result( return list_options_base.paginated_result(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )
class AddressCreateFunctions(BaseRouteModel): class AddressCreateFunctions(BaseRouteModel):
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -59,9 +70,12 @@ class AddressCreateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
*query_options.convert(), db=db_session
)
return list_options_base.paginated_result( return list_options_base.paginated_result(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )
@@ -72,12 +86,16 @@ class AddressSearchFunctions(BaseRouteModel):
and filtering. and filtering.
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -90,19 +108,27 @@ class AddressSearchFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
*query_options.convert(), db=db_session
)
return list_options_base.paginated_result( return list_options_base.paginated_result(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )
class AddressUpdateFunctions(BaseRouteModel): class AddressUpdateFunctions(BaseRouteModel):
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -115,9 +141,12 @@ class AddressUpdateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
*query_options.convert(), db=db_session
)
return list_options_base.paginated_result( return list_options_base.paginated_result(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -1,11 +1,77 @@
from Events.Engine.abstract_class import PageInfo from Events.Engine.abstract_class import PageInfo
from .address import (
AddressListEventMethods,
address_page_info = PageInfo( AddressCreateEventMethods,
name="template", AddressUpdateEventMethods,
title={"en": "template"}, AddressSearchEventMethods,
description={"en": "template"}, )
icon="",
parent="", prefix = "/address"
url="", cluster_name = "AddressCluster"
address_page_info = PageInfo(
name=f"{cluster_name}",
url=f"/dashboard?site={cluster_name}",
icon="Building",
endpoints={
str(
f"{prefix}{AddressUpdateEventMethods.URL}"
): AddressUpdateEventMethods.retrieve_all_event_keys(),
str(
f"{prefix}{AddressCreateEventMethods.URL}"
): AddressCreateEventMethods.retrieve_all_event_keys(),
str(
f"{prefix}{AddressSearchEventMethods.URL}"
): AddressSearchEventMethods.retrieve_all_event_keys(),
str(
f"{prefix}{AddressListEventMethods.URL}"
): AddressListEventMethods.retrieve_all_event_keys(),
},
language_models={
"page_info": {
"key": "pair", # key: pair, value: dict
"description": {
"en": "Account Records for reaching user all types account information",
"tr": "Kullanıcı tüm hesap bilgilerine ulaşmak için Hesap Kayıtları",
},
},
f"{prefix}{AddressUpdateEventMethods.URL}": {
"component": "Button",
"site_url": f"/update?site={cluster_name}",
"page_info": {
"text": {
"en": "Update Account Records",
"tr": "Hesap Kayıdı Güncelle",
},
},
},
f"{prefix}{AddressCreateEventMethods.URL}": {
"component": "Button",
"site_url": f"/create?site={cluster_name}",
"page_info": {
"text": {
"en": "Create Account Records",
"tr": "Hesap Kayıdı Oluştur",
},
},
},
f"{prefix}{AddressSearchEventMethods.URL}": {
"component": "Search",
"page_info": {
"text": {
"en": "Search Account Records",
"tr": "Hesap Kayıtlarını Ara",
},
},
},
f"{prefix}{AddressListEventMethods.URL}": {
"component": "Table",
"fetch_url": AddressListEventMethods.URL,
"page_info": {
"description": {
"en": "Account Records for reaching user all types account information",
"tr": "Kullanıcı tüm hesap bilgilerine ulaşmak için Hesap Kayıtları",
},
},
},
},
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -8,7 +8,7 @@ from function_handlers import TemplateFunctions
# Auth Login # Auth Login
template_event = Event( building_event = Event(
name="authentication_login_super_user_event", name="authentication_login_super_user_event",
key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e", key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e",
# request_validator=TemplateRequestModels.TemplateRequestModelX, # request_validator=TemplateRequestModels.TemplateRequestModelX,
@@ -18,4 +18,8 @@ template_event = Event(
) )
template_event.endpoint_callable = TemplateFunctions.template_example_function_list building_event.endpoint_callable = TemplateFunctions.template_example_function_list
class BuildingSuperUserEvents:
BuildingEvent = building_event

View File

@@ -1,19 +1,58 @@
""" """
request models. Account related API endpoints.
""" """
from typing import TYPE_CHECKING, Dict, Any, Literal, Optional, TypedDict, Union from typing import Any, Dict
from pydantic import BaseModel, Field, model_validator, RootModel, ConfigDict from fastapi import Request
from ApiEvents.base_request_model import BaseRequestModel, DictRequestModel
from ApiValidations.Custom.token_objects import EmployeeTokenObject, OccupantTokenObject from Events.Engine.abstract_class import MethodToEvent
from ApiValidations.Request.base_validations import ListOptions from Events.base_request_model import EndpointBaseRequestModel, ContextRetrievers
from ErrorHandlers.Exceptions.api_exc import HTTPExceptionApi
from Schemas.identity.identity import ( from ApiLayers.Middleware.token_event_middleware import TokenEventMiddleware
AddressPostcode, from ApiLayers.ApiValidations.Response.default_response import (
Addresses, EndpointSuccessListResponse,
RelationshipEmployee2PostCode, )
# from .function_handlers import (
# AddressListFunctions,
# AddressUpdateFunctions,
# AddressSearchFunctions,
# AddressCreateFunctions,
# )
from .api_events import BuildingSuperUserEvents
BuildingListEventMethods = MethodToEvent(
name="BuildingListEventMethods",
events={
BuildingSuperUserEvents.BuildingEvent.key: BuildingSuperUserEvents.BuildingEvent,
},
headers=[],
errors=[],
decorators_list=[TokenEventMiddleware.event_required],
url="/list",
method="POST",
summary="List all accounts by given previligous",
description="List all accounts by given previligous",
) )
if TYPE_CHECKING: def account_list_event_endpoint(
from fastapi import Request request: Request, data: EndpointBaseRequestModel
) -> Dict[str, Any]:
context_retriever = ContextRetrievers(func=account_list_event_endpoint)
event_2_catch = BuildingListEventMethods.retrieve_event(
event_function_code=f"{BuildingSuperUserEvents.BuildingEvent.key}"
)
context_retriever.RESPONSE_VALIDATOR = event_2_catch.RESPONSE_VALIDATOR
data = event_2_catch.REQUEST_VALIDATOR(**data.data)
BuildingListFunctions.context_retriever = context_retriever
pagination_result = event_2_catch.endpoint_callable(data=data)
return EndpointSuccessListResponse(
code=event_2_catch.static_key, lang=context_retriever.token.lang
).as_dict(
data=pagination_result.data, pagination=pagination_result.pagination.as_dict()
)
BuildingListEventMethods.endpoint_callable = account_list_event_endpoint

View File

@@ -1,4 +1,5 @@
from Events.Engine.abstract_class import CategoryCluster from Events.Engine.abstract_class import CategoryCluster
from .info import building_page_info from .info import building_page_info

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -1,17 +1,42 @@
from Events.Engine.abstract_class import PageInfo from Events.Engine.abstract_class import PageInfo
from Events.Engine.abstract_class import PageComponent
create_building = PageComponent(
name="CreateBuilding",
url="/create",
language_models={
"en": "Create Building",
"tr": "Bina Oluştur",
},
)
update_building = PageComponent(
name="UpdateBuilding",
url="/update",
language_models={
"en": "Update Building",
"tr": "Bina Güncelle",
},
)
list_building = PageComponent(
name="ListBuilding",
url="/dashboard",
language_models={
"en": "List Building",
"tr": "Bina Listele",
},
)
building_page_info = PageInfo( building_page_info = PageInfo(
name="Building", name="BuildingCluster",
title={ language_models={
"en": "Building Actions", "en": {},
"tr": "Bina İşlemleri" "tr": {},
}, },
description={ icon="Building",
"en": "Building Actions to manage build updates", sub_components=[create_building, update_building, list_building],
"tr": "Bina güncellemelerini yönetmek için Bina İşlemleri" url="/dashboard?site=AddressCluster",
},
icon="",
parent="",
url="",
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
""" """
@classmethod @classmethod
def template_example_function_list(cls, data: Optional[Union[dict, ListOptions]]) -> PaginationResult: def template_example_function_list(
cls, data: Optional[Union[dict, ListOptions]]
) -> PaginationResult:
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
list_options_base = ListOptionsBase( list_options_base = ListOptionsBase(
table=AddressNeighborhood, list_options=data, model_query=None, table=AddressNeighborhood,
list_options=data,
model_query=None,
) )
db_session, query_options = list_options_base.init_list_options() db_session, query_options = list_options_base.init_list_options()
if cls.context_retriever.token.is_occupant: if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"), AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session, db=db_session,
).query ).query
records = AddressNeighborhood.filter_all(*query_options.convert(), db=db_session) records = AddressNeighborhood.filter_all(
return list_options_base.paginated_result( *query_options.convert(), db=db_session
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None) )
return list_options_base.paginated_result(
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
) )

View File

@@ -53,9 +53,7 @@ MenuEventMethods = MethodToEvent(
) )
def menu_endpoint( def menu_endpoint(request: Request, data: EndpointBaseRequestModel) -> Dict[str, Any]:
request: Request, data: EndpointBaseRequestModel
) -> Dict[str, Any]:
function = ValidationEventMethods.retrieve_event( function = ValidationEventMethods.retrieve_event(
event_function_code=f"{menu_event.key}" event_function_code=f"{menu_event.key}"
) )
@@ -63,4 +61,5 @@ def menu_endpoint(
RetrieveValidation.context_retriever = ContextRetrievers(func=validations_endpoint) RetrieveValidation.context_retriever = ContextRetrievers(func=validations_endpoint)
return function.endpoint_callable(request=request, data=data) return function.endpoint_callable(request=request, data=data)
MenuEventMethods.endpoint_callable = menu_endpoint MenuEventMethods.endpoint_callable = menu_endpoint

View File

@@ -5,29 +5,106 @@ from uuid import UUID
from ApiLayers.AllConfigs.Redis.configs import RedisCategoryKeys from ApiLayers.AllConfigs.Redis.configs import RedisCategoryKeys
class PageInfo: class PageComponent:
NAME: str NAME: str
BUTTON_NAME: str URL: str
PAGE_URL: str FETCH_URL: str
PAGEINFO: Dict[str, Any] LANGUAGE_MODELS: Dict[str, Any]
URL: str = "" TYPE_COMPONENT: Optional[str] = "Page"
def __init__( def __init__(
self, self,
name: str, name: str,
title: Dict[str, Any],
description: Dict[str, Any],
icon: str,
parent: str,
url: str, url: str,
# fetch_url: str,
language_models: Dict[str, Any],
): ):
self.NAME = name self.NAME = name
self.TITLE = title
self.DESCRIPTION = description
self.ICON = icon
self.PARENT = parent
self.URL = url self.URL = url
# self.FETCH_URL = fetch_url
self.LANGUAGE_MODELS = language_models
def set_language_models(self, language_models: Dict[str, Any]):
self.LANGUAGE_MODELS = language_models
@property
def language_models(self):
return self.LANGUAGE_MODELS
def as_dict(self):
return {
"name": self.NAME,
"url": self.URL,
"language_models": self.LANGUAGE_MODELS,
# "fetch_url": self.FETCH_URL,
}
class PageInfo:
"""
match_page: {
"/dashboard?site=AccountCluster": [
"/accounts/create",
"/accounts/update",
"/accounts/list",
],
"/update?site=AccountCluster": ["/accounts/update"],
"/create?site=AccountCluster": ["/accounts/create"],
},
"""
NAME: str
PAGE_URL: str
PAGEINFO: Dict[str, Any]
URL: str = ""
ENDPOINTS: Dict[str, Any]
LANGUAGE_MODELS: Dict[str, Any]
SUB_COMPONENTS: Optional[list["PageComponent"]] = None
INSTRUCTIONS: Optional[Dict[str, Any]] = None
def __init__(
self,
name: str,
icon: str,
url: str,
endpoints: Dict[str, Any],
language_models: Dict[str, Any],
page_info: Optional[Dict[str, Any]] = None,
sub_components: Optional[list["PageComponent"]] = None,
instructions: Optional[Dict[str, Any]] = None,
):
self.NAME = name
self.LANGUAGE_MODELS = language_models
self.ICON = icon
self.URL = url
self.SUB_COMPONENTS = sub_components
self.ENDPOINTS = endpoints
self.PAGEINFO = page_info
self.INSTRUCTIONS = instructions
@property
def endpoints(self):
return self.ENDPOINTS
@property
def sub_components(self):
return self.SUB_COMPONENTS
@property
def as_dict(self):
as_dict = {
"name": self.NAME,
"icon": self.ICON,
"url": self.URL,
"endpoints": self.ENDPOINTS,
"language_models": self.LANGUAGE_MODELS,
"page_info": self.PAGEINFO,
}
if self.INSTRUCTIONS:
as_dict["instructions"] = self.INSTRUCTIONS
if self.SUB_COMPONENTS:
as_dict["sub_components"] = [i.as_dict() for i in self.SUB_COMPONENTS]
return as_dict
class Event: class Event:
@@ -185,7 +262,7 @@ class CategoryCluster:
TAGS: list TAGS: list
PREFIX: str PREFIX: str
PAGEINFO: Optional[PageInfo] PAGEINFO: Optional[Dict['str', PageInfo]]
DESCRIPTION: str DESCRIPTION: str
ENDPOINTS: dict[str, MethodToEvent] # {"MethodToEvent": MethodToEvent, ...} ENDPOINTS: dict[str, MethodToEvent] # {"MethodToEvent": MethodToEvent, ...}
SUBCATEGORY: Optional[List["CategoryCluster"]] # [CategoryCluster, ...] SUBCATEGORY: Optional[List["CategoryCluster"]] # [CategoryCluster, ...]
@@ -200,7 +277,7 @@ class CategoryCluster:
description: str, description: str,
endpoints: dict[str, MethodToEvent], endpoints: dict[str, MethodToEvent],
sub_category: list, sub_category: list,
pageinfo: Optional[PageInfo] = None, pageinfo: Optional[Dict['str', PageInfo]] = None,
include_in_schema: Optional[bool] = True, include_in_schema: Optional[bool] = True,
is_client: Optional[bool] = False, is_client: Optional[bool] = False,
): ):
@@ -262,7 +339,14 @@ class CategoryCluster:
def retrieve_page_info(self): def retrieve_page_info(self):
""" """
PAGE_INFO:ClusterToMethod = {"PageInfo": {...}, "subCategory": PAGE_INFO:ClusterToMethod} PAGE_INFO:ClusterToMethod = {"PageInfo": {...}, "subCategory": PAGE_INFO:ClusterToMethod}
return {"prefix": self.PREFIX, **page_info}
""" """
raise NotImplementedError( page_infos = {}
"CategoryCluster retrieve_page_info() method is not implemented" if isinstance(self.PAGEINFO, dict):
) for page_key, page_info in dict(self.PAGEINFO).items():
if page_info_dict := getattr(page_info, 'as_dict', None):
page_infos[page_key] = page_info_dict
return {"prefix": self.PREFIX, **page_infos}
if hasattr(self.PAGEINFO, 'as_dict'):
return {"prefix": self.PREFIX, **self.PAGEINFO.as_dict}
return

View File

@@ -1,4 +1,4 @@
from ApiLayers.AllConfigs.Redis.configs import RedisCategoryKeys from ApiLayers.AllConfigs.Redis.configs import RedisCategoryKeys, RedisCategoryPageInfoKeysAction
class PrepareRedisItems: class PrepareRedisItems:
@@ -13,6 +13,8 @@ class PrepareRedisItems:
METHOD_FUNCTION_CODES_VALUE: dict = {} METHOD_FUNCTION_CODES_VALUE: dict = {}
ENDPOINT2CLASS_KEY: str = RedisCategoryKeys.ENDPOINT2CLASS ENDPOINT2CLASS_KEY: str = RedisCategoryKeys.ENDPOINT2CLASS
ENDPOINT2CLASS_VALUE: dict = {} ENDPOINT2CLASS_VALUE: dict = {}
PAGE_INFO_KEY: str = RedisCategoryPageInfoKeysAction.page_index
PAGE_INFO_VALUE: dict = {}
@property @property
def as_dict(self): def as_dict(self):
@@ -22,6 +24,7 @@ class PrepareRedisItems:
self.CLUSTER_FUNCTION_CODES_KEY: self.CLUSTER_FUNCTION_CODES_VALUE, self.CLUSTER_FUNCTION_CODES_KEY: self.CLUSTER_FUNCTION_CODES_VALUE,
self.METHOD_FUNCTION_CODES_KEY: self.METHOD_FUNCTION_CODES_VALUE, self.METHOD_FUNCTION_CODES_KEY: self.METHOD_FUNCTION_CODES_VALUE,
self.ENDPOINT2CLASS_KEY: self.ENDPOINT2CLASS_VALUE, self.ENDPOINT2CLASS_KEY: self.ENDPOINT2CLASS_VALUE,
self.PAGE_INFO_KEY: self.PAGE_INFO_VALUE,
} }

View File

@@ -4,7 +4,7 @@ from ApiLayers.ApiServices.Cluster.create_router import (
CreateRouterFromCluster, CreateRouterFromCluster,
CreateEndpointFromCluster, CreateEndpointFromCluster,
) )
from ApiLayers.AllConfigs.Redis.configs import RedisCategoryKeys from ApiLayers.AllConfigs.Redis.configs import RedisCategoryKeys, RedisCategoryPageInfoKeys
from Events.Engine.abstract_class import CategoryCluster from Events.Engine.abstract_class import CategoryCluster
from Services.Redis.Actions.actions import RedisActions from Services.Redis.Actions.actions import RedisActions
from Services.Redis.Models.cluster import RedisList from Services.Redis.Models.cluster import RedisList
@@ -75,6 +75,18 @@ class PrepareEvents(DecoratorModule):
self.cluster_controller_group = cluster_controller_group self.cluster_controller_group = cluster_controller_group
self.valid_redis_items: PrepareRedisItems = PrepareRedisItems() self.valid_redis_items: PrepareRedisItems = PrepareRedisItems()
self.prepare_needs() self.prepare_needs()
self.prepare_page_info()
def prepare_page_info(self):
"""
[SAVE]REDIS => PAGE_MENU_INDEX:PAGE_URL= {...PageInfo}
"""
for cluster_control in self.cluster_controller_group.imports:
cluster = cluster_control.category_cluster
if retrieve_page_info := cluster.retrieve_page_info():
self.valid_redis_items.PAGE_INFO_VALUE.update({
f"{self.valid_redis_items.PAGE_INFO_KEY}:{cluster.name}": retrieve_page_info
})
def prepare_needs(self): def prepare_needs(self):
# @Pages iterate(ClusterToMethod) # @Pages iterate(ClusterToMethod)
@@ -137,6 +149,15 @@ class SetItems2Redis:
continue continue
RedisActions.delete(list_keys=[f"{redis_values_to_delete}*"]) RedisActions.delete(list_keys=[f"{redis_values_to_delete}*"])
for (
redis_values_to_delete,
redis_key_type,
) in RedisCategoryPageInfoKeys.__annotations__.items():
if isinstance(redis_key_type, str):
continue
RedisActions.delete(list_keys=[f"{redis_values_to_delete}*"]
)
# Save MENU_FIRST_LAYER to Redis # Save MENU_FIRST_LAYER to Redis
redis_list = RedisList(redis_key=RedisCategoryKeys.MENU_FIRST_LAYER) redis_list = RedisList(redis_key=RedisCategoryKeys.MENU_FIRST_LAYER)
RedisActions.set_json( RedisActions.set_json(
@@ -193,3 +214,11 @@ class SetItems2Redis:
f"{RedisCategoryKeys.ENDPOINT2CLASS}": True, f"{RedisCategoryKeys.ENDPOINT2CLASS}": True,
}, },
) )
for redis_key, redis_value in dict_prep.get(
PrepareRedisItems.PAGE_INFO_KEY
).items():
redis_list = RedisList(redis_key=redis_key)
RedisActions.set_json(
list_keys=redis_list.to_list(), value=redis_value
)

View File

@@ -14,7 +14,11 @@ from ApiLayers.ApiValidations.Custom.token_objects import (
) )
from ApiLayers.ApiValidations.Custom.wrapper_contexts import AuthContext, EventContext from ApiLayers.ApiValidations.Custom.wrapper_contexts import AuthContext, EventContext
from ApiLayers.AllConfigs.Token.config import Auth from ApiLayers.AllConfigs.Token.config import Auth
from Services.PostgresDb.Models.pagination import Pagination, PaginationResult, QueryOptions from Services.PostgresDb.Models.pagination import (
Pagination,
PaginationResult,
QueryOptions,
)
TokenDictType = Union[EmployeeTokenObject, OccupantTokenObject] TokenDictType = Union[EmployeeTokenObject, OccupantTokenObject]
@@ -103,13 +107,19 @@ class ListOptionsBase:
def init_list_options(self) -> tuple: def init_list_options(self) -> tuple:
db_session = self.table.new_session() db_session = self.table.new_session()
query_options = QueryOptions(table=self.table, data=self.list_options, model_query=self.model_query) query_options = QueryOptions(
table=self.table, data=self.list_options, model_query=self.model_query
)
return db_session, query_options return db_session, query_options
def paginated_result(self, records, response_model: Optional[BaseModel] = None) -> PaginationResult: def paginated_result(
self, records, response_model: Optional[BaseModel] = None
) -> PaginationResult:
pagination = Pagination(data=records) pagination = Pagination(data=records)
if isinstance(self.list_options, dict): if isinstance(self.list_options, dict):
pagination.change(**self.list_options) pagination.change(**self.list_options)
elif isinstance(self.list_options, BaseModel): elif isinstance(self.list_options, BaseModel):
pagination.change(**self.list_options.model_dump()) pagination.change(**self.list_options.model_dump())
return PaginationResult(data=records, pagination=pagination, response_model=response_model) return PaginationResult(
data=records, pagination=pagination, response_model=response_model
)

View File

@@ -136,7 +136,9 @@ class PaginationResult:
pagination: Pagination state pagination: Pagination state
""" """
def __init__(self, data: PostgresResponse, pagination: Pagination, response_model: Any = None): def __init__(
self, data: PostgresResponse, pagination: Pagination, response_model: Any = None
):
self._query = data.query self._query = data.query
self.pagination = pagination self.pagination = pagination
self.response_type = data.is_list self.response_type = data.is_list
@@ -192,7 +194,12 @@ class PaginationResult:
class QueryOptions: class QueryOptions:
def __init__(self, table, data: Union[dict, ListOptions] = None, model_query: Optional[Any] = None): def __init__(
self,
table,
data: Union[dict, ListOptions] = None,
model_query: Optional[Any] = None,
):
self.table = table self.table = table
self.data = data self.data = data
self.model_query = model_query self.model_query = model_query
@@ -214,7 +221,9 @@ class QueryOptions:
cleaned_model = self.model_query(**cleaned_query) cleaned_model = self.model_query(**cleaned_query)
for i in cleaned_query: for i in cleaned_query:
if hasattr(cleaned_model, i): if hasattr(cleaned_model, i):
last_dict[str(cleaned_query_by_model[str(i)][0])] = str(cleaned_query_by_model[str(i)][1]) last_dict[str(cleaned_query_by_model[str(i)][0])] = str(
cleaned_query_by_model[str(i)][1]
)
self.data.query = last_dict self.data.query = last_dict
def convert(self) -> tuple: def convert(self) -> tuple:

View File

@@ -4,7 +4,11 @@ from ApiLayers.ApiValidations.Request import ListOptions
from ApiLayers.Schemas import AddressNeighborhood from ApiLayers.Schemas import AddressNeighborhood
from Services.PostgresDb.Models.crud_alchemy import Credentials from Services.PostgresDb.Models.crud_alchemy import Credentials
from Services.PostgresDb.Models.mixin import BasicMixin from Services.PostgresDb.Models.mixin import BasicMixin
from Services.PostgresDb.Models.pagination import Pagination, PaginationResult, QueryOptions from Services.PostgresDb.Models.pagination import (
Pagination,
PaginationResult,
QueryOptions,
)
from pydantic import BaseModel from pydantic import BaseModel
@@ -42,16 +46,22 @@ if listing:
"neighborhood_code__contains": "3", "neighborhood_code__contains": "3",
"my_other_field__ilike": "B%", "my_other_field__ilike": "B%",
"other_other_field__ilike": "C%", "other_other_field__ilike": "C%",
} },
} }
query_options = QueryOptions(table=AddressNeighborhood, data=list_options, model_query=QueryModel) query_options = QueryOptions(
address_neighborhoods = AddressNeighborhood.filter_all(*query_options.convert(), db=new_session) table=AddressNeighborhood, data=list_options, model_query=QueryModel
)
address_neighborhoods = AddressNeighborhood.filter_all(
*query_options.convert(), db=new_session
)
pagination = Pagination(data=address_neighborhoods) pagination = Pagination(data=address_neighborhoods)
pagination.change(**list_options) pagination.change(**list_options)
pagination_result = PaginationResult(data=address_neighborhoods, pagination=pagination) pagination_result = PaginationResult(
data=address_neighborhoods, pagination=pagination
)
print("as_dict", pagination_result.pagination.as_dict()) print("as_dict", pagination_result.pagination.as_dict())
for i, row in enumerate(pagination_result.data): for i, row in enumerate(pagination_result.data):
print(i + 1, row) print(i + 1, row)