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

@@ -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