alchemy functions updated

This commit is contained in:
2024-11-10 12:14:10 +03:00
parent 1f75e49a07
commit e01a2c8afb
24 changed files with 543 additions and 389 deletions

View File

@@ -111,7 +111,6 @@ class DecisionBookCreateEventMethods(MethodToEvent):
data_dict["resp_company_id"] = company.id
data_dict["resp_company_uu_id"] = str(company.uu_id)
decision_period_date = DateTimeLocal.get(build.decision_period_date)
data_dict["expiry_starts"] = DateTimeLocal.get(
system_arrow.now().date().year,
@@ -143,11 +142,11 @@ class DecisionBookCreateEventMethods(MethodToEvent):
)
occupant_build = Build.filter_one(
Build.id==token_dict.selected_occupant.build_id,
Build.id == token_dict.selected_occupant.build_id,
Build.active == True,
).get(1)
occupant_company = Companies.find_one(
Companies.id==token_dict.selected_occupant.responsible_company_id,
Companies.id == token_dict.selected_occupant.responsible_company_id,
Companies.active == True,
).get(1)
data_dict["build_id"] = occupant_build.id
@@ -155,9 +154,7 @@ class DecisionBookCreateEventMethods(MethodToEvent):
data_dict["resp_company_id"] = occupant_company.id
data_dict["resp_company_uu_id"] = str(occupant_company.uu_id)
decision_period_date = system_arrow.get(
occupant_build.decision_period_date
)
decision_period_date = system_arrow.get(occupant_build.decision_period_date)
data_dict["expiry_starts"] = DateTimeLocal.get(
system_arrow.now().date().year,
int(decision_period_date.date().month),

View File

@@ -92,10 +92,11 @@ class DecisionBookPersonAddEventMethods(MethodToEvent):
)
manger_book_person = BuildDecisionBookPerson.filter_one(
BuildDecisionBookPerson.token==data.token,
BuildDecisionBookPerson.build_decision_book_uu_id==data.build_decision_book_uu_id,
BuildDecisionBookPerson.is_confirmed==True,
BuildDecisionBookPerson.active==True,
BuildDecisionBookPerson.token == data.token,
BuildDecisionBookPerson.build_decision_book_uu_id
== data.build_decision_book_uu_id,
BuildDecisionBookPerson.is_confirmed == True,
BuildDecisionBookPerson.active == True,
).get(1)
if not manger_book_person:
raise HTTPException(
@@ -103,8 +104,9 @@ class DecisionBookPersonAddEventMethods(MethodToEvent):
detail="Manager person not found. Please check token",
)
book_invite = BuildDecisionBookInvitations.filter_one(
BuildDecisionBookInvitations.id==manger_book_person.invite_id,
BuildDecisionBookInvitations.build_id==token_dict.selected_occupant.build_id,
BuildDecisionBookInvitations.id == manger_book_person.invite_id,
BuildDecisionBookInvitations.build_id
== token_dict.selected_occupant.build_id,
).get(1)
if not book_invite:
raise HTTPException(
@@ -112,10 +114,10 @@ class DecisionBookPersonAddEventMethods(MethodToEvent):
detail="Invitation not found. Please check token",
)
selected_book_person = BuildDecisionBookPerson.filter_one(
BuildDecisionBookPerson.invite_id==book_invite.id,
BuildDecisionBookPerson.person_uu_id==data.person_uu_id,
BuildDecisionBookPerson.is_confirmed==True,
BuildDecisionBookPerson.active==True,
BuildDecisionBookPerson.invite_id == book_invite.id,
BuildDecisionBookPerson.person_uu_id == data.person_uu_id,
BuildDecisionBookPerson.is_confirmed == True,
BuildDecisionBookPerson.active == True,
).get(1)
if not selected_book_person:
raise HTTPException(
@@ -171,11 +173,11 @@ class DecisionBookPersonAttendEventMethods(MethodToEvent):
detail="Employee cannot create decision book invitations",
)
token_user = Users.filter_one(Users.id==token_dict.user_id).get(1)
token_user = Users.filter_one(Users.id == token_dict.user_id).get(1)
invitation_person = BuildDecisionBookPerson.filter_one(
BuildDecisionBookPerson.token==data.token,
BuildDecisionBookPerson.active==True,
BuildDecisionBookPerson.is_confirmed==True
BuildDecisionBookPerson.token == data.token,
BuildDecisionBookPerson.active == True,
BuildDecisionBookPerson.is_confirmed == True,
).get(1)
if not invitation_person:
raise HTTPException(
@@ -192,9 +194,10 @@ class DecisionBookPersonAttendEventMethods(MethodToEvent):
# )
# todo check if vicarious person is valid
invitation = BuildDecisionBookInvitations.filter_one(
BuildDecisionBookInvitations.id==invitation_person.invite_id,
BuildDecisionBookInvitations.build_id==token_dict.selected_occupant.build_id,
BuildDecisionBookInvitations.active==True,
BuildDecisionBookInvitations.id == invitation_person.invite_id,
BuildDecisionBookInvitations.build_id
== token_dict.selected_occupant.build_id,
BuildDecisionBookInvitations.active == True,
).get(1)
if not invitation:
raise HTTPException(
@@ -240,10 +243,11 @@ class DecisionBookPersonAssignOccupantEventMethods(MethodToEvent):
)
book_person_manager = BuildDecisionBookPerson.filter_one(
BuildDecisionBookPerson.token==data.token,
BuildDecisionBookPerson.build_living_space_id==token_dict.selected_occupant.living_space_id,
BuildDecisionBookPerson.active==True,
BuildDecisionBookPerson.is_confirmed==True,
BuildDecisionBookPerson.token == data.token,
BuildDecisionBookPerson.build_living_space_id
== token_dict.selected_occupant.living_space_id,
BuildDecisionBookPerson.active == True,
BuildDecisionBookPerson.is_confirmed == True,
).get(1)
manager_occupant_type = OccupantTypes.filter_by_one(
occupant_code="BU-MNG", occupant_category_type="BU"
@@ -254,9 +258,10 @@ class DecisionBookPersonAssignOccupantEventMethods(MethodToEvent):
# book_person_supervisor.check_occupant_type(supervisor_occupant_type)
invitation = BuildDecisionBookInvitations.filter_one(
BuildDecisionBookInvitations.id==book_person_manager.invite_id,
BuildDecisionBookInvitations.build_id==token_dict.selected_occupant.build_id,
BuildDecisionBookInvitations.active==True,
BuildDecisionBookInvitations.id == book_person_manager.invite_id,
BuildDecisionBookInvitations.build_id
== token_dict.selected_occupant.build_id,
BuildDecisionBookInvitations.active == True,
).get(1)
if not invitation:
raise HTTPException(
@@ -265,7 +270,7 @@ class DecisionBookPersonAssignOccupantEventMethods(MethodToEvent):
)
assign_occupant_type = OccupantTypes.filter_by_one(
uu_id=data.occupant_type_uu_id, active=True
uu_id=data.occupant_type_uu_id
).get(1)
if not assign_occupant_type:
raise HTTPException(
@@ -288,11 +293,14 @@ class DecisionBookPersonAssignOccupantEventMethods(MethodToEvent):
detail=f"Person not found. Please check person uuid",
)
book_person_to_assign: BuildDecisionBookPerson = BuildDecisionBookPerson.filter_one(
BuildDecisionBookPerson.build_living_space_id==selected_living_space.id,
BuildDecisionBookPerson.invite_id==invitation.id,
BuildDecisionBookPerson.active==True
).get(1)
book_person_to_assign: BuildDecisionBookPerson = (
BuildDecisionBookPerson.filter_one(
BuildDecisionBookPerson.build_living_space_id
== selected_living_space.id,
BuildDecisionBookPerson.invite_id == invitation.id,
BuildDecisionBookPerson.active == True,
).get(1)
)
if not book_person_to_assign:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
@@ -311,11 +319,14 @@ class DecisionBookPersonAssignOccupantEventMethods(MethodToEvent):
occupant_category_type="MT",
).get(1)
if assigned_book_person_occupant := BuildDecisionBookPersonOccupants.filter_one(
BuildDecisionBookPersonOccupants.invite_id==invitation.id,
BuildDecisionBookPersonOccupants.occupant_type_id==occupant_type_unique.id,
BuildDecisionBookPersonOccupants.active==True,
BuildDecisionBookPersonOccupants.is_confirmed==True,
).get(1):
BuildDecisionBookPersonOccupants.invite_id == invitation.id,
BuildDecisionBookPersonOccupants.occupant_type_id
== occupant_type_unique.id,
BuildDecisionBookPersonOccupants.active == True,
BuildDecisionBookPersonOccupants.is_confirmed == True,
).get(
1
):
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=f"Only one person can be assigned to {assign_occupant_type.occupant_code} type"
@@ -324,10 +335,11 @@ class DecisionBookPersonAssignOccupantEventMethods(MethodToEvent):
if assign_occupant_type.occupant_code == "BU-MNG":
person_occupant_manager = BuildDecisionBookPersonOccupants.filter_one(
BuildDecisionBookPersonOccupants.invite_id==invitation.id,
BuildDecisionBookPersonOccupants.occupant_type_id==manager_occupant_type.id,
BuildDecisionBookPersonOccupants.active==True,
BuildDecisionBookPersonOccupants.is_confirmed==True,
BuildDecisionBookPersonOccupants.invite_id == invitation.id,
BuildDecisionBookPersonOccupants.occupant_type_id
== manager_occupant_type.id,
BuildDecisionBookPersonOccupants.active == True,
BuildDecisionBookPersonOccupants.is_confirmed == True,
)
person_occupant_manager.query.delete()

