From ab76e972e3220c685fcf20751dffa465b7162018 Mon Sep 17 00:00:00 2001 From: berkay Date: Mon, 13 Jan 2025 22:55:56 +0300 Subject: [PATCH] schemas updated --- AllConfigs/Token/config.py | 71 +++++++++++++++++++++++++++++++++++ AllConfigs/main.py | 7 ++++ ErrorHandlers/__init__.py | 0 Schemas/api/encrypter.py | 2 +- Schemas/building/build.py | 24 ++++++------ Schemas/company/company.py | 18 ++++----- Schemas/company/department.py | 2 +- Schemas/company/employee.py | 8 ++-- Schemas/event/event.py | 6 +-- Schemas/identity/identity.py | 22 +++++------ Schemas/others/enums.py | 2 +- Schemas/rules/rules.py | 4 +- 12 files changed, 121 insertions(+), 45 deletions(-) create mode 100644 AllConfigs/Token/config.py create mode 100644 ErrorHandlers/__init__.py diff --git a/AllConfigs/Token/config.py b/AllConfigs/Token/config.py new file mode 100644 index 0000000..73e6364 --- /dev/null +++ b/AllConfigs/Token/config.py @@ -0,0 +1,71 @@ +import datetime + + +class ApiStatic: + PLACEHOLDER = "https://s.tmimgcdn.com/scr/800x500/276800/building-home-nature-logo-vector-template-3_276851-original.jpg" + FORGOT_LINK = "https://www.evyos.com.tr/password/create?tokenUrl=" + BLACKLIST_LINK = "https://www.evyos.com.tr/support/unknown-login-notice/" + APP_DIR = "/home/berkay/git-evyos/api-managment-backend/" + + @classmethod + def forgot_link(cls, forgot_key): + return cls.FORGOT_LINK + forgot_key + + @classmethod + def blacklist_login(cls, record_id): + return cls.BLACKLIST_LINK + record_id + + +class Auth: + ACCESS_EMAIL_EXT = "evyos.com.tr" + ACCESS_TOKEN_TAG = "evyos-session-key" + REFRESHER_TOKEN_TAG = "eys_token_refresher" + SECRET_KEY_72 = ( + "t3sUAmjTGeTgDc6dAUrB41u2SNg0ZHzj4HTjem95y3fRH1nZXOHIBj163kib6iLybT0gLaxq" + ) + SECRET_KEY_96 = "7ct8VpiwaP1hR2bVSet4dEEAgepuTZUOnO1QxOgKyDqBR2PkqNhcubSrbUUigQKoQA1PBoeeQn5ZCo24pESmVtKs76nA4EKq" + SECRET_KEY_144 = ( + "R2p5Rq6KCr6PCfjFYUeH1keF2VWHFEuqINVjBGGnvRA2m10pYUKqfOtIGBcaj2v5wZmElDndzSHGOS7roQsoTelPSok0" + + "qqMucurMWE0FGexGpFuJkfPEm9tH2OjMOqegvEetpSVywH0W4Kh4" + ) + + ALGORITHM = "HS256" + ACCESS_TOKEN_LENGTH: int = 90 + REFRESHER_TOKEN_LENGTH: int = 144 + PASSWORD_EXPIRE_DAY = datetime.timedelta(days=30) + TOKEN_EXPIRE_MINUTES_1 = datetime.timedelta(minutes=1) + TOKEN_EXPIRE_MINUTES_15 = datetime.timedelta(minutes=15) + TOKEN_EXPIRE_MINUTES_30 = datetime.timedelta(minutes=30) + TOKEN_EXPIRE_DAY_1 = datetime.timedelta(days=1) + TOKEN_EXPIRE_DAY_5 = datetime.timedelta(days=5) + TOKEN_EXPIRE_DAY_15 = datetime.timedelta(days=15) + TOKEN_EXPIRE_DAY_30 = datetime.timedelta(days=30) + + +class Routers: + NO_TOKEN_REQUIRES = [ + "/", + "/metrics", + "/openapi.json", + "/docs", + "/redoc", + "/auth/login", + "/favicon.ico", + "/docs/oauth2-redirect", + "/authentication/select", + "/authentication/login", + "/authentication/logout", + "/authentication/refresher", + "/authentication/refresh", + "/authentication/disconnect", + "/authentication/create_password", + "/authentication/reset_password", + "/authentication/forgot", + "/authentication/valid", + ] + NO_EVENT_REQUIRES = [ + "/access/endpoints/available", + "/access/endpoint/available", + "/validations/endpoint", + "/authentication/avatar", + ] diff --git a/AllConfigs/main.py b/AllConfigs/main.py index 96412a8..a1cf139 100644 --- a/AllConfigs/main.py +++ b/AllConfigs/main.py @@ -1,9 +1,16 @@ + class HostConfig: MAIN_HOST = "10.10.2.36" # http://10.10.2.36 EMAIL_HOST = "10.10.2.34" # http://10.10.2.34 class MainConfig: + + APP_NAME = "evyos-web-api-gateway" + TITLE = "WAG API Web Api Gateway" + DESCRIPTION = "This api is serves as web api gateway only to evyos web services." + APP_URL = "https://www.wag.eys.gen.tr" + DATETIME_FORMAT = "YYYY-MM-DD HH:mm:ss Z" DATETIME_FORMAT_JS = "YYYY-MM-DD HH:mm:ss +0" diff --git a/ErrorHandlers/__init__.py b/ErrorHandlers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Schemas/api/encrypter.py b/Schemas/api/encrypter.py index 1924ba0..84bc8d2 100644 --- a/Schemas/api/encrypter.py +++ b/Schemas/api/encrypter.py @@ -6,7 +6,7 @@ from sqlalchemy import String from sqlalchemy.orm import mapped_column, Mapped from cryptography.fernet import Fernet, MultiFernet -from databases.sql_models.core_mixin import CrudCollection +from Services.PostgresDb import CrudCollection class CrypterEngine(CrudCollection): diff --git a/Schemas/building/build.py b/Schemas/building/build.py index cd204ef..4b63095 100644 --- a/Schemas/building/build.py +++ b/Schemas/building/build.py @@ -1,5 +1,5 @@ -from datetime import datetime, timedelta -from typing import List, Optional, Union +from datetime import timedelta +from typing import List, Union from fastapi import HTTPException, status from sqlalchemy.orm import mapped_column, relationship, Mapped @@ -16,17 +16,17 @@ from sqlalchemy import ( or_, ) -from api_library.date_time_actions.date_functions import system_arrow +from ApiLibrary.date_time_actions.date_functions import system_arrow from Services.PostgresDb import CrudCollection -from databases.extensions.selector_classes import SelectActionWithEmployee -from api_validations.validations_request import ( +from ApiValidations.Request import ( InsertBuild, InsertBuildParts, InsertBuildLivingSpace, UpdateBuild, ) -from api_objects.auth.token_objects import EmployeeTokenObject, OccupantTokenObject -from databases.language_models.building.build import ( +# from databases.extensions.selector_classes import SelectActionWithEmployee +# from api_objects.auth.token_objects import EmployeeTokenObject, OccupantTokenObject +from LanguageModels.Database.building.build import ( BuildTypesLanguageModel, Part2EmployeeLanguageModel, BuildPartsLanguageModel, @@ -246,7 +246,7 @@ class Build(CrudCollection, SelectActionWithEmployee): @classmethod def create_action(cls, data: InsertBuild, token): - from databases import Addresses + from Schemas import Addresses data_dict = data.excluded_dump() data_dict["address_id"] = None @@ -280,7 +280,7 @@ class Build(CrudCollection, SelectActionWithEmployee): @classmethod def update_action(cls, data: UpdateBuild, build_uu_id: str, token): - from databases import Addresses + from Schemas import Addresses print("data_dict", data.dump()) data_dict = data.excluded_dump() @@ -427,7 +427,7 @@ class BuildParts(CrudCollection): @classmethod def create_action(cls, data: InsertBuildParts, token): - from databases import ApiEnumDropdown + from Schemas import ApiEnumDropdown data_dict = data.dump() build_from_duty = Build.select_action( @@ -565,7 +565,7 @@ class BuildLivingSpace(CrudCollection): data: dict, token_dict: Union[EmployeeTokenObject, OccupantTokenObject], ): - from databases import Services, OccupantTypes + from Schemas import Services, OccupantTypes from api_events.events.events.events_bind_modules import ( ModulesBindOccupantEventMethods, ) @@ -596,7 +596,7 @@ class BuildLivingSpace(CrudCollection): def find_living_from_customer_id( cls, customer_id, process_date, add_days: int = 32 ): - from api_library.date_time_actions.date_functions import system_arrow + from ApiLibrary.date_time_actions.date_functions import system_arrow formatted_date = system_arrow.get(str(process_date)) living_spaces = cls.filter_all( diff --git a/Schemas/company/company.py b/Schemas/company/company.py index 627124c..cda857d 100644 --- a/Schemas/company/company.py +++ b/Schemas/company/company.py @@ -1,6 +1,5 @@ from fastapi.exceptions import HTTPException -from databases.sql_models.core_mixin import CrudCollection from sqlalchemy import ( String, @@ -14,19 +13,19 @@ from sqlalchemy import ( ) from sqlalchemy.orm import mapped_column, relationship, Mapped -from api_configs import RelationAccess -from databases.extensions import SelectAction -from api_validations.validations_request import ( +# from databases.extensions import SelectAction +from ApiValidations.Request import ( InsertCompany, UpdateCompany, MatchCompany2Company, ) from api_objects.auth.token_objects import EmployeeTokenObject -from databases.language_models.company.company import ( +from LanguageModels.Database.company.company import ( RelationshipDutyCompanyLanguageModel, CompaniesLanguageModel, # CompanyDutiesLanguageModel, ) +from Services.PostgresDb import CrudCollection class RelationshipDutyCompany(CrudCollection): @@ -44,7 +43,6 @@ class RelationshipDutyCompany(CrudCollection): __tablename__ = "relationship_duty_company" __exclude__fields__ = [] - __access_by__ = RelationAccess.SuperAccessList __language_model__ = RelationshipDutyCompanyLanguageModel owner_id: Mapped[int] = mapped_column( @@ -75,7 +73,7 @@ class RelationshipDutyCompany(CrudCollection): @classmethod def match_company_to_company_commercial(cls, data: MatchCompany2Company, token): - from databases import ( + from Schemas import ( Duties, ) @@ -123,7 +121,7 @@ class RelationshipDutyCompany(CrudCollection): @classmethod def match_company_to_company_organization(cls, data: MatchCompany2Company, token): - from databases import ( + from Schemas import ( Duties, ) @@ -251,7 +249,7 @@ class Companies(CrudCollection, SelectAction): @classmethod def create_action(cls, data: InsertCompany, token: EmployeeTokenObject): - from databases import Addresses, Duties + from Schemas import Addresses, Duties data_dict = data.model_dump() if cls.filter_one(cls.tax_no == str(data.tax_no).strip(), system=True).data: @@ -298,7 +296,7 @@ class Companies(CrudCollection, SelectAction): @classmethod def update_action(cls, data: UpdateCompany, token): - from databases import ( + from Schemas import ( Addresses, ) diff --git a/Schemas/company/department.py b/Schemas/company/department.py index 6c3e31d..74da05c 100644 --- a/Schemas/company/department.py +++ b/Schemas/company/department.py @@ -1,7 +1,7 @@ from sqlalchemy import String, Integer, ForeignKey, Index, Boolean, Identity from sqlalchemy.orm import mapped_column, Mapped -from databases.sql_models.core_mixin import CrudCollection +from Services.PostgresDb import CrudCollection class Departments(CrudCollection): diff --git a/Schemas/company/employee.py b/Schemas/company/employee.py index 8411ddf..dd892ca 100644 --- a/Schemas/company/employee.py +++ b/Schemas/company/employee.py @@ -6,15 +6,15 @@ from sqlalchemy import ( ) from sqlalchemy.orm import mapped_column, Mapped -from databases.language_models.company.employee import ( +from LanguageModels.Database.company.employee import ( StaffLanguageModel, EmployeesLanguageModel, EmployeeHistoryLanguageModel, EmployeesSalariesLanguageModel, ) -from databases.sql_models.core_mixin import CrudCollection +from Services.PostgresDb import CrudCollection -from api_validations.validations_request import InsertCompanyEmployees +from ApiValidations.Request import InsertCompanyEmployees class Staff(CrudCollection): @@ -47,7 +47,7 @@ class Staff(CrudCollection): @classmethod def create_action(cls, data: InsertCompanyEmployees): - from databases import Duties + from Schemas import Duties data_dict = data.model_dump() if duty := Duties.find_one(uu_id=data.duty_uu_id): diff --git a/Schemas/event/event.py b/Schemas/event/event.py index ea4b7a1..2a85a6e 100644 --- a/Schemas/event/event.py +++ b/Schemas/event/event.py @@ -1,5 +1,5 @@ -from databases.sql_models.core_mixin import CrudCollection -from databases.language_models.event.event import ( +from Services.PostgresDb import CrudCollection +from LanguageModels.Database.event.event import ( EventsLanguageModel, ModulesLanguageModel, ServicesLanguageModel, @@ -122,7 +122,7 @@ class Services(CrudCollection): @classmethod def retrieve_service_via_occupant_code(cls, occupant_code): - from databases import OccupantTypes + from Schemas import OccupantTypes occupant_type = OccupantTypes.filter_by_one( system=True, diff --git a/Schemas/identity/identity.py b/Schemas/identity/identity.py index 49399be..365782b 100644 --- a/Schemas/identity/identity.py +++ b/Schemas/identity/identity.py @@ -16,13 +16,14 @@ from sqlalchemy import ( ) from sqlalchemy.orm import mapped_column, relationship, Mapped -from api_library.date_time_actions.date_functions import system_arrow -from api_configs import Auth, ApiStatic, RelationAccess -from databases.sql_models.core_mixin import CrudCollection -from databases.extensions import SelectAction, SelectActionWithEmployee -from databases.extensions.auth import UserLoginModule -from api_validations.validations_request import InsertUsers, InsertPerson -from databases.language_models.identity.identity import ( +from ApiLibrary.date_time_actions.date_functions import system_arrow +from AllConfigs.Token.config import Auth, ApiStatic + +from Services.PostgresDb import CrudCollection +# from databases.extensions import SelectAction, SelectActionWithEmployee +# from databases.extensions.auth import UserLoginModule +from ApiValidations.Request import InsertUsers, InsertPerson +from LanguageModels.Database.identity.identity import ( UsersTokensLanguageModel, UsersLanguageModel, PeopleLanguageModel, @@ -197,7 +198,7 @@ class Users(CrudCollection, UserLoginModule, SelectAction): } def get_employee_and_duty_details(self): - from databases import Employees, Duties + from Schemas import Employees, Duties found_person = People.filter_one( People.id == self.person_id, @@ -234,7 +235,7 @@ class Users(CrudCollection, UserLoginModule, SelectAction): } def get_main_domain_and_other_domains(self, get_main_domain: bool = True): - from databases import MongoQueryIdentity + from Schemas import MongoQueryIdentity query_engine = MongoQueryIdentity(company_uuid=self.related_company) domain_via_user = query_engine.get_domain_via_user(user_uu_id=str(self.uu_id)) @@ -253,7 +254,6 @@ class RelationshipDutyPeople(CrudCollection): __tablename__ = "relationship_duty_people" __exclude__fields__ = [] - __access_by__ = RelationAccess.SuperAccessList __language_model__ = RelationshipDutyPeopleLanguageModel company_id: Mapped[int] = mapped_column( @@ -374,7 +374,7 @@ class People(CrudCollection, SelectAction): @classmethod def create_action(cls, data: InsertPerson, token): - from databases import Duties + from Schemas import Duties token_duties_id, token_company_id = ( token.selected_company.duty_id, diff --git a/Schemas/others/enums.py b/Schemas/others/enums.py index 472e750..9a1e9a3 100644 --- a/Schemas/others/enums.py +++ b/Schemas/others/enums.py @@ -9,7 +9,7 @@ from sqlalchemy.orm import ( Mapped, mapped_column, ) -from databases.sql_models.core_mixin import CrudCollection +from Services.PostgresDb import CrudCollection class ApiEnumDropdown(CrudCollection): diff --git a/Schemas/rules/rules.py b/Schemas/rules/rules.py index f8e91e2..95285a3 100644 --- a/Schemas/rules/rules.py +++ b/Schemas/rules/rules.py @@ -1,8 +1,8 @@ from sqlalchemy import String from sqlalchemy.orm import mapped_column, Mapped -from databases.language_models.rules.rules import EndpointRestrictionLanguageModel -from databases.sql_models.core_mixin import CrudCollection +from LanguageModels.Database.rules.rules import EndpointRestrictionLanguageModel +from Services.PostgresDb import CrudCollection class EndpointRestriction(CrudCollection):