diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index b7c67d4..74fb5b7 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -7,55 +7,22 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
diff --git a/ApiLayers/AllConfigs/Redis/configs.py b/ApiLayers/AllConfigs/Redis/configs.py
index 0aa8495..6f22151 100644
--- a/ApiLayers/AllConfigs/Redis/configs.py
+++ b/ApiLayers/AllConfigs/Redis/configs.py
@@ -79,7 +79,9 @@ class RedisCategoryPageInfoKeysAction:
value : {RedisCategoryPageInfoKeys.PAGE_INFO}
"""
- page_index: str = f"{RedisCategoryPageInfoKeys.PAGE_MENU_INDEX}:{RedisCategoryPageInfoKeys.PAGE_URL}"
+ page_index: str = (
+ f"{RedisCategoryPageInfoKeys.PAGE_MENU_INDEX}:{RedisCategoryPageInfoKeys.PAGE_URL}"
+ )
page_mapper_key: str = (
f"{RedisCategoryPageInfoKeys.PAGE_MENU_INDEX}:{RedisCategoryPageInfoKeys.PAGE_URL}"
diff --git a/ApiLayers/LanguageModels/Response/how_to.py b/ApiLayers/LanguageModels/Response/how_to.py
new file mode 100644
index 0000000..a07a48d
--- /dev/null
+++ b/ApiLayers/LanguageModels/Response/how_to.py
@@ -0,0 +1,227 @@
+from Events.Engine import MethodToEvent
+from Events.Engine.abstract_class import PageInfo
+
+# from .account_records import (
+# AccountRecordsUpdateEventMethods,
+# AccountRecordsCreateEventMethods,
+# AccountRecordsListEventMethods,
+# )
+
+cluster_name = "AccountCluster"
+prefix = "/accounts"
+
+
+class AccountRecordsUpdateEventMethods(MethodToEvent):
+ pass
+
+
+class AccountRecordsCreateEventMethods(MethodToEvent):
+ pass
+
+
+class AccountRecordsListEventMethods(MethodToEvent):
+ pass
+
+
+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()
+)
+
+
+create_key = f"{prefix}{AccountRecordsCreateEventMethods.URL}"
+update_key = f"{prefix}{AccountRecordsUpdateEventMethods.URL}"
+list_key = f"{prefix}{AccountRecordsListEventMethods.URL}"
+
+
+dashboard_page_info = PageInfo(
+ name=f"{cluster_name}",
+ url=f"/dashboard?site={cluster_name}",
+ icon="Building",
+ instructions={
+ str(list_key): {
+ "headers": {
+ "store": True,
+ "url": "/validations/header",
+ "data": {"event_code": f"{prefix}/list", "asked_field": "headers"},
+ },
+ "data": {
+ "store": True,
+ "url": f"{prefix}/list",
+ "data": dict(page=1, limit=1),
+ },
+ },
+ },
+ 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={
+ str(create_key): {
+ "validation": {
+ "store": True,
+ "url": "/validations/validation",
+ "data": {"event_code": f"{prefix}/create", "asked_field": "validation"},
+ },
+ "headers": {
+ "store": True,
+ "url": "/validations/header",
+ "data": {"event_code": f"{prefix}/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={
+ str(update_key): {
+ "validation": {
+ "store": True,
+ "url": "/validations/validation",
+ "data": {"event_code": f"{prefix}/update", "asked_field": "validation"},
+ },
+ "headers": {
+ "store": True,
+ "url": "/validations/header",
+ "data": {"event_code": f"{prefix}/update", "asked_field": "headers"},
+ },
+ },
+ },
+ 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,
+}
diff --git a/DockerApiServices/AuthServiceApi/events_file.py b/DockerApiServices/AuthServiceApi/events_file.py
index 8be1ffc..52d0bf4 100644
--- a/DockerApiServices/AuthServiceApi/events_file.py
+++ b/DockerApiServices/AuthServiceApi/events_file.py
@@ -1,3 +1,11 @@
import Events.AllEvents.authentication as auths_events
+
events_list = (auths_events,)
+
+
+def retrieve_cluster_by_name(cluster_name: str):
+ for module in events_list:
+ if hasattr(module, cluster_name):
+ return getattr(module, cluster_name, None)
+ return
diff --git a/DockerApiServices/EventServiceApi/events_file.py b/DockerApiServices/EventServiceApi/events_file.py
index de548b3..ba4e656 100644
--- a/DockerApiServices/EventServiceApi/events_file.py
+++ b/DockerApiServices/EventServiceApi/events_file.py
@@ -1,3 +1,11 @@
import Events.AllEvents.events as events_events
+
events_list = (events_events,)
+
+
+def retrieve_cluster_by_name(cluster_name: str):
+ for module in events_list:
+ if hasattr(module, cluster_name):
+ return getattr(module, cluster_name, None)
+ return
diff --git a/DockerApiServices/ValidationServiceApi/Dockerfile b/DockerApiServices/ValidationServiceApi/Dockerfile
index 9e73956..66b8731 100644
--- a/DockerApiServices/ValidationServiceApi/Dockerfile
+++ b/DockerApiServices/ValidationServiceApi/Dockerfile
@@ -32,6 +32,8 @@ COPY Events/AllEvents/validations /app/Events/AllEvents/validations
COPY Events/base_request_model.py /app/Events/base_request_model.py
COPY DockerApiServices/ValidationServiceApi/events_file.py /app/Events/AllEvents/events_file.py
+COPY Events/AllEvents /app/Events/JustEvents
+COPY Events/AllEvents/just_events_file.py /app/Events/JustEvents/events_file.py
# Set Python path to include app directory
ENV PYTHONPATH=/app \
diff --git a/DockerApiServices/ValidationServiceApi/events_file.py b/DockerApiServices/ValidationServiceApi/events_file.py
index d15b914..58a92e9 100644
--- a/DockerApiServices/ValidationServiceApi/events_file.py
+++ b/DockerApiServices/ValidationServiceApi/events_file.py
@@ -1,3 +1,10 @@
import Events.AllEvents.validations as validations_events
events_list = (validations_events,)
+
+
+def retrieve_cluster_by_name(cluster_name: str):
+ for module in events_list:
+ if hasattr(module, cluster_name):
+ return getattr(module, cluster_name, None)
+ return
diff --git a/Events/AllEvents/events/account/api_events.py b/Events/AllEvents/events/account/api_events.py
index 622d52f..e3b0b9c 100644
--- a/Events/AllEvents/events/account/api_events.py
+++ b/Events/AllEvents/events/account/api_events.py
@@ -21,8 +21,8 @@ from .function_handlers import (
# Auth Login
account_list_super_user_event = Event(
- name="account_insert_super_user_event",
- key="36a165fe-a2f3-437b-80ee-1ee44670fe70",
+ name="account_list_super_user_event",
+ key="7192c2aa-5352-4e36-98b3-dafb7d036a3d",
request_validator=AccountRequestValidators.ListAccountRecord,
# response_validator=SelectResponseAccount,
# language_models=[AccountRecords.__language_model__],
@@ -39,7 +39,7 @@ account_list_super_user_event.endpoint_callable = (
account_insert_super_user_event = Event(
name="account_insert_super_user_event",
- key="3aa46155-72bc-4370-b4e7-b937b0f9b893",
+ key="31f4f32f-0cd4-4995-8a6a-f9f56335848a",
request_validator=AccountRequestValidators.InsertAccountRecord,
# response_validator=SelectResponseAccount,
# language_models=[AccountRecords.__language_model__],
@@ -56,7 +56,7 @@ account_insert_super_user_event.endpoint_callable = (
account_update_super_user_event = Event(
name="account_insert_super_user_event",
- key="204d3b21-1da6-4739-9f45-36492636c770",
+ key="208e6273-17ef-44f0-814a-8098f816b63a",
request_validator=AccountRequestValidators.UpdateAccountRecord,
# response_validator=SelectResponseAccount,
# language_models=[AccountRecords.__language_model__],
@@ -65,6 +65,7 @@ account_update_super_user_event = Event(
description="Update a specific account by validation list options and queries.",
)
+
account_update_super_user_event.endpoint_callable = (
AccountUpdateEventMethods.account_records_update
)
diff --git a/Events/AllEvents/events/account/info.py b/Events/AllEvents/events/account/info.py
index 6714823..7b9af23 100644
--- a/Events/AllEvents/events/account/info.py
+++ b/Events/AllEvents/events/account/info.py
@@ -5,13 +5,9 @@ from .account_records import (
AccountRecordsListEventMethods,
)
-cluster_name = "AccountCluster"
-page_type=f"/dashboard?site={cluster_name}"
+cluster_name = "AccountCluster"
prefix = "/accounts"
-create_key = f"{prefix}{AccountRecordsCreateEventMethods.URL}"
-update_key = f"{prefix}{AccountRecordsUpdateEventMethods.URL}"
-list_key = f"{prefix}{AccountRecordsListEventMethods.URL}"
class LanguageModels:
@@ -19,91 +15,135 @@ class LanguageModels:
COMPONENT: str = "Table"
PREFIX_URL: str = ""
PAGE_INFO: dict
+ STATIC_PATH: str = "events"
def as_dict(self):
return {
- "SITE_URL": self.SITE_URL,
+ "SITE_URL": f"/{self.STATIC_PATH}{self.SITE_URL}",
"COMPONENT": self.COMPONENT,
"PREFIX_URL": self.PREFIX_URL,
"PAGE_INFO": self.PAGE_INFO,
}
+create_key = f"{prefix}{AccountRecordsCreateEventMethods.URL}"
+update_key = f"{prefix}{AccountRecordsUpdateEventMethods.URL}"
+list_key = f"{prefix}{AccountRecordsListEventMethods.URL}"
+
+
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.SITE_URL = f"/update?site={cluster_name}"
+account_language_update_models.PREFIX_URL = (
+ update_key
+)
account_language_update_models.PAGE_INFO = {
- "en": {"page": "Update Account Records",},
- "tr": {"page": "Hesap Kayıdı Güncelle",},
- }
+ "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.SITE_URL = f"/create?site={cluster_name}"
+account_language_created_models.PREFIX_URL = (
+ create_key
+)
account_language_created_models.PAGE_INFO = {
- "en": {"page": "Create Account Records",},
- "tr": {"page": "Hesap Kayıdı Oluştur"},
- }
+ "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.SITE_URL = f"/dashboard?site={cluster_name}"
+account_language_list_models.PREFIX_URL = (
+ list_key
+)
account_language_list_models.PAGE_INFO = {
- "en": {"page": "List Account Records",},
- "tr": {"page": "Hesap Kayıtlarını Listele",},
- }
+ "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.PREFIX_URL = (
+ create_key
+)
account_language_create_models.PAGE_INFO = {
- "en": {"page": "List Account Records", "button:": "Create"},
- "tr": {"page": "Hesap Kayıtlarını Listele", "button:": "Oluştur"},
- }
+ "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.SITE_URL = f"/update?site={cluster_name}"
+account_language_update_form_models.PREFIX_URL = (
+ update_key
+)
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()
+ "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ı",
+ "en": {
+ "page": "Account Records for reaching user all types account information",
+ },
+ "tr": {
+ "page": "Kullanıcı tüm hesap bilgilerine ulaşmak için Hesap Kayıtları",
+ },
+ },
+ instructions={
+ str(list_key): {
+ "headers": {
+ "store": True,
+ "url": "/validations/header",
+ "data": {"event_code": f"{prefix}/list", "asked_field": "headers"},
+ },
+ "data": {
+ "store": True,
+ "url": f"{prefix}/list",
+ "data": dict(page=1, limit=1),
},
},
+ },
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,
+ str(list_key): {
+ str(update_key): account_language_model_as_dict,
+ str(create_key): account_language_created_models_as_dict,
+ str(list_key): account_language_list_models_as_dict,
+ }
},
)
@@ -112,24 +152,32 @@ create_page_info = PageInfo(
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",
+ str(create_key): {
+ "validation": {
+ "store": True,
+ "url": "/validations/validation",
+ "data": {"event_code": f"{prefix}/create", "asked_field": "validation"},
+ },
+ "headers": {
+ "store": True,
+ "url": "/validations/header",
+ "data": {"event_code": f"{prefix}/create", "asked_field": "headers"},
},
},
+ },
+ page_info={
+ "en": {
+ "page": "Create Account Records for reaching user all types account information",
+ },
+ "tr": {
+ "page": "Kullanıcı tüm hesap bilgilerine ulaşmak için Hesap Kayıt 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,
+ str(create_key): account_language_create_models_as_dict,
},
)
@@ -138,32 +186,38 @@ update_page_info = PageInfo(
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",
+ str(update_key): {
+ "validation": {
+ "store": True,
+ "url": "/validations/validation",
+ "data": {"event_code": f"{prefix}/update", "asked_field": "validation"},
+ },
+ "headers": {
+ "store": True,
+ "url": "/validations/header",
+ "data": {"event_code": f"{prefix}/update", "asked_field": "headers"},
},
},
+ },
+ page_info={
+ "en": {
+ "page": "Update Account Records via all types account information",
+ },
+ "tr": {
+ "page": "Tüm hesap bilgileri aracılığıyla Hesap Kayıtlarını 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,
+ str(update_key): account_language_update_form_models_as_dict,
},
)
+
account_page_info = {
- f"/dashboard?site={cluster_name}" : dashboard_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,
}
diff --git a/Events/AllEvents/events/address/info.py b/Events/AllEvents/events/address/info.py
index 2e5092e..6327997 100644
--- a/Events/AllEvents/events/address/info.py
+++ b/Events/AllEvents/events/address/info.py
@@ -28,7 +28,7 @@ address_page_info = PageInfo(
},
language_models={
"page_info": {
- "key": "pair", # key: pair, value: dict
+ "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ı",
@@ -74,4 +74,4 @@ address_page_info = PageInfo(
},
},
},
-)
\ No newline at end of file
+)
diff --git a/Events/AllEvents/events_file.py b/Events/AllEvents/events_file.py
index a10604a..fe3fcdc 100644
--- a/Events/AllEvents/events_file.py
+++ b/Events/AllEvents/events_file.py
@@ -8,5 +8,6 @@ events_list = (auths_events, events_events, validations_events)
def retrieve_cluster_by_name(cluster_name: str):
for module in events_list:
- if hasattr(module, cluster_name, None):
+ if hasattr(module, cluster_name):
return getattr(module, cluster_name, None)
+ return
diff --git a/Events/AllEvents/just_events_file.py b/Events/AllEvents/just_events_file.py
new file mode 100644
index 0000000..4401c54
--- /dev/null
+++ b/Events/AllEvents/just_events_file.py
@@ -0,0 +1,13 @@
+import Events.JustEvents.authentication as auths_events
+import Events.JustEvents.events as events_events
+import Events.JustEvents.validations as validations_events
+
+
+events_list = (auths_events, events_events, validations_events)
+
+
+def retrieve_cluster_by_name(cluster_name: str):
+ for module in events_list:
+ if hasattr(module, cluster_name):
+ return getattr(module, cluster_name, None)
+ return
diff --git a/Events/AllEvents/validations/validation/api_events.py b/Events/AllEvents/validations/validation/api_events.py
index ca8aee0..c0bcefb 100644
--- a/Events/AllEvents/validations/validation/api_events.py
+++ b/Events/AllEvents/validations/validation/api_events.py
@@ -3,9 +3,8 @@ from fastapi import Request
from Events.Engine.abstract_class import Event
-from .models import ValidationsPydantic
-from .function_handlers import RetrieveValidation
-
+from .models import ValidationsPydantic, ClusterPydantic, PagePydantic
+from .function_handlers import RetrieveValidation, RetrievePage
# Validation Event
validation_event = Event(
@@ -41,3 +40,39 @@ def get_menu_by_event_function_code(request: Request, data: Any):
menu_event.endpoint_callable = get_menu_by_event_function_code
+
+
+# Cluster Event
+cluster_event = Event(
+ name="cluster_event",
+ key="eed3fe12-cec1-4f35-b43d-62fca0682f73",
+ request_validator=ClusterPydantic,
+ language_models=[],
+ statics=None,
+ description="Get Left Menu of the user",
+)
+
+
+def get_cluster_by_event_function_code(request: Request, data: Any):
+ return RetrievePage.retrieve_cluster(data=data)
+
+
+cluster_event.endpoint_callable = get_cluster_by_event_function_code
+
+
+# Page Event
+page_event = Event(
+ name="page_event",
+ key="",
+ request_validator=PagePydantic,
+ language_models=[],
+ statics=None,
+ description="Get Left Menu of the user",
+)
+
+
+def get_page_by_event_function_code(request: Request, data: Any):
+ return RetrievePage.retrieve_page(data=data)
+
+
+page_event.endpoint_callable = get_page_by_event_function_code
diff --git a/Events/AllEvents/validations/validation/cluster.py b/Events/AllEvents/validations/validation/cluster.py
index 2aeaf86..54df876 100644
--- a/Events/AllEvents/validations/validation/cluster.py
+++ b/Events/AllEvents/validations/validation/cluster.py
@@ -3,6 +3,8 @@ from Events.Engine.abstract_class import CategoryCluster
from .validation import (
ValidationEventMethods,
MenuEventMethods,
+ ClusterEventMethods,
+ PageEventMethods,
)
@@ -14,6 +16,8 @@ ValidationsCluster = CategoryCluster(
endpoints={
"ValidationEventMethods": ValidationEventMethods,
"MenuEventMethods": MenuEventMethods,
+ "ClusterEventMethods": ClusterEventMethods,
+ "PageEventMethods": PageEventMethods,
},
include_in_schema=True,
sub_category=[],
diff --git a/Events/AllEvents/validations/validation/function_handlers.py b/Events/AllEvents/validations/validation/function_handlers.py
index de81701..6ac58c4 100644
--- a/Events/AllEvents/validations/validation/function_handlers.py
+++ b/Events/AllEvents/validations/validation/function_handlers.py
@@ -121,3 +121,94 @@ class RetrieveValidation(BaseRouteModel):
return RedisHeaderRetrieve(**validate_dict).header
elif data.asked_field == "validation":
return RedisValidationRetrieve(**validate_dict).validation
+
+
+class RetrievePage(BaseRouteModel):
+
+ @staticmethod
+ def get_site_cluster(page_name: str):
+ """
+ /dashboard?site=clusterName retrieves clusterName
+ """
+ if page_name:
+ return page_name.split("?")[1].split("=")[1]
+ raise ValueError("Page name not found")
+
+ @classmethod
+ def retrieve_cluster(cls, data: Any):
+ """
+ Retrieve cluster by event function code
+ """
+ reachable_codes = []
+ if cls.context_retriever.token.is_employee:
+ reachable_codes = (
+ cls.context_retriever.token.selected_company.reachable_event_codes
+ )
+ elif cls.context_retriever.token.is_occupant:
+ reachable_codes = (
+ cls.context_retriever.token.selected_occupant.reachable_event_codes
+ )
+ validate_dict = dict(url=data.url, reachable_code=reachable_codes)
+ print("validate_dict", validate_dict)
+ cluster_name = data.get("name")
+ print("cluster_name", cluster_name)
+ raise NotImplementedError("Cluster not found")
+
+ @classmethod
+ def retrieve_page(cls, data: Any):
+ """
+ Retrieve page by event function code
+ """
+ from Events.Engine import CategoryCluster
+ from Events.JustEvents.events_file import retrieve_cluster_by_name
+
+ reachable_codes = []
+ if cls.context_retriever.token.is_employee:
+ reachable_codes = (
+ cls.context_retriever.token.selected_company.reachable_event_codes
+ )
+ elif cls.context_retriever.token.is_occupant:
+ reachable_codes = (
+ cls.context_retriever.token.selected_occupant.reachable_event_codes
+ )
+ cluster_from_all_events = cls.get_site_cluster(page_name=data.page)
+ if not cluster_from_all_events:
+ raise ValueError(f"Cluster not found : {data.page}")
+
+ cluster_name: CategoryCluster = retrieve_cluster_by_name(cluster_from_all_events)
+ if not cluster_name:
+ raise ValueError("Cluster not found")
+
+ page_info = cluster_name.retrieve_page_info().get(data.page, None)
+ if not page_info:
+ raise ValueError("Page not found")
+
+ endpoints: dict = dict(page_info).get("endpoints", {})
+ if not endpoints:
+ raise ValueError("Endpoints not found")
+
+ new_page_info_dict = dict(
+ name=cluster_name.name,
+ prefix=cluster_name.PREFIX,
+ url=dict(page_info).get("url", None),
+ icon=dict(page_info).get("icon", None),
+ page_info=dict(page_info).get("page_info", None),
+ endpoints={},
+ language_models={},
+ instructions={},
+ )
+ for key, event_codes in dict(endpoints).items():
+ if set(event_codes) & set(reachable_codes):
+ language_models = dict(page_info).get("language_models", {})
+ instructions = dict(page_info).get("instructions", {})
+ new_page_info_dict["endpoints"][key] = True
+ if language_models.get(key, None):
+ if key in language_models[key].keys(): # key has sub key blocks inside lang model
+ for key_model, val_model in dict(language_models[key]).items():
+ if key_model in new_page_info_dict["endpoints"].keys():
+ new_page_info_dict["language_models"][key_model] = language_models[key][key_model]
+ else:
+ new_page_info_dict["language_models"][key] = language_models[key]
+ if instructions.get(key, None):
+ new_page_info_dict["instructions"][key] = instructions.get(key, None)
+ return new_page_info_dict
diff --git a/Events/AllEvents/validations/validation/models.py b/Events/AllEvents/validations/validation/models.py
index 9052030..a06c3f4 100644
--- a/Events/AllEvents/validations/validation/models.py
+++ b/Events/AllEvents/validations/validation/models.py
@@ -9,3 +9,11 @@ from pydantic import BaseModel
class ValidationsPydantic(BaseModel):
event_code: str
asked_field: Optional[str] = "all"
+
+
+class ClusterPydantic(BaseModel):
+ name: str
+
+
+class PagePydantic(BaseModel):
+ page: str
diff --git a/Events/AllEvents/validations/validation/validation.py b/Events/AllEvents/validations/validation/validation.py
index 5b45714..92be968 100644
--- a/Events/AllEvents/validations/validation/validation.py
+++ b/Events/AllEvents/validations/validation/validation.py
@@ -9,8 +9,8 @@ from Events.Engine.abstract_class import MethodToEvent
from Events.base_request_model import EndpointBaseRequestModel, ContextRetrievers
from ApiLayers.Middleware.auth_middleware import MiddlewareModule
-from .api_events import validation_event, menu_event
-from .function_handlers import RetrieveValidation
+from .api_events import validation_event, menu_event, cluster_event, page_event
+from .function_handlers import RetrieveValidation, RetrievePage
ValidationEventMethods = MethodToEvent(
@@ -54,12 +54,66 @@ MenuEventMethods = MethodToEvent(
def menu_endpoint(request: Request, data: EndpointBaseRequestModel) -> Dict[str, Any]:
- function = ValidationEventMethods.retrieve_event(
+ function = MenuEventMethods.retrieve_event(
event_function_code=f"{menu_event.key}"
)
data = function.REQUEST_VALIDATOR(**data.data)
- RetrieveValidation.context_retriever = ContextRetrievers(func=validations_endpoint)
+ RetrieveValidation.context_retriever = ContextRetrievers(func=menu_endpoint)
return function.endpoint_callable(request=request, data=data)
MenuEventMethods.endpoint_callable = menu_endpoint
+
+
+# Cluster Event
+ClusterEventMethods = MethodToEvent(
+ name="ClusterEventMethods",
+ events={cluster_event.key: cluster_event},
+ headers=[],
+ errors=[],
+ url="/cluster",
+ method="POST",
+ decorators_list=[MiddlewareModule.auth_required],
+ summary="Get Left Menu of the user",
+ description="Get Left Menu of the user",
+)
+
+
+def cluster_endpoint(
+ request: Request, data: EndpointBaseRequestModel
+) -> Dict[str, Any]:
+ function = ClusterEventMethods.retrieve_event(
+ event_function_code=f"{cluster_event.key}"
+ )
+ data = function.REQUEST_VALIDATOR(**data.data)
+ RetrievePage.context_retriever = ContextRetrievers(func=cluster_endpoint)
+ return function.endpoint_callable(request=request, data=data)
+
+
+ClusterEventMethods.endpoint_callable = cluster_endpoint
+
+
+# Page Event
+PageEventMethods = MethodToEvent(
+ name="PageEventMethods",
+ events={page_event.key: page_event},
+ headers=[],
+ errors=[],
+ url="/page",
+ method="POST",
+ decorators_list=[MiddlewareModule.auth_required],
+ summary="Get Left Menu of the user",
+ description="Get Left Menu of the user",
+)
+
+
+def page_endpoint(request: Request, data: EndpointBaseRequestModel) -> Dict[str, Any]:
+ function = PageEventMethods.retrieve_event(
+ event_function_code=f"{page_event.key}"
+ )
+ data = function.REQUEST_VALIDATOR(**data.data)
+ RetrievePage.context_retriever = ContextRetrievers(func=page_endpoint)
+ return function.endpoint_callable(request=request, data=data)
+
+
+PageEventMethods.endpoint_callable = page_endpoint
\ No newline at end of file
diff --git a/Events/Engine/abstract_class.py b/Events/Engine/abstract_class.py
index 0eda644..2ea7844 100644
--- a/Events/Engine/abstract_class.py
+++ b/Events/Engine/abstract_class.py
@@ -53,6 +53,7 @@ class PageInfo:
"/create?site=AccountCluster": ["/accounts/create"],
},
"""
+
NAME: str
PAGE_URL: str
PAGEINFO: Dict[str, Any]
@@ -262,7 +263,7 @@ class CategoryCluster:
TAGS: list
PREFIX: str
- PAGEINFO: Optional[Dict['str', PageInfo]]
+ PAGEINFO: Optional[Dict["str", PageInfo]]
DESCRIPTION: str
ENDPOINTS: dict[str, MethodToEvent] # {"MethodToEvent": MethodToEvent, ...}
SUBCATEGORY: Optional[List["CategoryCluster"]] # [CategoryCluster, ...]
@@ -277,7 +278,7 @@ class CategoryCluster:
description: str,
endpoints: dict[str, MethodToEvent],
sub_category: list,
- pageinfo: Optional[Dict['str', PageInfo]] = None,
+ pageinfo: Optional[Dict["str", PageInfo]] = None,
include_in_schema: Optional[bool] = True,
is_client: Optional[bool] = False,
):
@@ -344,9 +345,9 @@ class CategoryCluster:
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):
+ 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'):
+ if hasattr(self.PAGEINFO, "as_dict"):
return {"prefix": self.PREFIX, **self.PAGEINFO.as_dict}
return
diff --git a/Events/Engine/set_defaults/prepare_redis_items.py b/Events/Engine/set_defaults/prepare_redis_items.py
index 16dffcc..3e3a26b 100644
--- a/Events/Engine/set_defaults/prepare_redis_items.py
+++ b/Events/Engine/set_defaults/prepare_redis_items.py
@@ -1,4 +1,7 @@
-from ApiLayers.AllConfigs.Redis.configs import RedisCategoryKeys, RedisCategoryPageInfoKeysAction
+from ApiLayers.AllConfigs.Redis.configs import (
+ RedisCategoryKeys,
+ RedisCategoryPageInfoKeysAction,
+)
class PrepareRedisItems:
diff --git a/Events/Engine/set_defaults/setClusters.py b/Events/Engine/set_defaults/setClusters.py
index 4b34990..71a5aca 100644
--- a/Events/Engine/set_defaults/setClusters.py
+++ b/Events/Engine/set_defaults/setClusters.py
@@ -4,7 +4,10 @@ from ApiLayers.ApiServices.Cluster.create_router import (
CreateRouterFromCluster,
CreateEndpointFromCluster,
)
-from ApiLayers.AllConfigs.Redis.configs import RedisCategoryKeys, RedisCategoryPageInfoKeys
+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
@@ -79,14 +82,16 @@ class PrepareEvents(DecoratorModule):
def prepare_page_info(self):
"""
- [SAVE]REDIS => PAGE_MENU_INDEX:PAGE_URL= {...PageInfo}
+ [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
- })
+ 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)
@@ -155,8 +160,7 @@ class SetItems2Redis:
) in RedisCategoryPageInfoKeys.__annotations__.items():
if isinstance(redis_key_type, str):
continue
- RedisActions.delete(list_keys=[f"{redis_values_to_delete}*"]
- )
+ RedisActions.delete(list_keys=[f"{redis_values_to_delete}*"])
# Save MENU_FIRST_LAYER to Redis
redis_list = RedisList(redis_key=RedisCategoryKeys.MENU_FIRST_LAYER)
@@ -219,6 +223,4 @@ class SetItems2Redis:
PrepareRedisItems.PAGE_INFO_KEY
).items():
redis_list = RedisList(redis_key=redis_key)
- RedisActions.set_json(
- list_keys=redis_list.to_list(), value=redis_value
- )
+ RedisActions.set_json(list_keys=redis_list.to_list(), value=redis_value)