diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 8dc4e64..ac93aeb 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -7,26 +7,14 @@
-
-
-
-
-
-
-
+
+
+
-
-
-
-
+
-
-
-
-
-
diff --git a/ApiLayers/AllConfigs/Redis/configs.py b/ApiLayers/AllConfigs/Redis/configs.py
index 0f80abd..dba4277 100644
--- a/ApiLayers/AllConfigs/Redis/configs.py
+++ b/ApiLayers/AllConfigs/Redis/configs.py
@@ -11,11 +11,15 @@ class WagRedis:
@classmethod
def as_dict(cls):
return dict(
- host=WagRedis.REDIS_HOST, password=WagRedis.REDIS_PASSWORD,
- port=WagRedis.REDIS_PORT, db=WagRedis.REDIS_DB,
+ host=WagRedis.REDIS_HOST,
+ password=WagRedis.REDIS_PASSWORD,
+ port=WagRedis.REDIS_PORT,
+ db=WagRedis.REDIS_DB,
)
+
+
class RedisValidationKeys:
ENDPOINTS: str = "ENDPOINTS"
VALIDATIONS: str = "VALIDATIONS"
@@ -30,6 +34,7 @@ class RedisValidationKeys:
# REQUEST: str = "REQUEST"
# VALIDATION_USER: str = "VALIDATION_USER"
+
class RedisAuthKeys:
AUTH: str = "AUTH"
OCCUPANT: str = "OCCUPANT"
@@ -45,3 +50,19 @@ class RedisCategoryKeys:
MENU_FIRST_LAYER: str = "MENU_FIRST_LAYER"
PAGE_MAPPER: str = "PAGE_MAPPER"
MENU_MAPPER: str = "MENU_MAPPER"
+
+
+class RedisValidationKeysAction:
+ # LANGUAGE_MODELS:DYNAMIC:VALIDATIONS:
+ dynamic_validation_key: str = f"{RedisValidationKeys.LANGUAGE_MODELS}:{RedisValidationKeys.DYNAMIC}:{RedisValidationKeys.VALIDATIONS}"
+ # LANGUAGE_MODELS:DYNAMIC:HEADERS:REQUEST
+ dynamic_header_request_key: str = f"{RedisValidationKeys.LANGUAGE_MODELS}:{RedisValidationKeys.DYNAMIC}:{RedisValidationKeys.HEADERS}:{RedisValidationKeys.REQUESTS}"
+ # LANGUAGE_MODELS:DYNAMIC:HEADERS:RESPONSE
+ dynamic_header_response_key: str = f"{RedisValidationKeys.LANGUAGE_MODELS}:{RedisValidationKeys.DYNAMIC}:{RedisValidationKeys.HEADERS}:{RedisValidationKeys.RESPONSES}"
+ # LANGUAGE_MODELS:STATIC:ERRORCODES:
+ static_error_code_key: str = f"{RedisValidationKeys.LANGUAGE_MODELS}:{RedisValidationKeys.STATIC}:{RedisValidationKeys.ERRORCODES}"
+ # LANGUAGE_MODELS:STATIC:RESPONSES:
+ static_response_key: str = f"{RedisValidationKeys.LANGUAGE_MODELS}:{RedisValidationKeys.STATIC}:{RedisValidationKeys.RESPONSES}"
+ # LANGUAGE_MODELS:STATIC:REQUESTS:
+ static_request_key: str = f"{RedisValidationKeys.LANGUAGE_MODELS}:{RedisValidationKeys.STATIC}:{RedisValidationKeys.REQUESTS}"
+
diff --git a/ApiLayers/ApiValidations/Response/default_response.py b/ApiLayers/ApiValidations/Response/default_response.py
index 4803019..04a7508 100644
--- a/ApiLayers/ApiValidations/Response/default_response.py
+++ b/ApiLayers/ApiValidations/Response/default_response.py
@@ -12,16 +12,13 @@ class BaseEndpointResponse:
@property
def response(self) -> Optional[dict]:
from Services.Redis import RedisActions
- from ApiLayers.AllConfigs.Redis.configs import RedisValidationKeys
+ from ApiLayers.AllConfigs.Redis.configs import RedisValidationKeysAction
- language_model_key = (
- f"{RedisValidationKeys.LANGUAGE_MODELS}:{RedisValidationKeys.RESPONSES}"
- )
language_model = RedisActions.get_json(
- list_keys=[language_model_key, self.code, self.lang]
+ list_keys=[RedisValidationKeysAction.static_response_key, self.code, self.lang]
)
if language_model.status:
- return language_model.first.as_dict
+ return language_model.first
return {"message": f"{self.code} -> Language model not found"}
diff --git a/ApiLayers/LanguageModels/Request/Auth/login.py b/ApiLayers/LanguageModels/Request/Auth/login.py
index 6c7178d..1f3da16 100644
--- a/ApiLayers/LanguageModels/Request/Auth/login.py
+++ b/ApiLayers/LanguageModels/Request/Auth/login.py
@@ -14,4 +14,4 @@ LoginRequestLanguageModel: Dict[str, Dict[str, str]] = {
"password": "Password",
"remember_me": "Remember Me",
},
-}
\ No newline at end of file
+}
diff --git a/ApiLayers/LanguageModels/Request/__init__.py b/ApiLayers/LanguageModels/Request/__init__.py
index 8885794..0c4181e 100644
--- a/ApiLayers/LanguageModels/Request/__init__.py
+++ b/ApiLayers/LanguageModels/Request/__init__.py
@@ -1,5 +1,3 @@
from .Auth.login import LoginRequestLanguageModel
-__all__ = [
- "LoginRequestLanguageModel"
- ]
\ No newline at end of file
+__all__ = ["LoginRequestLanguageModel"]
diff --git a/ApiLayers/LanguageModels/set_defaults/language_setters.py b/ApiLayers/LanguageModels/set_defaults/language_setters.py
index 35975ad..df87edb 100644
--- a/ApiLayers/LanguageModels/set_defaults/language_setters.py
+++ b/ApiLayers/LanguageModels/set_defaults/language_setters.py
@@ -20,7 +20,7 @@ class SetDefaultLanguageModelsRedis:
return f"\nPrepareLanguageModels:\n\n{self.std_out}"
def set_all(self):
-
+
# RedisActions.delete(list_keys=["*"])
RedisActions.delete(list_keys=[f"{RedisValidationKeys.LANGUAGE_MODELS}:*"])
@@ -29,8 +29,10 @@ class SetDefaultLanguageModelsRedis:
for code, dict_to_set in response.items():
# [SAVE]REDIS => LANGUAGE_MODELS:STATIC:RESPONSES:{ResponseCode}:tr = {...}
redis_key = f"{RedisValidationKeys.LANGUAGE_MODELS}:{RedisValidationKeys.STATIC}"
- set_key = f"{redis_key}:{RedisValidationKeys.RESPONSES}:{code}:{lang}"
- RedisActions.set_json(list_keys=[set_key], value=dict_to_set)
+ set_key = (
+ f"{redis_key}:{RedisValidationKeys.RESPONSES}:{code}:{lang}"
+ )
+ RedisActions.set_json(list_keys=[set_key], value=dict_to_set[lang])
self.std_out += f"Language Response Models are set to Redis\n"
for response in self.errors_list:
@@ -39,7 +41,7 @@ class SetDefaultLanguageModelsRedis:
# [SAVE]REDIS => LANGUAGE_MODELS:STATIC:ERRORCODES:{ErrorCode}:en = {...}
redis_key = f"{RedisValidationKeys.LANGUAGE_MODELS}:{RedisValidationKeys.STATIC}"
set_key = f"{redis_key}:{code}:{lang}"
- RedisActions.set_json(list_keys=[set_key], value=dict_to_set)
+ RedisActions.set_json(list_keys=[set_key], value=dict_to_set[lang])
self.std_out += f"Language Error Models are set to Redis\n"
@@ -66,7 +68,9 @@ class SetClusterLanguageModelsRedis:
for lang_model in list_of_lang_models:
for lang in list(LanguageConfig.SUPPORTED_LANGUAGES):
if not lang_model.get(lang, None):
- raise ValueError(f"Language model for {lang} not found in {lang_model}")
+ raise ValueError(
+ f"Language model for {lang} not found in {lang_model}"
+ )
if lang not in merged_lang_models:
merged_lang_models[lang] = lang_model[lang]
else:
@@ -74,15 +78,28 @@ class SetClusterLanguageModelsRedis:
return merged_lang_models
def set_models_from_cluster(self):
- # iterate(ClusterToMethod) to set all models by pairing function codes
+ """
+ iterate(ClusterToMethod) to set all models by pairing function codes
+
+ """
for cluster_control in self.cluster_controller_group.imports:
self.std_out += f"Setting models from cluster : {cluster_control.name}\n"
for endpoint in cluster_control.category_cluster.ENDPOINTS.values():
for key_event, event in endpoint.EVENTS.items():
- merged_language_dict = self.merge_language_dicts(event.LANGUAGE_MODELS)
- request_validation = getattr(event.REQUEST_VALIDATOR, 'model_fields', None)
- response_validation = getattr(event.RESPONSE_VALIDATOR, 'model_fields', None)
- objects_missing = bool(request_validation) and bool(response_validation) and bool(merged_language_dict)
+ merged_language_dict = self.merge_language_dicts(
+ event.LANGUAGE_MODELS
+ )
+ request_validation = getattr(
+ event.REQUEST_VALIDATOR, "model_fields", None
+ )
+ response_validation = getattr(
+ event.RESPONSE_VALIDATOR, "model_fields", None
+ )
+ objects_missing = (
+ bool(request_validation)
+ and bool(response_validation)
+ and bool(merged_language_dict)
+ )
if not objects_missing:
continue
if merged_language_dict:
@@ -94,21 +111,33 @@ class SetClusterLanguageModelsRedis:
self.std_out += f"Request/Response/Language validation model is set {key_event}\n"
def set_all(self):
- # Set all language models from cluster list by pairing event code and models
+ """
+ Set all language models from cluster list by pairing event code and models
+
+ """
self.set_models_from_cluster()
if self.events_lm_dict and self.events_rq_dict:
"""
[SAVE]REDIS => LANGUAGE_MODELS:DYNAMIC:HEADERS:REQUEST:{FunctionCode}:tr = {...}
Get Request BaseModel pydantic model_fields of each event and set headers which are included in model_fields
"""
- for lang in list(LanguageConfig.SUPPORTED_LANGUAGES): # Iterate(languages ["tr", "en"])
- for key_field in self.events_rq_dict.keys(): # Iterate(function_code)
+ for lang in list(
+ LanguageConfig.SUPPORTED_LANGUAGES
+ ): # Iterate(languages ["tr", "en"])
+ for key_field in self.events_rq_dict.keys(): # Iterate(function_code)
request_model = self.events_rq_dict[key_field]
if not request_model:
- self.std_out += f"Request validation model not found for {key_field}\n"
+ self.std_out += (
+ f"Request validation model not found for {key_field}\n"
+ )
continue
- if key_field not in self.events_rq_dict or key_field not in self.events_lm_dict:
- self.std_out += f"Request language model not found for {key_field}\n"
+ if (
+ key_field not in self.events_rq_dict
+ or key_field not in self.events_lm_dict
+ ):
+ self.std_out += (
+ f"Request language model not found for {key_field}\n"
+ )
continue
value_to_set = {}
@@ -117,21 +146,30 @@ class SetClusterLanguageModelsRedis:
for key in request_model.keys():
value_to_set[key] = self.events_lm_dict[key_field][lang][key]
RedisActions.set_json(list_keys=[set_key], value=value_to_set)
-
- self.std_out += f"Language Request Headers are set to Redis\n"
+
+ self.std_out += f"Language Request Headers are set to Redis\n"
if self.events_lm_dict and self.events_rs_dict:
"""
[SAVE]REDIS => LANGUAGE_MODELS:DYNAMIC:HEADERS:RESPONSE:{FunctionCode}:en = {...}
Get Response BaseModel pydantic model_fields of each event and set headers which are included in model_fields
"""
- for lang in list(LanguageConfig.SUPPORTED_LANGUAGES): # Iterate(languages ["tr", "en"])
- for key_field in self.events_rs_dict.keys(): # Iterate(function_code)
+ for lang in list(
+ LanguageConfig.SUPPORTED_LANGUAGES
+ ): # Iterate(languages ["tr", "en"])
+ for key_field in self.events_rs_dict.keys(): # Iterate(function_code)
response_model = self.events_rs_dict[key_field]
if not response_model:
- self.std_out += f"Response validation model not found for {key_field}\n"
+ self.std_out += (
+ f"Response validation model not found for {key_field}\n"
+ )
continue
- if key_field not in self.events_rs_dict or key_field not in self.events_lm_dict:
- self.std_out += f"Response language model not found for {key_field}\n"
+ if (
+ key_field not in self.events_rs_dict
+ or key_field not in self.events_lm_dict
+ ):
+ self.std_out += (
+ f"Response language model not found for {key_field}\n"
+ )
continue
value_to_set = {}
@@ -140,5 +178,5 @@ class SetClusterLanguageModelsRedis:
for key in response_model.keys():
value_to_set[key] = self.events_lm_dict[key_field][lang][key]
RedisActions.set_json(list_keys=[set_key], value=value_to_set)
-
- self.std_out += f"Language Response Headers are set to Redis\n"
+
+ self.std_out += f"Language Response Headers are set to Redis\n"
diff --git a/ApiLayers/Schemas/identity/identity.py b/ApiLayers/Schemas/identity/identity.py
index d7e9608..f1df41d 100644
--- a/ApiLayers/Schemas/identity/identity.py
+++ b/ApiLayers/Schemas/identity/identity.py
@@ -1,5 +1,4 @@
from datetime import timedelta
-
from fastapi import HTTPException
from sqlalchemy import (
String,
@@ -16,17 +15,16 @@ from sqlalchemy import (
)
from sqlalchemy.orm import mapped_column, relationship, Mapped
+from Services.PostgresDb import CrudCollection
+from config import ApiStatic
+
from ApiLayers.ApiLibrary.date_time_actions.date_functions import system_arrow
from ApiLayers.ApiLibrary.extensions.select import (
SelectAction,
SelectActionWithEmployee,
)
-
from ApiLayers.AllConfigs.Token.config import Auth
from ApiLayers.ApiServices.Login.user_login_handler import UserLoginModule
-from Services.PostgresDb import CrudCollection
-from config import ApiStatic
-
from ApiLayers.ApiValidations.Request import InsertUsers, InsertPerson
from ApiLayers.LanguageModels.Database.identity.identity import (
UsersTokensLanguageModel,
diff --git a/DockerApiServices/InitServiceApi/create_all_dependecies.py b/DockerApiServices/InitServiceApi/create_all_dependecies.py
index b971d75..3df56ae 100644
--- a/DockerApiServices/InitServiceApi/create_all_dependecies.py
+++ b/DockerApiServices/InitServiceApi/create_all_dependecies.py
@@ -6,7 +6,10 @@ Handles dynamic route creation based on configurations.
from Events.Engine.set_defaults.run import get_cluster_controller_group
from Events.Engine.set_defaults.setClusters import SetItems2Redis, PrepareEvents
-from ApiLayers.LanguageModels.set_defaults.language_setters import SetClusterLanguageModelsRedis, SetDefaultLanguageModelsRedis
+from ApiLayers.LanguageModels.set_defaults.language_setters import (
+ SetClusterLanguageModelsRedis,
+ SetDefaultLanguageModelsRedis,
+)
from ApiLayers.LanguageModels.Response.all_responses import all_response_list
from ApiLayers.LanguageModels.Errors.all_errors import all_errors_list
@@ -23,7 +26,8 @@ class SetRedisDefaults:
"""
cluster_list = get_cluster_controller_group()
default_dict = dict(
- set_response_languages_list=all_response_list, set_errors_languages_list=all_errors_list,
+ set_response_languages_list=all_response_list,
+ set_errors_languages_list=all_errors_list,
)
prepare_events = PrepareEvents(cluster_controller_group=cluster_list)
SetItems2Redis(prepare_events=prepare_events)
diff --git a/Events/AllEvents/authentication/auth/auth.py b/Events/AllEvents/authentication/auth/auth.py
index c60654b..b103f66 100644
--- a/Events/AllEvents/authentication/auth/auth.py
+++ b/Events/AllEvents/authentication/auth/auth.py
@@ -186,7 +186,9 @@ AuthenticationChangePasswordEventMethods.endpoint_callable = (
AuthenticationCreatePasswordEventMethods = MethodToEvent(
name="AuthenticationCreatePasswordEventMethods",
- events={authentication_create_password_event.key: authentication_create_password_event},
+ events={
+ authentication_create_password_event.key: authentication_create_password_event
+ },
headers=[],
errors=[],
url="/create-password",
diff --git a/Events/AllEvents/authentication/auth/function_handlers.py b/Events/AllEvents/authentication/auth/function_handlers.py
index f3fb4df..22083e8 100644
--- a/Events/AllEvents/authentication/auth/function_handlers.py
+++ b/Events/AllEvents/authentication/auth/function_handlers.py
@@ -231,7 +231,7 @@ class AuthenticationFunctions:
# Get token from login module
user_login_module = UserLoginModule(request=request)
user_login_module.login_user_via_credentials(access_data=data)
- user_login_module.language = "tr"
+ user_login_module.language = "en"
# Return response with token and headers
return EndpointSuccessResponse(
@@ -244,23 +244,20 @@ class AuthenticationFunctions:
Handle selection of company or occupant type
{"data": {"build_living_space_uu_id": ""}} | {"data": {"company_uu_id": ""}}
"""
+ selection_dict = dict(
+ request=cls.context_retriever.request,
+ token_dict=cls.context_retriever.token,
+ data=data,
+ )
if cls.context_retriever.token.is_employee:
- if Handlers.handle_employee_selection(
- request=cls.context_retriever.request,
- data=data,
- token_dict=cls.context_retriever.token,
- ):
+ if Handlers.handle_employee_selection(**selection_dict):
return EndpointSuccessResponse(
code="LOGIN_SELECT", lang=cls.context_retriever.token.lang
).as_dict(
data={"selected": data.company_uu_id, **cls.context_retriever.base}
)
elif cls.context_retriever.token.is_occupant:
- if Handlers.handle_occupant_selection(
- request=cls.context_retriever.request,
- data=data,
- token_dict=cls.context_retriever.token,
- ):
+ if Handlers.handle_occupant_selection(**selection_dict):
return EndpointSuccessResponse(
code="LOGIN_SELECT", lang=cls.context_retriever.token.lang
).as_dict(