alcehmy and event functions updated

This commit is contained in:
2024-11-09 22:31:12 +03:00
parent e7a9b8c313
commit 1f75e49a07
23 changed files with 709 additions and 505 deletions

View File

@@ -16,7 +16,6 @@ from sqlalchemy import (
TIMESTAMP,
Text,
Numeric,
Identity,
)
from databases.sql_models.core_mixin import CrudCollection
@@ -331,25 +330,27 @@ class Build(CrudCollection, SelectActionWithEmployee):
data_dict["build_types_id"] = build_type.id
del data_dict["build_types_uu_id"]
build_created = cls.find_or_create(**data_dict)
if not build_created.is_found:
cls.__many__table__.find_or_create(
company_id=token.selected_company.company_id,
employee_id=token.selected_company.employee_id,
member_id=build_created.id,
is_confirmed=True,
)
cls.__many__table__.find_or_create(
company_id=token.selected_company.company_id,
employee_id=token.selected_company.employee_id,
member_id=build_created.id,
is_confirmed=True,
)
return build_created
@classmethod
def update_action(cls, data: UpdateBuild, build_uu_id: str, token):
from databases import Addresses
data_dict = data.excluded_dump()
if data.official_address_uu_id:
official_address = Addresses.find_one(uu_id=data.address_uu_id)
data_dict["address_id"] = official_address.id
official_address = Addresses.filter_one(
Addresses.uu_id==data.address_uu_id
).data
data_dict["address_id"] = official_address.id if official_address else None
del data_dict["address_uu_id"]
if build_to_update := cls.find_one(uu_id=build_uu_id, person_id=token.id):
if build_to_update := cls.filter_one(
cls.uu_id==build_uu_id, cls.person_id==token.id
).data:
return build_to_update.update(**data_dict)
@property
@@ -489,7 +490,9 @@ class BuildParts(CrudCollection):
"Check with your supervisor.",
)
if build_types := BuildTypes.find_one(uu_id=data.build_part_type_uu_id):
if build_types := BuildTypes.filter_one(
BuildTypes.uu_id==data.build_part_type_uu_id
).data:
part_direction = ApiEnumDropdown.get_by_uuid(
uuid=str(data.part_direction_uu_id)
)
@@ -516,13 +519,13 @@ class BuildParts(CrudCollection):
if not data_dict["part_gross_size"]:
raise HTTPException(
status_code=status.HTTP_418_IM_A_TEAPOT,
status_code=status.HTTP_406_NOT_ACCEPTABLE,
detail="Part Gross Size can not be empty.",
)
if not data_dict["part_net_size"]:
raise HTTPException(
status_code=status.HTTP_418_IM_A_TEAPOT,
status_code=status.HTTP_406_NOT_ACCEPTABLE,
detail="Part Net Size can not be empty.",
)
pt = int(data_dict["part_net_size"])

View File

