alchemy functions updated

This commit is contained in:
2024-11-10 13:36:52 +03:00
parent eb947ecb3d
commit be100a6615
18 changed files with 83 additions and 61 deletions

View File

@@ -124,11 +124,14 @@ class BuildDecisionBook(CrudCollection):
@classmethod
def select_action(cls, duty_id, token=None):
related_companies = Companies.select_action(duty_id=duty_id)
related_companies = Companies.select_action(duty_id_list=[int(duty_id)])
related_companies_ids = list(
related_.id for related_ in related_companies.all()
)
related_building = Build.filter_all(Build.company_id.in_(related_companies_ids))
related_building = Build.filter_all(
Build.company_id.in_(related_companies_ids)
*Build.valid_record_args(Build),
)
related_building_ids = list(related_.id for related_ in related_building.data)
return cls.filter_all(cls.build_id.in_(related_building_ids)).query
@@ -158,11 +161,12 @@ class BuildDecisionBook(CrudCollection):
expiry_ends.replace(month=expiry_ends.month + 1, day=1) - timedelta(days=1)
)
if decision_book := BuildDecisionBook.filter_all(
if decision_book := BuildDecisionBook.filter_one(
BuildDecisionBook.build_id == building.id,
BuildDecisionBook.expiry_ends > data_dict["expiry_starts"],
BuildDecisionBook.decision_type == data_dict.get("decision_type"),
).count: # Decision book is already exist:
*BuildDecisionBook.valid_record_args(BuildDecisionBook),
).data: # Decision book is already exist:
cls.raise_http_exception(
status_code=status.HTTP_409_CONFLICT,
error_case="RECORDEXITS",
@@ -418,7 +422,7 @@ class BuildDecisionBookPerson(CrudCollection):
related_service = Services.filter_by_one(
related_responsibility=str(occupant_type.occupant_code),
*Services.valid_record_dict,
)
).data
if not related_service:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
@@ -472,8 +476,9 @@ class BuildDecisionBookPerson(CrudCollection):
def get_occupant_types(self):
if occupants := BuildDecisionBookPersonOccupants.filter_all(
BuildDecisionBookPersonOccupants.build_decision_book_person_id == self.id,
):
return occupants.data
*BuildDecisionBookPersonOccupants.valid_record_args(BuildDecisionBookPersonOccupants)
).data:
return occupants
return
def check_occupant_type(self, occupant_type):
@@ -1028,29 +1033,35 @@ class BuildDecisionBookProjects(CrudCollection):
@classmethod
def select_action(cls, duty_id, token=None):
related_companies = Companies.select_action(duty_id=duty_id)
related_companies = Companies.select_action(duty_id_list=[duty_id])
related_companies_ids = list(
related_.id for related_ in related_companies.all()
)
related_building = Build.filter_all(Build.company_id.in_(related_companies_ids))
related_building = Build.filter_all(
Build.company_id.in_(related_companies_ids),
*Build.valid_record_args(Build)
)
related_building_ids = list(related_.id for related_ in related_building.data)
related_decision_books = BuildDecisionBook.query.filter(
BuildDecisionBook.build_id.in_(related_building_ids)
)
related_decision_books = BuildDecisionBook.filter_all(
BuildDecisionBook.build_id.in_(related_building_ids),
*BuildDecisionBook.valid_record_args(BuildDecisionBook)
).data
related_decision_books_ids = list(
related_.id for related_ in related_decision_books.all()
related_.id for related_ in related_decision_books
)
related_decision_books_items = BuildDecisionBookItems.query.filter(
related_decision_books_items = BuildDecisionBookItems.filter_all(
BuildDecisionBookItems.build_decision_book_id.in_(
related_decision_books_ids
)
)
),
*BuildDecisionBookItems.valid_record_args(BuildDecisionBookItems)
).data
related_decision_books_items_ids = list(
related_.id for related_ in related_decision_books_items.all()
)
return cls.query.filter(
cls.build_decision_book_item_id.in_(related_decision_books_items_ids)
related_.id for related_ in related_decision_books_items
)
return cls.filter_all(
cls.build_decision_book_item_id.in_(related_decision_books_items_ids),
*cls.valid_record_args(cls)
).query
@classmethod
def create_action(cls, data: InsertBuildDecisionBookProjects, token=None):