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

View File

@@ -3,9 +3,9 @@ from Events.Engine.abstract_class import PageInfo
authentication_page_info = PageInfo(
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="",
language_models={},
endpoints={},
icon="Authentication",
sub_components=[],
)

View File

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

View File

@@ -1,13 +1,16 @@
"""
Account related API endpoints.
"""
from typing import Any, Dict
from fastapi import Request
from Events.Engine.abstract_class import MethodToEvent
from Events.base_request_model import EndpointBaseRequestModel, ContextRetrievers
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 .api_events import SuperUserAccountEvents
@@ -46,9 +49,7 @@ def account_list_event_endpoint(
)
AccountRecordsListEventMethods.endpoint_callable = (
account_list_event_endpoint
)
AccountRecordsListEventMethods.endpoint_callable = account_list_event_endpoint
AccountRecordsCreateEventMethods = MethodToEvent(
@@ -84,9 +85,7 @@ def account_create_event_endpoint(
)
AccountRecordsCreateEventMethods.endpoint_callable = (
account_create_event_endpoint
)
AccountRecordsCreateEventMethods.endpoint_callable = account_create_event_endpoint
AccountRecordsUpdateEventMethods = MethodToEvent(
@@ -122,7 +121,4 @@ def account_update_event_endpoint(
)
AccountRecordsUpdateEventMethods.endpoint_callable = (
account_update_event_endpoint
)
AccountRecordsUpdateEventMethods.endpoint_callable = account_update_event_endpoint

View File

@@ -29,25 +29,29 @@ from Services.PostgresDb.Models.pagination import PaginationResult
class AccountListEventMethods(BaseRouteModel):
"""
Account records list by with full privileges.
Accepts List Options
{
"data": {
"page": 1,
"size": 10,
"order_field": ["uu_id",]
"order_type": ["desc"],
"query": {
"process_date__gt": "2021-09-01",
}
}
}
"""
Account records list by with full privileges.
Accepts List Options
{
"data": {
"page": 1,
"size": 10,
"order_field": ["uu_id",]
"order_type": ["desc"],
"query": {
"process_date__gt": "2021-09-01",
}
}
}
"""
@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(
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()
if cls.context_retriever.token.is_occupant:
@@ -58,13 +62,14 @@ class AccountListEventMethods(BaseRouteModel):
).query
elif cls.context_retriever.token.is_employee:
AccountRecords.pre_query = AccountRecords.filter_all(
AccountRecords.company_id ==
cls.context_retriever.token.selected_company.company_id,
AccountRecords.company_id
== cls.context_retriever.token.selected_company.company_id,
db=db_session,
).query
records = AccountRecords.filter_all(*query_options.convert(), db=db_session)
return list_options_base.paginated_result(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)
# @classmethod
@@ -212,7 +217,8 @@ class AccountCreateEventMethods(BaseRouteModel):
if cls.context_retriever.token.is_occupant:
build_iban = BuildIbans.filter_one(
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,
).data
if not build_iban:
@@ -266,7 +272,9 @@ class AccountCreateEventMethods(BaseRouteModel):
data_dict["receive_debit"] = debit_type.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(
# completed=True,
# message="Account record created successfully",
@@ -282,7 +290,9 @@ class AccountUpdateEventMethods(BaseRouteModel):
pass
elif cls.context_retriever.token.is_employee:
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
# return AlchemyJsonResponse(
# completed=True,
@@ -291,4 +301,3 @@ class AccountUpdateEventMethods(BaseRouteModel):
# cls_object=AccountRecords,
# response_model=UpdateAccountRecord,
# )

View File

@@ -1,14 +1,169 @@
from Events.Engine.abstract_class import PageInfo
account_page_info = PageInfo(
name="Accounts",
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="",
from .account_records import (
AccountRecordsUpdateEventMethods,
AccountRecordsCreateEventMethods,
AccountRecordsListEventMethods,
)
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.
"""
from typing import Optional
from ApiLayers.ApiValidations.Request import PydanticBaseModel, ListOptions
@@ -93,4 +94,4 @@ class ListAccountRecord(ListOptions):
class AccountRequestValidators:
InsertAccountRecord = InsertAccountRecord
UpdateAccountRecord = UpdateAccountRecord
ListAccountRecord = ListAccountRecord
ListAccountRecord = ListAccountRecord

View File

@@ -1,6 +1,7 @@
"""
Account related API endpoints.
"""
from typing import Any, Dict
from fastapi import Request
@@ -8,7 +9,9 @@ from Events.Engine.abstract_class import MethodToEvent
from Events.base_request_model import EndpointBaseRequestModel, ContextRetrievers
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 (
AddressListFunctions,
@@ -52,9 +55,7 @@ def account_list_event_endpoint(
)
AddressListEventMethods.endpoint_callable = (
account_list_event_endpoint
)
AddressListEventMethods.endpoint_callable = account_list_event_endpoint
AddressCreateEventMethods = MethodToEvent(
@@ -90,9 +91,7 @@ def account_create_event_endpoint(
)
AddressCreateEventMethods.endpoint_callable = (
account_create_event_endpoint
)
AddressCreateEventMethods.endpoint_callable = account_create_event_endpoint
AddressUpdateEventMethods = MethodToEvent(
@@ -128,9 +127,7 @@ def account_update_event_endpoint(
)
AddressUpdateEventMethods.endpoint_callable = (
account_update_event_endpoint
)
AddressUpdateEventMethods.endpoint_callable = account_update_event_endpoint
AddressSearchEventMethods = MethodToEvent(
@@ -165,9 +162,5 @@ def address_search_event_endpoint(
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,8 +77,9 @@ address_search_super_user_event.endpoint_callable = (
AddressSuperUserFunctions.AddressSearchFunctions.template_example_function_list
)
class AddressSuperUserEvents:
AddressListEvents = address_list_super_user_event
AddressCreateEvents = address_create_super_user_event
AddressUpdateEvents = address_update_super_user_event
AddressSearchEvents = address_search_super_user_event
AddressSearchEvents = address_search_super_user_event

View File

@@ -17,11 +17,14 @@ class Handlers:
class AddressListFunctions(BaseRouteModel):
@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(
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()
if cls.context_retriever.token.is_occupant:
@@ -34,19 +37,27 @@ class AddressListFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
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):
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -59,9 +70,12 @@ class AddressCreateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
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.
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -90,19 +108,27 @@ class AddressSearchFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
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):
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -115,9 +141,12 @@ class AddressUpdateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
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
address_page_info = PageInfo(
name="template",
title={"en": "template"},
description={"en": "template"},
icon="",
parent="",
url="",
from .address import (
AddressListEventMethods,
AddressCreateEventMethods,
AddressUpdateEventMethods,
AddressSearchEventMethods,
)
prefix = "/address"
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
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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

@@ -8,7 +8,7 @@ from function_handlers import TemplateFunctions
# Auth Login
template_event = Event(
building_event = Event(
name="authentication_login_super_user_event",
key="a5d2d0d1-3e9b-4b0f-8c7d-6d4a4b4c4d4e",
# 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 pydantic import BaseModel, Field, model_validator, RootModel, ConfigDict
from ApiEvents.base_request_model import BaseRequestModel, DictRequestModel
from ApiValidations.Custom.token_objects import EmployeeTokenObject, OccupantTokenObject
from ApiValidations.Request.base_validations import ListOptions
from ErrorHandlers.Exceptions.api_exc import HTTPExceptionApi
from Schemas.identity.identity import (
AddressPostcode,
Addresses,
RelationshipEmployee2PostCode,
from typing import Any, Dict
from fastapi import Request
from Events.Engine.abstract_class import MethodToEvent
from Events.base_request_model import EndpointBaseRequestModel, ContextRetrievers
from ApiLayers.Middleware.token_event_middleware import TokenEventMiddleware
from ApiLayers.ApiValidations.Response.default_response import (
EndpointSuccessListResponse,
)
# 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:
from fastapi import Request
def account_list_event_endpoint(
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 .info import building_page_info

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
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,17 +1,42 @@
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(
name="Building",
title={
"en": "Building Actions",
"tr": "Bina İşlemleri"
name="BuildingCluster",
language_models={
"en": {},
"tr": {},
},
description={
"en": "Building Actions to manage build updates",
"tr": "Bina güncellemelerini yönetmek için Bina İşlemleri"
},
icon="",
parent="",
url="",
icon="Building",
sub_components=[create_building, update_building, list_building],
url="/dashboard?site=AddressCluster",
)

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

@@ -48,10 +48,15 @@ class TemplateFunctions(BaseRouteModel):
"""
@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
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()
if cls.context_retriever.token.is_occupant:
@@ -64,7 +69,10 @@ class TemplateFunctions(BaseRouteModel):
AddressNeighborhood.neighborhood_code.icontains("9"),
db=db_session,
).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(
records=records, response_model=getattr(cls.context_retriever, 'RESPONSE_VALIDATOR', None)
)
records=records,
response_model=getattr(cls.context_retriever, "RESPONSE_VALIDATOR", None),
)

View File

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

View File

@@ -5,29 +5,106 @@ from uuid import UUID
from ApiLayers.AllConfigs.Redis.configs import RedisCategoryKeys
class PageInfo:
class PageComponent:
NAME: str
BUTTON_NAME: str
PAGE_URL: str
PAGEINFO: Dict[str, Any]
URL: str = ""
URL: str
FETCH_URL: str
LANGUAGE_MODELS: Dict[str, Any]
TYPE_COMPONENT: Optional[str] = "Page"
def __init__(
self,
name: str,
title: Dict[str, Any],
description: Dict[str, Any],
icon: str,
parent: str,
url: str,
# fetch_url: str,
language_models: Dict[str, Any],
):
self.NAME = name
self.TITLE = title
self.DESCRIPTION = description
self.ICON = icon
self.PARENT = parent
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:
@@ -185,7 +262,7 @@ class CategoryCluster:
TAGS: list
PREFIX: str
PAGEINFO: Optional[PageInfo]
PAGEINFO: Optional[Dict['str', PageInfo]]
DESCRIPTION: str
ENDPOINTS: dict[str, MethodToEvent] # {"MethodToEvent": MethodToEvent, ...}
SUBCATEGORY: Optional[List["CategoryCluster"]] # [CategoryCluster, ...]
@@ -200,7 +277,7 @@ class CategoryCluster:
description: str,
endpoints: dict[str, MethodToEvent],
sub_category: list,
pageinfo: Optional[PageInfo] = None,
pageinfo: Optional[Dict['str', PageInfo]] = None,
include_in_schema: Optional[bool] = True,
is_client: Optional[bool] = False,
):
@@ -262,7 +339,14 @@ class CategoryCluster:
def retrieve_page_info(self):
"""
PAGE_INFO:ClusterToMethod = {"PageInfo": {...}, "subCategory": PAGE_INFO:ClusterToMethod}
return {"prefix": self.PREFIX, **page_info}
"""
raise NotImplementedError(
"CategoryCluster retrieve_page_info() method is not implemented"
)
page_infos = {}
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:
@@ -13,6 +13,8 @@ class PrepareRedisItems:
METHOD_FUNCTION_CODES_VALUE: dict = {}
ENDPOINT2CLASS_KEY: str = RedisCategoryKeys.ENDPOINT2CLASS
ENDPOINT2CLASS_VALUE: dict = {}
PAGE_INFO_KEY: str = RedisCategoryPageInfoKeysAction.page_index
PAGE_INFO_VALUE: dict = {}
@property
def as_dict(self):
@@ -22,6 +24,7 @@ class PrepareRedisItems:
self.CLUSTER_FUNCTION_CODES_KEY: self.CLUSTER_FUNCTION_CODES_VALUE,
self.METHOD_FUNCTION_CODES_KEY: self.METHOD_FUNCTION_CODES_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,
CreateEndpointFromCluster,
)
from ApiLayers.AllConfigs.Redis.configs import RedisCategoryKeys
from ApiLayers.AllConfigs.Redis.configs import RedisCategoryKeys, RedisCategoryPageInfoKeys
from Events.Engine.abstract_class import CategoryCluster
from Services.Redis.Actions.actions import RedisActions
from Services.Redis.Models.cluster import RedisList
@@ -75,6 +75,18 @@ class PrepareEvents(DecoratorModule):
self.cluster_controller_group = cluster_controller_group
self.valid_redis_items: PrepareRedisItems = PrepareRedisItems()
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):
# @Pages iterate(ClusterToMethod)
@@ -137,6 +149,15 @@ class SetItems2Redis:
continue
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
redis_list = RedisList(redis_key=RedisCategoryKeys.MENU_FIRST_LAYER)
RedisActions.set_json(
@@ -193,3 +214,11 @@ class SetItems2Redis:
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.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]
@@ -103,13 +107,19 @@ class ListOptionsBase:
def init_list_options(self) -> tuple:
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
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)
if isinstance(self.list_options, dict):
pagination.change(**self.list_options)
elif isinstance(self.list_options, BaseModel):
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
)