@@ -26,7 +26,6 @@ from sqlalchemy import (
Text,
Numeric,
Integer,
Identity,
)
from sqlalchemy.orm import mapped_column, Mapped, relationship
@@ -406,15 +405,17 @@ class BuildDecisionBookPerson(CrudCollection):
if person_occupants := BuildDecisionBookPersonOccupants.find_or_create(
**book_dict
):
decision_book = BuildDecisionBook.find_one(
id=self.build_decision_book_id, active=True, is_confirmed=True
)
decision_book = BuildDecisionBook.filter_one(
BuildDecisionBook.id==self.build_decision_book_id,
BuildDecisionBook.active==True,
BuildDecisionBook.is_confirmed==True
).data
person_occupants.update(
expiry_starts=decision_book.expiry_starts,
expiry_ends=decision_book.expiry_ends,
)
if not person_occupants.is_found and build_living_space_id:
related_service = Services.find_one(
if build_living_space_id:
related_service = Services.filter_by_one(
related_responsibility=str(occupant_type.occupant_code),
active=True,
is_confirmed=True,
@@ -425,9 +426,11 @@ class BuildDecisionBookPerson(CrudCollection):
detail=f"Service is not found for {occupant_type.occupant_code}",
)
decision_build = Build.find_one(
id=decision_book.build_id, active=True, is_confirmed=True
)
decision_build = Build.filter_one(
Build.id==decision_book.build_id,
Build.active==True,
Build.is_confirmed==True
).data
management_room = decision_build.management_room
if not management_room:
raise HTTPException(
@@ -435,8 +438,16 @@ class BuildDecisionBookPerson(CrudCollection):
detail=f"Management Room is not found in {decision_build.build_name}",
)
living_space = BuildLivingSpace.find_one(
id=build_living_space_id, active=True, is_confirmed=True
living_space = BuildLivingSpace.filter_one(
BuildLivingSpace.id==build_living_space_id,
BuildLivingSpace.active==True,
BuildLivingSpace.is_confirmed==True
).data
expiry_ends = str(
system_arrow.get(decision_book.meeting_date).shift(hours=23)
)
expiry_starts = str(
system_arrow.get(decision_book.meeting_date)
)
related_living_space = BuildLivingSpace.find_or_create(
build_parts_id=management_room.id,
@@ -445,40 +456,36 @@ class BuildDecisionBookPerson(CrudCollection):
occupant_type_uu_id=str(occupant_type.uu_id),
person_id=living_space.person_id,
person_uu_id=str(living_space.person_uu_id),
expiry_starts=system_arrow.get(
decision_book.meeting_date
).__str__(),
expiry_ends=system_arrow.get(decision_book.meeting_date)
.shift(hours=23)
.__str__(),
expiry_starts=expiry_starts,
expiry_ends=expiry_ends,
is_confirmed=True,
active=True,
)
expires_at = str(
system_arrow.get(decision_book.meeting_date).shift(days=15)
)
ServiceBindOccupantEventMethods.bind_services_occupant_system(
build_living_space_id=related_living_space.id,
service_id=related_service.id,
expires_at=str(
system_arrow.get(decision_book.meeting_date).shift(days=15)
),
expires_at=expires_at,
)
return person_occupants
return
def get_occupant_types(self):
if occupants := BuildDecisionBookPersonOccupants.filter_active(
if occupants := BuildDecisionBookPersonOccupants.filter_all(
BuildDecisionBookPersonOccupants.build_decision_book_person_id == self.id,
filter_records=False,
):
return occupants.data
return
def check_occupant_type(self, occupant_type):
book_person_occupant_type = BuildDecisionBookPersonOccupants.find_one(
build_decision_book_person_id=self.id,
occupant_type_id=occupant_type.id,
active=True,
is_confirmed=True,
)
book_person_occupant_type = BuildDecisionBookPersonOccupants.filter_one(
BuildDecisionBookPersonOccupants.build_decision_book_person_id==self.id,
BuildDecisionBookPersonOccupants.occupant_type_id==occupant_type.id,
BuildDecisionBookPersonOccupants.active==True,
BuildDecisionBookPersonOccupants.is_confirmed==True,
).data
if not book_person_occupant_type:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
@@ -839,9 +846,7 @@ class BuildDecisionBookPayments(CrudCollection):
String, nullable=True, comment="Build Part UUID"
)
budget_records_id: Mapped[int] = mapped_column(
ForeignKey("account_records.id")
)
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"
)
@@ -936,9 +941,7 @@ class BuildDecisionBookLegal(CrudCollection):
ForeignKey("people.id"), nullable=False
)
resp_attorney_uu_id = mapped_column(String, nullable=True, comment="Attorney UUID")
resp_attorney_company_id: Mapped[int] = mapped_column(
ForeignKey("companies.id")
)
resp_attorney_company_id: Mapped[int] = mapped_column(ForeignKey("companies.id"))
resp_attorney_company_uu_id = mapped_column(
String, nullable=True, comment="Company UUID"
)