View File

@@ -73,9 +73,9 @@ class BuildDecisionBookInvitationsCreateEventMethods(MethodToEvent):
# Check decision book is valid for this token and building
decision_book = BuildDecisionBook.filter_one(
BuildDecisionBook.uu_id==data.build_decision_book_uu_id,
BuildDecisionBook.build_id==token_dict.selected_occupant.build_id,
BuildDecisionBook.active==True,
BuildDecisionBook.uu_id == data.build_decision_book_uu_id,
BuildDecisionBook.build_id == token_dict.selected_occupant.build_id,
BuildDecisionBook.active == True,
).get(1)
if not decision_book:
raise HTTPException(
@@ -83,7 +83,7 @@ class BuildDecisionBookInvitationsCreateEventMethods(MethodToEvent):
detail="Decision book not found. Please create decision book first",
)
occupant_building = Build.filter_one(
Build.id==token_dict.selected_occupant.build_id
Build.id == token_dict.selected_occupant.build_id
).get(1)
# Check meeting type is valid
@@ -107,9 +107,9 @@ class BuildDecisionBookInvitationsCreateEventMethods(MethodToEvent):
)
# Create an invitation for specific invitation type to start invite sending process
planned_date_expires = str(
system_arrow.get(data.planned_date).shift(days=15).date()
),
planned_date_expires = (
str(system_arrow.get(data.planned_date).shift(days=15).date()),
)
book_invitation = BuildDecisionBookInvitations.find_or_create(
build_id=token_dict.selected_occupant.build_id,
build_uu_id=token_dict.selected_occupant.build_uuid,
@@ -136,21 +136,24 @@ class BuildDecisionBookInvitationsCreateEventMethods(MethodToEvent):
# Get all the parts of the building that is occupant in token
build_parts = BuildParts.filter_all(
BuildParts.build_id == occupant_building.id,
BuildParts.active == True
BuildParts.build_id == occupant_building.id, BuildParts.active == True
).data
# Get all build living spaces that is found in building with distinct person id
occupants = OccupantTypes.filter_all(system=True)
BuildLivingSpace.filter_attr = None
build_living_spaces_people = BuildLivingSpace.filter_all(
BuildLivingSpace.build_parts_id.in_(
[build_part.id for build_part in build_parts.data]
),
BuildLivingSpace.occupant_type.in_(
[occupant.id for occupant in occupants.data]
),
).query.distinct(BuildLivingSpace.person_id).all()
build_living_spaces_people = (
BuildLivingSpace.filter_all(
BuildLivingSpace.build_parts_id.in_(
[build_part.id for build_part in build_parts.data]
),
BuildLivingSpace.occupant_type.in_(
[occupant.id for occupant in occupants.data]
),
)
.query.distinct(BuildLivingSpace.person_id)
.all()
)
if not build_living_spaces_people:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
@@ -201,9 +204,9 @@ class BuildDecisionBookInvitationsCreateEventMethods(MethodToEvent):
if invitations_person and not invitations_person.is_found:
print(f'"{invitations_person.token}",')
spaces_user = Users.filter_one(
Users.active==True,
Users.is_confirmed==True,
Users.person_id==build_living_spaces_user.person_id,
Users.active == True,
Users.is_confirmed == True,
Users.person_id == build_living_spaces_user.person_id,
).data
# print(
# f"Invitation is send : {spaces_user.email} "