diff --git a/api_events/events/address/address.py b/api_events/events/address/address.py index ac980ef..a6df64b 100644 --- a/api_events/events/address/address.py +++ b/api_events/events/address/address.py @@ -23,8 +23,10 @@ from api_objects.auth.token_objects import EmployeeTokenObject, OccupantTokenObj class AddressListEventMethods(MethodToEvent): event_type = "SELECT" + event_description = "List Address records" + event_category = "Address" __event_keys__ = { - "9c251d7d-da70-4d63-a72c-e69c26270442": "address_list_super_user", # 1 + "9c251d7d-da70-4d63-a72c-e69c26270442": "address_list_super_user", "52afe375-dd95-4f4b-aaa2-4ec61bc6de52": "address_list_employee", } @@ -32,7 +34,7 @@ class AddressListEventMethods(MethodToEvent): def address_list_super_user(cls, list_options: ListOptions, token_dict): from sqlalchemy import select - post_code_list = RelationshipEmployee2PostCode.filter_active( + post_code_list = RelationshipEmployee2PostCode.filter_all( RelationshipEmployee2PostCode.company_id == token_dict.selected_company.company_id, ).data diff --git a/api_events/events/decision_book/decision_book_decision_book_items.py b/api_events/events/decision_book/decision_book_decision_book_items.py index 70a53ba..33d5b9d 100644 --- a/api_events/events/decision_book/decision_book_decision_book_items.py +++ b/api_events/events/decision_book/decision_book_decision_book_items.py @@ -153,7 +153,6 @@ class DecisionBookDecisionBookItemsCreateEventMethods(MethodToEvent): part_key = str(build_part_single.due_part_key).upper() if part_key not in payment_return_dict: payment_return_dict[part_key] = payment_amount - return payment_return_dict @classmethod diff --git a/api_events/events/decision_book/decision_book_decision_book_items_debits.py b/api_events/events/decision_book/decision_book_decision_book_items_debits.py index 0656d62..96ca46f 100644 --- a/api_events/events/decision_book/decision_book_decision_book_items_debits.py +++ b/api_events/events/decision_book/decision_book_decision_book_items_debits.py @@ -1,5 +1,103 @@ +import typing + +from databases import ( + Build, + BuildParts, + BuildDecisionBook, + BuildDecisionBookItems, + + BuildDecisionBookPerson, + BuildDecisionBookPayments, + BuildDecisionBookProjects, + BuildDecisionBookProjectPerson, + ApiEnumDropdown, + OccupantTypes, + Companies, + BuildLivingSpace, +) + from api_events.events.abstract_class import MethodToEvent, ActionsSchema from api_objects.auth.token_objects import EmployeeTokenObject, OccupantTokenObject +from api_validations.core_response import AlchemyJsonResponse +from api_library.date_time_actions.date_functions import system_arrow, client_arrow +class DecisionBookDecisionBookItemsDebitsListEventMethods(MethodToEvent): + + event_type = "SELECT" + __event_keys__ = { + "a1d2b1f6-9b8d-4f6b-8f4d-6b1f6a9d8b1a": "decision_book_decision_book_items_debits_list", + } + + @classmethod + def decision_book_decision_book_items_debits_list( + cls, + decision_book_id: str, + token_dict: typing.Union[EmployeeTokenObject, OccupantTokenObject], + ): + BuildDecisionBookItems.pre_query = BuildDecisionBookItems.filter_active( + BuildDecisionBookItems.decision_book_id == decision_book_id + ).query + BuildDecisionBookItems.filter_attr = None + records = BuildDecisionBookItems.filter_active( + BuildDecisionBookItems.decision_book_id == decision_book_id + ) + return AlchemyJsonResponse( + completed=True, + message="Decision Book Items Debits are listed", + result=records, + ) + +class DecisionBookDecisionBookItemsDebitsCreateEventMethods(MethodToEvent): + + event_type = "CREATE" + __event_keys__ = { + "a1d2b1f6-9b8d-4f6b-8f4d-6b1f6a9d8b1a": "decision_book_decision_book_items_debits_create", + } + + @classmethod + def decision_book_decision_book_items_debits_create( + cls, + decision_book_id: str, + token_dict: typing.Union[EmployeeTokenObject, OccupantTokenObject], + decision_book_items_debits: dict, + ): + if isinstance(token_dict, EmployeeTokenObject): + + raise HTTPException( + status_code=status.HTTP_406_NOT_ACCEPTABLE, + detail="No employee can reach this event. An notification is send to admin about event registration", + ) + + decision_book_items_debits["decision_book_id"] = decision_book_id + decision_book_items_debits["created_at"] = system_arrow().datetime + decision_book_items_debits["created_by"] = token_dict.employee_id + decision_book_items_debits["updated_at"] = system_arrow().datetime + decision_book_items_debits["updated_by"] = token_dict.employee_id + decision_book_items_debits["is_active"] = True + decision_book_items_debits["is_confirmed"] = False + decision_book_items_debits["is_deleted"] = False + decision_book_items_debits["confirmed_at"] = None + decision_book_items_debits["confirmed_by"] = None + decision_book_items_debits["deleted_at"] = None + decision_book_items_debits["deleted_by"] = None + decision_book_items_debits["confirmed_at"] = None + decision_book_items_debits["confirmed_by"] = None + decision_book_items_debits["deleted_at"] = None + decision_book_items_debits["deleted_by"] = None + decision_book_items_debits["confirmed_at"] = None + decision_book_items_debits["confirmed_by"] = None + decision_book_items_debits["deleted_at"] = None + decision_book_items_debits["deleted_by"] = None + BuildDecisionBookItems.pre_query = BuildDecisionBookItems.filter_active( + BuildDecisionBookItems.decision_book_id == decision_book_id + ).query + BuildDecisionBookItems.filter_attr = None + records = BuildDecisionBookItems.filter_active( + BuildDecisionBookItems.decision_book_id == decision_book_id + ) + return AlchemyJsonResponse( + completed=True, + message="Decision Book Items Debits are listed", + result=records, + ) -class DecisionBookDecisionBookItemsDebitsEvents(MethodToEvent): ... diff --git a/api_validations/core_response.py b/api_validations/core_response.py index 1a2d3be..9837dbe 100644 --- a/api_validations/core_response.py +++ b/api_validations/core_response.py @@ -17,7 +17,8 @@ class AlchemyJsonResponse: message: str, status_code: str = 'HTTP_200_OK', result: Union[Any, list] = None, - completed: bool = True + completed: bool = True, + response_model: Any = None ): cls.status_code = getattr(status, status_code, 'HTTP_200_OK') cls.message = message diff --git a/databases/sql_models/account/account.py b/databases/sql_models/account/account.py index 07266b0..8145957 100644 --- a/databases/sql_models/account/account.py +++ b/databases/sql_models/account/account.py @@ -23,11 +23,11 @@ class AccountBooks(CrudCollection): country: Mapped[str] = mapped_column(String, nullable=False) branch_type: Mapped[str] = mapped_column(SmallInteger, server_default="0") - company_id: Mapped[Identity] = mapped_column( + company_id: Mapped[int] = mapped_column( ForeignKey("companies.id"), nullable=False ) company_uu_id: Mapped[UUID] = mapped_column(String, nullable=False) - branch_id: Mapped[Identity] = mapped_column(ForeignKey("companies.id")) + branch_id: Mapped[int] = mapped_column(ForeignKey("companies.id")) branch_uu_id: Mapped[UUID] = mapped_column(String, comment="Branch UU ID") # company: Mapped["Companies"] = relationship( @@ -68,7 +68,7 @@ class AccountCodes(CrudCollection): ) is_receive_or_debit: Mapped[bool] = mapped_column(Boolean) - product_id: Mapped[Identity] = mapped_column(Integer, server_default="0") + product_id: Mapped[int] = mapped_column(Integer, server_default="0") nvi_id: Mapped[str] = mapped_column(String(48), server_default="") status_id: Mapped[int] = mapped_column(SmallInteger, server_default="0") account_code_seperator: Mapped[str] = mapped_column(String(1), server_default=".") @@ -76,15 +76,15 @@ class AccountCodes(CrudCollection): system_id: Mapped[int] = mapped_column(SmallInteger, server_default="0") locked: Mapped[bool] = mapped_column(SmallInteger, server_default="0") - company_id: Mapped[Identity] = mapped_column(ForeignKey("companies.id")) + company_id: Mapped[int] = mapped_column(ForeignKey("companies.id")) company_uu_id: Mapped[UUID] = mapped_column( String, nullable=False, comment="Company UU ID" ) - customer_id: Mapped[Identity] = mapped_column(ForeignKey("companies.id")) + customer_id: Mapped[int] = mapped_column(ForeignKey("companies.id")) customer_uu_id: Mapped[UUID] = mapped_column( String, nullable=False, comment="Customer UU ID" ) - person_id: Mapped[Identity] = mapped_column(ForeignKey("people.id")) + person_id: Mapped[int] = mapped_column(ForeignKey("people.id")) person_uu_id: Mapped[UUID] = mapped_column( String, nullable=False, comment="Person UU ID" ) @@ -123,7 +123,7 @@ class AccountCodeParser(CrudCollection): account_code_5: Mapped[str] = mapped_column(String, server_default="") account_code_6: Mapped[str] = mapped_column(String, server_default="") - account_code_id: Mapped[Identity] = mapped_column( + account_code_id: Mapped[int] = mapped_column( ForeignKey("account_codes.id"), nullable=False ) account_code_uu_id: Mapped[UUID] = mapped_column( @@ -201,19 +201,19 @@ class AccountMaster(CrudCollection): data_center_id: Mapped[str] = mapped_column(String, server_default="") data_center_rec_num: Mapped[int] = mapped_column(Integer, server_default="0") - account_header_id: Mapped[Identity] = mapped_column( + account_header_id: Mapped[int] = mapped_column( ForeignKey("account_books.id"), nullable=False ) account_header_uu_id: Mapped[UUID] = mapped_column( String, nullable=False, comment="Account Header UU ID" ) - project_item_id: Mapped[Identity] = mapped_column( + project_item_id: Mapped[int] = mapped_column( ForeignKey("build_decision_book_projects.id") ) project_item_uu_id: Mapped[UUID] = mapped_column( String, comment="Project Item UU ID" ) - department_id: Mapped[Identity] = mapped_column(ForeignKey("departments.id")) + department_id: Mapped[int] = mapped_column(ForeignKey("departments.id")) department_uu_id: Mapped[UUID] = mapped_column(String, comment="Department UU ID") # account_header: Mapped["AccountBooks"] = relationship( @@ -292,29 +292,29 @@ class AccountDetail(CrudCollection): data_center_rec_num: Mapped[str] = mapped_column(Integer, server_default="0") status_id: Mapped[int] = mapped_column(SmallInteger, server_default="0") - plug_type_id: Mapped[Identity] = mapped_column( + plug_type_id: Mapped[int] = mapped_column( ForeignKey("api_enum_dropdown.id"), nullable=True ) plug_type_uu_id = mapped_column(String, nullable=False, comment="Plug Type UU ID") - account_header_id: Mapped[Identity] = mapped_column( + account_header_id: Mapped[int] = mapped_column( ForeignKey("account_books.id"), nullable=False ) account_header_uu_id: Mapped[UUID] = mapped_column( String, nullable=False, comment="Account Header UU ID" ) - account_code_id: Mapped[Identity] = mapped_column( + account_code_id: Mapped[int] = mapped_column( ForeignKey("account_codes.id"), nullable=False ) account_code_uu_id: Mapped[UUID] = mapped_column( String, nullable=False, comment="Account Code UU ID" ) - account_master_id: Mapped[Identity] = mapped_column( + account_master_id: Mapped[int] = mapped_column( ForeignKey("account_master.id"), nullable=False ) account_master_uu_id: Mapped[UUID] = mapped_column( String, nullable=False, comment="Account Master UU ID" ) - project_id: Mapped[Identity] = mapped_column( + project_id: Mapped[int] = mapped_column( ForeignKey("build_decision_book_projects.id") ) project_uu_id: Mapped[UUID] = mapped_column(String, comment="Project UU ID") @@ -444,43 +444,43 @@ class AccountRecords(CrudCollection): approved_record: Mapped[bool] = mapped_column(Boolean, server_default="0") import_file_name = mapped_column(String, nullable=True, comment="XLS Key") - receive_debit: Mapped[Identity] = mapped_column(ForeignKey("api_enum_dropdown.id")) + receive_debit: Mapped[int] = mapped_column(ForeignKey("api_enum_dropdown.id")) receive_debit_uu_id = mapped_column(String, nullable=True, comment="Debit UU ID") - budget_type: Mapped[Identity] = mapped_column( + budget_type: Mapped[int] = mapped_column( ForeignKey("api_enum_dropdown.id"), nullable=True ) budget_type_uu_id = mapped_column( String, nullable=True, comment="Budget Type UU ID" ) - company_id: Mapped[Identity] = mapped_column(ForeignKey("companies.id")) + company_id: Mapped[int] = mapped_column(ForeignKey("companies.id")) company_uu_id = mapped_column(String, nullable=True, comment="Company UU ID") - send_company_id: Mapped[Identity] = mapped_column(ForeignKey("companies.id")) + send_company_id: Mapped[int] = mapped_column(ForeignKey("companies.id")) send_company_uu_id = mapped_column( String, nullable=True, comment="Send Company UU ID" ) - customer_id: Mapped[Identity] = mapped_column(ForeignKey("people.id")) + customer_id: Mapped[int] = mapped_column(ForeignKey("people.id")) customer_uu_id = mapped_column(String, nullable=True, comment="Customer UU ID") - send_person_id: Mapped[Identity] = mapped_column(ForeignKey("people.id")) + send_person_id: Mapped[int] = mapped_column(ForeignKey("people.id")) send_person_uu_id = mapped_column( String, nullable=True, comment="Send Person UU ID" ) - approving_accounting_person: Mapped[Identity] = mapped_column( + approving_accounting_person: Mapped[int] = mapped_column( ForeignKey("people.id") ) approving_accounting_person_uu_id = mapped_column( String, nullable=True, comment="Approving Accounting Person UU ID" ) - # build_id: Mapped[Identity] = mapped_column(ForeignKey("build.id"), nullable=True) - build_parts_id: Mapped[Identity] = mapped_column(ForeignKey("build_parts.id")) - build_parts_uu_id = mapped_column( + # build_id: Mapped[int] = mapped_column(ForeignKey("build.id"), nullable=True) + build_parts_id: Mapped[int] = mapped_column(ForeignKey("build_parts.id")) + build_parts_uu_id: Mapped[UUID] = mapped_column( String, nullable=True, comment="Build Parts UU ID" ) - build_decision_book_id: Mapped[Identity] = mapped_column( + build_decision_book_id: Mapped[int] = mapped_column( ForeignKey("build_decision_book.id") ) - build_decision_book_uu_id = mapped_column( + build_decision_book_uu_id: Mapped[UUID] = mapped_column( String, nullable=True, comment="Build Decision Book UU ID" ) @@ -537,7 +537,7 @@ class AccountRecords(CrudCollection): "comment": "Bank Records that are related to building and financial transactions" }, ) - # + # def payment_budget_record_close(self): # from database_sql_models import ( # DecisionBookProjectPaymentsMaster, diff --git a/databases/sql_models/account/iban.py b/databases/sql_models/account/iban.py index 92e150e..34e84ff 100644 --- a/databases/sql_models/account/iban.py +++ b/databases/sql_models/account/iban.py @@ -25,7 +25,7 @@ class BuildIbans(CrudCollection): bank_code: Mapped[str] = mapped_column(String(24), server_default="TR0000000000000") xcomment: Mapped[str] = mapped_column(String(64), server_default="????") - build_id: Mapped[Identity] = mapped_column( + build_id: Mapped[int] = mapped_column( ForeignKey("build.id"), nullable=False, comment="Building ID" ) build_uu_id: Mapped[str] = mapped_column( @@ -67,21 +67,21 @@ class BuildIbanDescription(CrudCollection): String, nullable=False, comment="Search Word", index=True ) - decision_book_project_id: Mapped[Identity] = mapped_column( + decision_book_project_id: Mapped[int] = mapped_column( ForeignKey("build_decision_book_projects.id") ) decision_book_project_uu_id: Mapped[str] = mapped_column( String, nullable=False, comment="Decision Book Project UUID" ) - customer_id: Mapped[Identity] = mapped_column(ForeignKey("people.id")) + customer_id: Mapped[int] = mapped_column(ForeignKey("people.id")) customer_uu_id: Mapped[str] = mapped_column( String, nullable=False, comment="Customer UUID" ) - company_id: Mapped[Identity] = mapped_column(ForeignKey("companies.id")) + company_id: Mapped[int] = mapped_column(ForeignKey("companies.id")) company_uu_id: Mapped[str] = mapped_column( String, nullable=False, comment="Company UUID" ) - build_parts_id: Mapped[Identity] = mapped_column(ForeignKey("build_parts.id")) + build_parts_id: Mapped[int] = mapped_column(ForeignKey("build_parts.id")) build_parts_uu_id: Mapped[str] = mapped_column( String, nullable=False, comment="Build Parts UUID" ) diff --git a/databases/sql_models/building/build.py b/databases/sql_models/building/build.py index e7aedf8..52512b6 100644 --- a/databases/sql_models/building/build.py +++ b/databases/sql_models/building/build.py @@ -150,10 +150,10 @@ class Part2Employee(CrudCollection): __include__fields__ = [] build_id: Mapped[int] = mapped_column(Integer, comment="Building ID") - part_id: Mapped[Identity] = mapped_column( + part_id: Mapped[int] = mapped_column( ForeignKey("build_parts.id"), nullable=False, comment="Part ID" ) - employee_id: Mapped[Identity] = mapped_column( + employee_id: Mapped[int] = mapped_column( ForeignKey("employees.id"), nullable=False, comment="Employee ID" ) @@ -173,13 +173,13 @@ class RelationshipEmployee2Build(CrudCollection): __tablename__ = "relationship_employee2build" __exclude__fields__ = [] - company_id: Mapped[Identity] = mapped_column( + company_id: Mapped[int] = mapped_column( ForeignKey("companies.id"), nullable=False ) # 1, 2, 3 - employee_id: Mapped[Identity] = mapped_column( + employee_id: Mapped[int] = mapped_column( ForeignKey("employees.id"), nullable=False ) # employee -> (n)person Evyos LTD - member_id: Mapped[Identity] = mapped_column( + member_id: Mapped[int] = mapped_column( ForeignKey("build.id"), nullable=False ) # 2, 3, 4 @@ -255,9 +255,9 @@ class Build(CrudCollection, SelectActionWithEmployee): Integer, nullable=True, comment="Management Room ID" ) - site_id: Mapped[Identity] = mapped_column(ForeignKey("build_sites.id")) + site_id: Mapped[int] = mapped_column(ForeignKey("build_sites.id")) site_uu_id: Mapped[str] = mapped_column(String, comment="Site UUID") - address_id: Mapped[Identity] = mapped_column(ForeignKey("addresses.id")) + address_id: Mapped[int] = mapped_column(ForeignKey("addresses.id")) address_uu_id: Mapped[str] = mapped_column(String, comment="Address UUID") build_types_id = mapped_column( ForeignKey("build_types.id"), nullable=False, comment="Building Type" @@ -452,7 +452,7 @@ class BuildParts(CrudCollection): build_uu_id: Mapped[str] = mapped_column( String, nullable=False, comment="Building UUID" ) - part_direction_id: Mapped[Identity] = mapped_column( + part_direction_id: Mapped[int] = mapped_column( ForeignKey("api_enum_dropdown.id"), nullable=True ) part_direction_uu_id = mapped_column( @@ -672,7 +672,7 @@ class BuildArea(CrudCollection): width = mapped_column(Integer, server_default="0") size = mapped_column(Integer, server_default="0") - build_id: Mapped[Identity] = mapped_column(ForeignKey("build.id")) + build_id: Mapped[int] = mapped_column(ForeignKey("build.id")) build_uu_id = mapped_column(String, comment="Building UUID") part_type_id = mapped_column( ForeignKey("build_types.id"), nullable=True, comment="Building Part Type" @@ -702,7 +702,7 @@ class BuildSites(CrudCollection): site_name = mapped_column(String(24), nullable=False) site_no = mapped_column(String(8), nullable=False) - address_id: Mapped[Identity] = mapped_column(ForeignKey("addresses.id")) + address_id: Mapped[int] = mapped_column(ForeignKey("addresses.id")) address_uu_id = mapped_column(String, comment="Address UUID") # addresses: Mapped["Address"] = relationship( @@ -729,9 +729,9 @@ class BuildCompaniesProviding(CrudCollection): ForeignKey("build.id"), nullable=False, comment="Building ID" ) build_uu_id = mapped_column(String, nullable=True, comment="Providing UUID") - company_id: Mapped[Identity] = mapped_column(ForeignKey("companies.id")) + company_id: Mapped[int] = mapped_column(ForeignKey("companies.id")) company_uu_id = mapped_column(String, nullable=True, comment="Providing UUID") - provide_id: Mapped[Identity] = mapped_column( + provide_id: Mapped[int] = mapped_column( ForeignKey("api_enum_dropdown.id"), nullable=True ) provide_uu_id = mapped_column(String, nullable=True, comment="Providing UUID") @@ -760,9 +760,9 @@ class BuildPersonProviding(CrudCollection): ForeignKey("build.id"), nullable=False, comment="Building ID" ) build_uu_id = mapped_column(String, nullable=True, comment="Providing UUID") - people_id: Mapped[Identity] = mapped_column(ForeignKey("people.id")) + people_id: Mapped[int] = mapped_column(ForeignKey("people.id")) people_uu_id = mapped_column(String, nullable=True, comment="People UUID") - provide_id: Mapped[Identity] = mapped_column( + provide_id: Mapped[int] = mapped_column( ForeignKey("api_enum_dropdown.id"), nullable=True ) provide_uu_id = mapped_column(String, nullable=True, comment="Providing UUID") @@ -836,9 +836,9 @@ class BuildPersonProviding(CrudCollection): # life_people: Mapped["People"] = relationship( # "People", back_populates="life_living_spaces", foreign_keys=[life_person_id] # ) -# company_id: Mapped[Identity] = mapped_column(ForeignKey("companies.id")) -# response_company_id: Mapped[Identity] = mapped_column(ForeignKey("companies.id")) -# person_id: Mapped[Identity] = mapped_column(ForeignKey("people.id")) +# company_id: Mapped[int] = mapped_column(ForeignKey("companies.id")) +# response_company_id: Mapped[int] = mapped_column(ForeignKey("companies.id")) +# person_id: Mapped[int] = mapped_column(ForeignKey("people.id")) # companies: Mapped["Companies"] = relationship( # "Companies", back_populates="buildings", foreign_keys=[company_id] diff --git a/databases/sql_models/building/decision_book.py b/databases/sql_models/building/decision_book.py index 5ccef6c..985a372 100644 --- a/databases/sql_models/building/decision_book.py +++ b/databases/sql_models/building/decision_book.py @@ -69,15 +69,15 @@ class BuildDecisionBook(CrudCollection): TIMESTAMP, nullable=True, comment="Meeting Completed Date" ) - build_id: Mapped[Identity] = mapped_column(ForeignKey("build.id"), nullable=False) + build_id: Mapped[int] = mapped_column(ForeignKey("build.id"), nullable=False) build_uu_id: Mapped[str] = mapped_column( String, nullable=True, comment="Build UUID" ) - resp_company_id: Mapped[Identity] = mapped_column(ForeignKey("companies.id")) + resp_company_id: Mapped[int] = mapped_column(ForeignKey("companies.id")) resp_company_uu_id: Mapped[str] = mapped_column( String, nullable=True, comment="Company UUID" ) - contact_id: Mapped[Identity] = mapped_column( + contact_id: Mapped[int] = mapped_column( ForeignKey("contracts.id"), nullable=True, comment="Contract id" ) contact_uu_id: Mapped[str] = mapped_column( @@ -231,7 +231,7 @@ class BuildDecisionBookInvitations(CrudCollection): build_uu_id: Mapped[str] = mapped_column( String, nullable=True, comment="Build UUID" ) - decision_book_id: Mapped[Identity] = mapped_column( + decision_book_id: Mapped[int] = mapped_column( ForeignKey("build_decision_book.id"), nullable=False ) decision_book_uu_id: Mapped[str] = mapped_column( @@ -367,7 +367,7 @@ class BuildDecisionBookPerson(CrudCollection): build_living_space_uu_id = mapped_column( String, nullable=True, comment="Living Space UUID" ) - person_id: Mapped[Identity] = mapped_column(ForeignKey("people.id"), nullable=False) + person_id: Mapped[int] = mapped_column(ForeignKey("people.id"), nullable=False) # person_uu_id: Mapped[str] = mapped_column(String, nullable=False, comment="Person UUID") __table_args__ = ( @@ -508,7 +508,7 @@ class BuildDecisionBookPersonOccupants(CrudCollection): String, nullable=True, comment="Invite UUID" ) - occupant_type_id: Mapped[Identity] = mapped_column( + occupant_type_id: Mapped[int] = mapped_column( ForeignKey("occupant_types.id"), nullable=False ) occupant_type_uu_id: Mapped[str] = mapped_column( @@ -549,7 +549,7 @@ class BuildDecisionBookItems(CrudCollection): Boolean, server_default="0", comment="Are payment Records Created" ) - info_type_id: Mapped[Identity] = mapped_column( + info_type_id: Mapped[int] = mapped_column( ForeignKey("api_enum_dropdown.id"), nullable=True ) info_type_uu_id: Mapped[str] = mapped_column( @@ -766,7 +766,7 @@ class BuildDecisionBookItemsUnapproved(CrudCollection): decision_book_item_uu_id = mapped_column( String, nullable=True, comment="Decision Book Item" ) - person_id: Mapped[Identity] = mapped_column(ForeignKey("people.id"), nullable=False) + person_id: Mapped[int] = mapped_column(ForeignKey("people.id"), nullable=False) person_uu_id: Mapped[str] = mapped_column( String, nullable=True, comment="Person UUID" ) @@ -804,7 +804,7 @@ class BuildDecisionBookPayments(CrudCollection): ) currency: Mapped[str] = mapped_column(String(8), server_default="TRY") - payment_types_id: Mapped[Identity] = mapped_column( + payment_types_id: Mapped[int] = mapped_column( ForeignKey("api_enum_dropdown.id"), nullable=True ) payment_types_uu_id: Mapped[str] = mapped_column( @@ -832,24 +832,24 @@ class BuildDecisionBookPayments(CrudCollection): String, nullable=True, comment="Decision Book Project UUID" ) - build_parts_id: Mapped[Identity] = mapped_column( + build_parts_id: Mapped[int] = mapped_column( ForeignKey("build_parts.id"), nullable=False ) build_parts_uu_id: Mapped[str] = mapped_column( String, nullable=True, comment="Build Part UUID" ) - budget_records_id: Mapped[Identity] = mapped_column( + budget_records_id: Mapped[int] = mapped_column( ForeignKey("account_records.id") ) budget_records_uu_id: Mapped[str] = mapped_column( String, nullable=True, comment="Budget UUID" ) - accounting_id: Mapped[Identity] = mapped_column(ForeignKey("account_detail.id")) + accounting_id: Mapped[int] = mapped_column(ForeignKey("account_detail.id")) accounting_uu_id: Mapped[str] = mapped_column( String, nullable=True, comment="Accounting UUID" ) - # receive_debit_id: Mapped[Identity] = mapped_column(ForeignKey("api_enum_dropdown.id"), nullable=True) + # receive_debit_id: Mapped[int] = mapped_column(ForeignKey("api_enum_dropdown.id"), nullable=True) # receive_debit_uu_id: Mapped[str] = mapped_column(String, nullable=True, comment="Debit UUID") # accounting: Mapped["AccountDetail"] = relationship( @@ -932,17 +932,17 @@ class BuildDecisionBookLegal(CrudCollection): build_db_item_uu_id = mapped_column( String, nullable=True, comment="Decision Book Item UUID" ) - resp_attorney_id: Mapped[Identity] = mapped_column( + resp_attorney_id: Mapped[int] = mapped_column( ForeignKey("people.id"), nullable=False ) resp_attorney_uu_id = mapped_column(String, nullable=True, comment="Attorney UUID") - resp_attorney_company_id: Mapped[Identity] = mapped_column( + resp_attorney_company_id: Mapped[int] = mapped_column( ForeignKey("companies.id") ) resp_attorney_company_uu_id = mapped_column( String, nullable=True, comment="Company UUID" ) - mediator_lawyer_person_id: Mapped[Identity] = mapped_column(ForeignKey("people.id")) + mediator_lawyer_person_id: Mapped[int] = mapped_column(ForeignKey("people.id")) mediator_lawyer_person_uu_id = mapped_column( String, nullable=True, comment="Mediator Lawyer UUID" ) @@ -1014,7 +1014,7 @@ class BuildDecisionBookProjects(CrudCollection): project_response_living_space_uu_id = mapped_column( String, nullable=True, comment="Project Response Person UUID" ) - resp_company_id: Mapped[Identity] = mapped_column( + resp_company_id: Mapped[int] = mapped_column( ForeignKey("companies.id"), nullable=True ) resp_company_uu_id = mapped_column(String, nullable=True, comment="Company UUID") @@ -1119,7 +1119,7 @@ class BuildDecisionBookProjectPerson(CrudCollection): build_decision_book_project_uu_id = mapped_column( String, nullable=True, comment="Decision Book Project UUID" ) - living_space_id: Mapped[Identity] = mapped_column( + living_space_id: Mapped[int] = mapped_column( ForeignKey("build_living_space.id"), nullable=False ) living_space_uu_id = mapped_column( @@ -1155,7 +1155,7 @@ class BuildDecisionBookProjectPerson(CrudCollection): # Numeric(20, 2), nullable=False, comment="Default Payment Amount" # ) # -# dues_types_id: Mapped[Identity] = mapped_column(ForeignKey("api_enum_dropdown.id"), nullable=True) +# dues_types_id: Mapped[int] = mapped_column(ForeignKey("api_enum_dropdown.id"), nullable=True) # dues_types_uu_id = mapped_column(String, nullable=True, comment="Dues Type UUID") # build_decision_book_item_debits_id = mapped_column( # ForeignKey("build_decision_book_item_debits.id"), nullable=False @@ -1163,7 +1163,7 @@ class BuildDecisionBookProjectPerson(CrudCollection): # build_decision_book_item_debits_uu_id = mapped_column( # String, nullable=True, comment="Decision Book Item Debit UUID" # ) -# build_parts_id: Mapped[Identity] = mapped_column(ForeignKey("build_parts.id"), nullable=False) +# build_parts_id: Mapped[int] = mapped_column(ForeignKey("build_parts.id"), nullable=False) # build_parts_uu_id = mapped_column(String, nullable=True, comment="Build Part UUID") # # # decision_books_item_debits: Mapped["BuildDecisionBookItemDebits"] = relationship( @@ -1292,7 +1292,7 @@ class BuildDecisionBookProjectPerson(CrudCollection): # __exclude__fields__ = [] # __enum_list__ = [("dues_types", "BuildDuesTypes", "D")] # -# dues_types_id: Mapped[Identity] = mapped_column(ForeignKey("api_enum_dropdown.id"), nullable=True) +# dues_types_id: Mapped[int] = mapped_column(ForeignKey("api_enum_dropdown.id"), nullable=True) # dues_types_uu_id = mapped_column(String, nullable=True, comment="Dues Type UUID") # # dues_values = mapped_column( # # MutableDict.as_mutable(JSONB()), @@ -1431,7 +1431,7 @@ class BuildDecisionBookProjectPerson(CrudCollection): # process_date_w: Mapped[int] = mapped_column(SmallInteger) # period_time = mapped_column(String(12), server_default="") # -# build_decision_book_id: Mapped[Identity] = mapped_column(ForeignKey("build_decision_book.id")) +# build_decision_book_id: Mapped[int] = mapped_column(ForeignKey("build_decision_book.id")) # accounting_id = mapped_column(ForeignKey("account_detail.id")) # # __table_args__ = ( diff --git a/databases/sql_models/company/company.py b/databases/sql_models/company/company.py index 2d8ad5e..8df3708 100644 --- a/databases/sql_models/company/company.py +++ b/databases/sql_models/company/company.py @@ -36,17 +36,17 @@ class RelationshipDutyCompany(CrudCollection): __exclude__fields__ = [] __access_by__ = RelationAccess.SuperAccessList - owner_id: Mapped[Identity] = mapped_column( + owner_id: Mapped[int] = mapped_column( ForeignKey("companies.id"), nullable=False ) # 1 - duties_id: Mapped[Identity] = mapped_column( + duties_id: Mapped[int] = mapped_column( ForeignKey("duties.id"), nullable=False ) # duty -> (n)employee Evyos LTD - member_id: Mapped[Identity] = mapped_column( + member_id: Mapped[int] = mapped_column( ForeignKey("companies.id"), nullable=False ) # 2, 3, 4 - parent_id: Mapped[Identity] = mapped_column( + parent_id: Mapped[int] = mapped_column( ForeignKey("companies.id"), nullable=True ) # None @@ -340,7 +340,7 @@ class Companies(CrudCollection, SelectAction): parent_id = mapped_column(Integer, nullable=True) workplace_no: Mapped[str] = mapped_column(String, nullable=True) - official_address_id: Mapped[Identity] = mapped_column(ForeignKey("addresses.id")) + official_address_id: Mapped[int] = mapped_column(ForeignKey("addresses.id")) official_address_uu_id = mapped_column( String, nullable=True, comment="Official Address UUID" ) diff --git a/databases/sql_models/company/department.py b/databases/sql_models/company/department.py index cc33dfa..38775d0 100644 --- a/databases/sql_models/company/department.py +++ b/databases/sql_models/company/department.py @@ -18,7 +18,7 @@ class Departments(CrudCollection): ) department_description: Mapped[str] = mapped_column(String, server_default="") - company_id: Mapped[Identity] = mapped_column( + company_id: Mapped[int] = mapped_column( ForeignKey("companies.id"), nullable=False ) company_uu_id: Mapped[str] = mapped_column( @@ -70,7 +70,7 @@ class Duties(CrudCollection): company_uu_id: Mapped[str] = mapped_column( String, nullable=False, comment="Company UUID" ) - duties_id: Mapped[Identity] = mapped_column(ForeignKey("duty.id"), nullable=False) + duties_id: Mapped[int] = mapped_column(ForeignKey("duty.id"), nullable=False) duties_uu_id: Mapped[str] = mapped_column( String, nullable=False, comment="Duty UUID" ) @@ -80,7 +80,7 @@ class Duties(CrudCollection): department_uu_id: Mapped[str] = mapped_column( String, nullable=False, comment="Department UUID" ) - # priority_id: Mapped[Identity] = mapped_column(ForeignKey("priority.id"), nullable=True) + # priority_id: Mapped[int] = mapped_column(ForeignKey("priority.id"), nullable=True) management_duty = mapped_column( Boolean, server_default="0" ) # is this a prime Company Duty ??? diff --git a/databases/sql_models/company/employee.py b/databases/sql_models/company/employee.py index 3bc64e8..52120f1 100644 --- a/databases/sql_models/company/employee.py +++ b/databases/sql_models/company/employee.py @@ -26,7 +26,7 @@ class Staff(CrudCollection): String, nullable=False, comment="Staff Code" ) - duties_id: Mapped[Identity] = mapped_column(ForeignKey("duties.id"), nullable=False) + duties_id: Mapped[int] = mapped_column(ForeignKey("duties.id"), nullable=False) duties_uu_id: Mapped[str] = mapped_column( String, nullable=False, comment="Duty UUID" ) @@ -63,11 +63,11 @@ class Employees(CrudCollection): __tablename__ = "employees" __exclude__fields__ = [] - staff_id: Mapped[Identity] = mapped_column(ForeignKey("staff.id")) + staff_id: Mapped[int] = mapped_column(ForeignKey("staff.id")) staff_uu_id: Mapped[str] = mapped_column( String, nullable=False, comment="Staff UUID" ) - people_id: Mapped[Identity] = mapped_column(ForeignKey("people.id"), nullable=True) + people_id: Mapped[int] = mapped_column(ForeignKey("people.id"), nullable=True) people_uu_id: Mapped[str] = mapped_column( String, nullable=True, comment="People UUID" ) @@ -83,13 +83,13 @@ class EmployeeHistory(CrudCollection): __tablename__ = "employee_history" __exclude__fields__ = [] - staff_id: Mapped[Identity] = mapped_column( + staff_id: Mapped[int] = mapped_column( ForeignKey("staff.id"), nullable=False, comment="Staff ID" ) staff_uu_id: Mapped[str] = mapped_column( String, nullable=False, comment="Staff UUID" ) - people_id: Mapped[Identity] = mapped_column( + people_id: Mapped[int] = mapped_column( ForeignKey("people.id"), nullable=False, comment="People ID" ) people_uu_id: Mapped[str] = mapped_column( @@ -114,7 +114,7 @@ class EmployeesSalaries(CrudCollection): Numeric(20, 6), nullable=False, comment="Net Salary" ) - people_id: Mapped[Identity] = mapped_column(ForeignKey("people.id"), nullable=False) + people_id: Mapped[int] = mapped_column(ForeignKey("people.id"), nullable=False) people_uu_id: Mapped[str] = mapped_column( String, nullable=False, comment="People UUID" ) diff --git a/databases/sql_models/core_mixin.py b/databases/sql_models/core_mixin.py index 1a62f69..e13c293 100644 --- a/databases/sql_models/core_mixin.py +++ b/databases/sql_models/core_mixin.py @@ -20,7 +20,7 @@ from sqlalchemy_mixins.serialize import SerializeMixin from sqlalchemy_mixins.repr import ReprMixin from sqlalchemy_mixins.smartquery import SmartQueryMixin -from api_library.date_time_actions.date_functions import DateTimeLocal +from api_library.date_time_actions.date_functions import DateTimeLocal, client_arrow from api_objects.auth.token_objects import Credentials from databases.sql_models.sql_operations import FilterAttributes @@ -133,19 +133,23 @@ class CrudMixin(Base, SmartQueryMixin, SessionMixin, FilterAttributes): @classmethod def iterate_over_variables(cls, val, key): key_ = cls.__annotations__.get(key, None) - if val is None or key_ is None: + is_primary, is_foreign_key = key in cls.primary_keys and bool(getattr(cls, key).foreign_keys) + if is_primary or is_foreign_key and key_ == Mapped[int]: return None - elif key_ == Mapped[Identity]: - return None - elif key_ == Mapped[bool]: - return bool(val) - elif key_ == Mapped[float] or key_ == Mapped[NUMERIC]: - return float(val) + elif key_ == Mapped[UUID]: + return str(val) if val else None elif key_ == Mapped[int]: - return int(val) + return int(val) if val else None + elif key_ == Mapped[bool]: + return bool(val) if val else None + elif key_ == Mapped[float] or key_ == Mapped[NUMERIC]: + return float(val) if val else None + elif key_ == Mapped[int]: + return int(val) if val else None elif key_ == Mapped[TIMESTAMP]: - return str(cls.client_arrow.get(val).format("DD-MM-YYYY HH:mm:ss")) - return str(val) + return str(client_arrow.get(val).format("DD-MM-YYYY HH:mm:ss")) if val else None + return str(val) if val else None + def update(self, **kwargs): """Updates the record with the given attributes.""" @@ -227,7 +231,7 @@ class BaseCollection(CrudMixin, BaseMixin): __abstract__ = True __repr__ = ReprMixin.__repr__ - id: Mapped[Identity] = mapped_column(primary_key=True) + id: Mapped[int] = mapped_column(primary_key=True) class CrudCollection(CrudMixin, BaseMixin, SmartQueryMixin): @@ -235,7 +239,7 @@ class CrudCollection(CrudMixin, BaseMixin, SmartQueryMixin): __abstract__ = True __repr__ = ReprMixin.__repr__ - id: Mapped[Identity] = mapped_column(primary_key=True) + id: Mapped[int] = mapped_column(primary_key=True) uu_id: Mapped[UUID] = mapped_column( UUID, server_default=func.text("gen_random_uuid()"), index=True, unique=True ) diff --git a/databases/sql_models/event/event.py b/databases/sql_models/event/event.py index ecdc315..6cd1cc6 100644 --- a/databases/sql_models/event/event.py +++ b/databases/sql_models/event/event.py @@ -40,7 +40,7 @@ class Events(CrudCollection): cost: Mapped[float] = mapped_column(Numeric(20, 2), server_default="0.00") unit_price: Mapped[float] = mapped_column(Numeric(20, 2), server_default="0.00") - endpoint_id: Mapped[Identity] = mapped_column( + endpoint_id: Mapped[int] = mapped_column( ForeignKey("endpoint_restriction.id"), nullable=True ) endpoint_uu_id: Mapped[str] = mapped_column( @@ -92,7 +92,7 @@ class Services(CrudCollection): __tablename__ = "services" __exclude__fields__ = [] - module_id: Mapped[Identity] = mapped_column( + module_id: Mapped[int] = mapped_column( ForeignKey("modules.id"), nullable=False ) module_uu_id: Mapped[str] = mapped_column( @@ -118,11 +118,11 @@ class Service2Events(CrudCollection): __tablename__ = "services2events" __exclude__fields__ = [] - service_id: Mapped[Identity] = mapped_column( + service_id: Mapped[int] = mapped_column( ForeignKey("services.id"), nullable=False ) service_uu_id = mapped_column(String, nullable=False, comment="Service UUID") - event_id: Mapped[Identity] = mapped_column(ForeignKey("events.id"), nullable=False) + event_id: Mapped[int] = mapped_column(ForeignKey("events.id"), nullable=False) event_uu_id = mapped_column(String, nullable=False, comment="Event UUID") __table_args__ = ({"comment": "Service2Events Information"},) @@ -169,7 +169,7 @@ class Event2Occupant(CrudCollection): build_living_space_uu_id = mapped_column( String, nullable=False, comment="Build Living Space UUID" ) - event_id: Mapped[Identity] = mapped_column(ForeignKey("events.id"), nullable=False) + event_id: Mapped[int] = mapped_column(ForeignKey("events.id"), nullable=False) event_uu_id = mapped_column(String, nullable=False, comment="Event UUID") __table_args__ = ( @@ -205,15 +205,15 @@ class ModulePrice(CrudCollection): __exclude__fields__ = [] campaign_code = mapped_column(String, nullable=False, comment="Campaign Code") - module_id: Mapped[Identity] = mapped_column( + module_id: Mapped[int] = mapped_column( ForeignKey("modules.id"), nullable=False ) module_uu_id = mapped_column(String, nullable=False, comment="Module UUID") - service_id: Mapped[Identity] = mapped_column( + service_id: Mapped[int] = mapped_column( ForeignKey("services.id"), nullable=False ) service_uu_id = mapped_column(String, nullable=False, comment="Service UUID") - event_id: Mapped[Identity] = mapped_column(ForeignKey("events.id"), nullable=False) + event_id: Mapped[int] = mapped_column(ForeignKey("events.id"), nullable=False) event_uu_id = mapped_column(String, nullable=False, comment="Event UUID") is_counted_percentage: Mapped[float] = mapped_column( Numeric(6, 2), server_default="0.00" diff --git a/databases/sql_models/identity/identity.py b/databases/sql_models/identity/identity.py index 12f1d59..caf1c04 100644 --- a/databases/sql_models/identity/identity.py +++ b/databases/sql_models/identity/identity.py @@ -33,7 +33,7 @@ class UsersTokens(CrudCollection): __tablename__ = "users_tokens" __exclude__fields__ = [] - user_id: Mapped[Identity] = mapped_column(ForeignKey("users.id"), nullable=False) + user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), nullable=False) token_type: Mapped[str] = mapped_column(String(16), server_default="RememberMe") token: Mapped[str] = mapped_column(String, server_default="") @@ -267,13 +267,13 @@ class RelationshipDutyPeople(CrudCollection): __exclude__fields__ = [] __access_by__ = RelationAccess.SuperAccessList - company_id: Mapped[Identity] = mapped_column( + company_id: Mapped[int] = mapped_column( ForeignKey("companies.id"), nullable=False ) # 1, 2, 3 duties_id = mapped_column( ForeignKey("duties.id"), nullable=False ) # duty -> (n)person Evyos LTD - member_id: Mapped[Identity] = mapped_column( + member_id: Mapped[int] = mapped_column( ForeignKey("people.id"), nullable=False ) # 2, 3, 4 @@ -422,13 +422,13 @@ class RelationshipEmployee2PostCode(CrudCollection): __exclude__fields__ = [] __include__fields__ = [] - company_id: Mapped[Identity] = mapped_column( + company_id: Mapped[int] = mapped_column( ForeignKey("companies.id"), nullable=True ) # 1, 2, 3 - employee_id: Mapped[Identity] = mapped_column( + employee_id: Mapped[int] = mapped_column( ForeignKey("employees.id"), nullable=False ) - member_id: Mapped[Identity] = mapped_column( + member_id: Mapped[int] = mapped_column( ForeignKey("address_postcode.id"), nullable=False ) @@ -450,7 +450,7 @@ class AddressPostcode(CrudCollection, SelectActionWithEmployee): __access_by__ = [] __many__table__ = RelationshipEmployee2PostCode - street_id: Mapped[Identity] = mapped_column(ForeignKey("address_street.id")) + street_id: Mapped[int] = mapped_column(ForeignKey("address_street.id")) street_uu_id = mapped_column(String, server_default="", comment="Street UUID") postcode = mapped_column(String(32), nullable=False, comment="Postcode") @@ -465,18 +465,18 @@ class Addresses(CrudCollection): __tablename__ = "addresses" __exclude__fields__ = [] - build_number = mapped_column(String(24), nullable=False, comment="Build Number") - door_number = mapped_column(String(24), nullable=True, comment="Door Number") - floor_number = mapped_column(String(24), nullable=True, comment="Floor Number") + build_number: Mapped[str] = mapped_column(String(24), nullable=False, comment="Build Number") + door_number: Mapped[str] = mapped_column(String(24), nullable=True, comment="Door Number") + floor_number: Mapped[str] = mapped_column(String(24), nullable=True, comment="Floor Number") - comment_address = mapped_column(String, nullable=False, comment="Address") - letter_address = mapped_column(String, nullable=False, comment="Address") - short_letter_address = mapped_column(String, nullable=False, comment="Address") + comment_address: Mapped[str] = mapped_column(String, nullable=False, comment="Address") + letter_address: Mapped[str] = mapped_column(String, nullable=False, comment="Address") + short_letter_address: Mapped[str] = mapped_column(String, nullable=False, comment="Address") latitude: Mapped[float] = mapped_column(Numeric(20, 12), server_default="0") longitude: Mapped[float] = mapped_column(Numeric(20, 12), server_default="0") - street_id: Mapped[Identity] = mapped_column( + street_id: Mapped[int] = mapped_column( ForeignKey("address_street.id"), nullable=False ) street_uu_id = mapped_column(String, server_default="", comment="Street UUID") @@ -625,7 +625,7 @@ class AddressState(CrudCollection): BigInteger, nullable=True, comment="Address Geographic Id" ) - country_id: Mapped[Identity] = mapped_column(ForeignKey("address_country.id")) + country_id: Mapped[int] = mapped_column(ForeignKey("address_country.id")) country_uu_id = mapped_column(String, server_default="", comment="Country UUID") __table_args__ = ( @@ -656,7 +656,7 @@ class AddressCity(CrudCollection): BigInteger, nullable=True, comment="Address Geographic Id" ) - state_id: Mapped[Identity] = mapped_column(ForeignKey("address_state.id")) + state_id: Mapped[int] = mapped_column(ForeignKey("address_state.id")) state_uu_id = mapped_column(String, server_default="", comment="State UUID") __table_args__ = ( diff --git a/databases/sql_models/others/enums.py b/databases/sql_models/others/enums.py index 5bc5b98..f353575 100644 --- a/databases/sql_models/others/enums.py +++ b/databases/sql_models/others/enums.py @@ -17,7 +17,7 @@ class ApiEnumDropdown(BaseCollection): __tablename__ = "api_enum_dropdown" __exclude__fields__ = ["enum_class"] - id: Mapped[Identity] = mapped_column(primary_key=True) + id: Mapped[int] = mapped_column(primary_key=True) uu_id: Mapped[UUID] = mapped_column( UUID, server_default=text("gen_random_uuid()"), index=True, unique=True )