alchemy functions updated
This commit is contained in:
@@ -41,7 +41,7 @@ class BuildListEventMethods(MethodToEvent):
|
||||
if isinstance(token_dict, OccupantTokenObject):
|
||||
Build.pre_query = Build.filter_all(
|
||||
Build.id == token_dict.selected_occupant.build_id,
|
||||
Build.active == True,
|
||||
*Build.valid_record_args(Build),
|
||||
).query
|
||||
elif isinstance(token_dict, EmployeeTokenObject):
|
||||
Build.pre_query = Build.select_action(
|
||||
@@ -50,8 +50,8 @@ class BuildListEventMethods(MethodToEvent):
|
||||
Build.filter_attr = list_options
|
||||
records = Build.filter_all(
|
||||
*Build.get_smart_query(smart_query=list_options.query),
|
||||
Build.active == True,
|
||||
)
|
||||
*Build.valid_record_args(Build),
|
||||
).data
|
||||
return AlchemyJsonResponse(
|
||||
completed=True,
|
||||
message="Building Records are listed",
|
||||
@@ -82,48 +82,44 @@ class BuildCreateEventMethods(MethodToEvent):
|
||||
)
|
||||
|
||||
created_build = Build.create_action(data=data, token=token_dict)
|
||||
if not created_build.is_found:
|
||||
build_type = BuildTypes.filter_by_one(type_code="APT_YNT", *BuildTypes.valid_record_dict).data
|
||||
if not build_type:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail="Build type APT_YNT is not found. Please contact with your system administrator.",
|
||||
)
|
||||
api_enum = ApiEnumDropdown.filter_by_one(
|
||||
enum_class="Directions", key="NN"
|
||||
).data
|
||||
if not api_enum:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail="Api Enum NN is not found. Please contact with your system administrator.",
|
||||
)
|
||||
build_parts = dict(
|
||||
address_gov_code=f"{data.gov_address_code}-M",
|
||||
build_id=int(created_build.id),
|
||||
build_uu_id=str(created_build.uu_id),
|
||||
part_no="0",
|
||||
part_type_id=int(build_type.id),
|
||||
part_type_uu_id=str(build_type.uu_id),
|
||||
part_direction_id=int(api_enum.id),
|
||||
part_direction_uu_id=str(api_enum.uu_id),
|
||||
part_code="MAN-ROOM",
|
||||
human_livable=False,
|
||||
is_confirmed=True,
|
||||
|
||||
build_type = BuildTypes.filter_by_one(
|
||||
type_code="APT_YNT", *BuildTypes.valid_record_dict
|
||||
).data
|
||||
if not build_type:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail="Build type APT_YNT is not found. Please contact with your system administrator.",
|
||||
)
|
||||
man_build_part = BuildParts.find_or_create(**build_parts)
|
||||
created_build.update(management_room_id=man_build_part.id)
|
||||
BuildParts.save()
|
||||
return JSONResponse(
|
||||
content={
|
||||
"completed": True,
|
||||
"message": "Create Build record completed. This build is assigned to you.",
|
||||
"data": created_build.get_dict(),
|
||||
},
|
||||
status_code=status.HTTP_200_OK,
|
||||
api_enum = ApiEnumDropdown.filter_by_one(enum_class="Directions", key="NN").data
|
||||
if not api_enum:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail="Api Enum NN is not found. Please contact with your system administrator.",
|
||||
)
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_406_NOT_ACCEPTABLE,
|
||||
detail=f"Build record create not successful for Employee UUID : {token_dict.selected_company.employee_uu_id}",
|
||||
build_parts = dict(
|
||||
address_gov_code=f"{data.gov_address_code}-M",
|
||||
build_id=int(created_build.id),
|
||||
build_uu_id=str(created_build.uu_id),
|
||||
part_no="0",
|
||||
part_type_id=int(build_type.id),
|
||||
part_type_uu_id=str(build_type.uu_id),
|
||||
part_direction_id=int(api_enum.id),
|
||||
part_direction_uu_id=str(api_enum.uu_id),
|
||||
part_code="MAN-ROOM",
|
||||
human_livable=False,
|
||||
is_confirmed=True,
|
||||
)
|
||||
man_build_part = BuildParts.find_or_create(**build_parts)
|
||||
created_build.update(management_room_id=man_build_part.id)
|
||||
BuildParts.save()
|
||||
return JSONResponse(
|
||||
content={
|
||||
"completed": True,
|
||||
"message": "Create Build record completed. This build is assigned to you.",
|
||||
"data": created_build.get_dict(),
|
||||
},
|
||||
status_code=status.HTTP_200_OK,
|
||||
)
|
||||
|
||||
@classmethod
|
||||
@@ -132,8 +128,8 @@ class BuildCreateEventMethods(MethodToEvent):
|
||||
):
|
||||
records = Addresses.list_via_employee(
|
||||
token_dict=token_dict, filter_expr=[Addresses.uu_id == data.address_uu_id]
|
||||
)
|
||||
if not records.data:
|
||||
).data
|
||||
if not records:
|
||||
raise HTTPException(
|
||||
status_code=404,
|
||||
detail=f"This address {data.address_uu_id} is not found in the user's address list.",
|
||||
@@ -180,20 +176,23 @@ class BuildUpdateEventMethods(MethodToEvent):
|
||||
Build.pre_query = Build.select_action(
|
||||
employee_id=token_dict.selected_company.employee_id
|
||||
)
|
||||
if Build.filter_all(Build.person_id == token_dict.person_id):
|
||||
if Build.filter_all(
|
||||
Build.person_id == token_dict.person_id,
|
||||
*Build.valid_record_args(Build),
|
||||
).data:
|
||||
Build.pre_query = None
|
||||
if updated_build := Build.update_action(
|
||||
updated_build = Build.update_action(
|
||||
data=data, token=token_dict, build_uu_id=build_uu_id
|
||||
):
|
||||
Build.save()
|
||||
return JSONResponse(
|
||||
content={
|
||||
"completed": True,
|
||||
"message": "Update Build record",
|
||||
"data": updated_build,
|
||||
},
|
||||
status_code=status.HTTP_200_OK,
|
||||
)
|
||||
)
|
||||
Build.save()
|
||||
return JSONResponse(
|
||||
content={
|
||||
"completed": True,
|
||||
"message": "Update Build record",
|
||||
"data": updated_build,
|
||||
},
|
||||
status_code=status.HTTP_200_OK,
|
||||
)
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_401_UNAUTHORIZED,
|
||||
detail=f"This user can not modify {build_uu_id} - building.",
|
||||
|
||||
@@ -35,10 +35,12 @@ class BuildingBuildPartsListEventMethods(MethodToEvent):
|
||||
)
|
||||
build_list_ids = [build.id for build in build_list_query.all()]
|
||||
BuildParts.pre_query = BuildParts.query.filter(
|
||||
BuildParts.build_id.in_(build_list_ids)
|
||||
BuildParts.build_id.in_(build_list_ids),
|
||||
*BuildParts.valid_record_args(BuildParts),
|
||||
)
|
||||
records = BuildParts.filter_active(
|
||||
*BuildParts.get_smart_query(list_options.query)
|
||||
*BuildParts.get_smart_query(list_options.query),
|
||||
*BuildParts.valid_record_args(BuildParts),
|
||||
)
|
||||
return AlchemyJsonResponse(
|
||||
completed=True,
|
||||
@@ -61,15 +63,6 @@ class BuildingBuildPartsCreateEventMethods(MethodToEvent):
|
||||
token_dict: Union[EmployeeTokenObject, OccupantTokenObject],
|
||||
):
|
||||
created_build = BuildParts.create_action(data=data, token=token_dict)
|
||||
if not created_build:
|
||||
return JSONResponse(
|
||||
content={
|
||||
"completed": False,
|
||||
"message": "Create Build Parts is not completed",
|
||||
"data": {},
|
||||
},
|
||||
status_code=status.HTTP_406_NOT_ACCEPTABLE,
|
||||
)
|
||||
created_build.save()
|
||||
return JSONResponse(
|
||||
content={
|
||||
@@ -94,21 +87,13 @@ class BuildingBuildPartsUpdateEventMethods(MethodToEvent):
|
||||
data: InsertBuildParts,
|
||||
token_dict: Union[EmployeeTokenObject, OccupantTokenObject],
|
||||
):
|
||||
if updated_build := BuildParts.update_action(data=data, token=token_dict):
|
||||
updated_build.save()
|
||||
return JSONResponse(
|
||||
content={
|
||||
"completed": True,
|
||||
"message": "Update Build Parts record",
|
||||
"data": updated_build,
|
||||
},
|
||||
status_code=status.HTTP_200_OK,
|
||||
)
|
||||
updated_build = BuildParts.update_action(data=data, token=token_dict)
|
||||
updated_build.save()
|
||||
return JSONResponse(
|
||||
content={
|
||||
"completed": True,
|
||||
"message": "Update Build Parts record",
|
||||
"data": {},
|
||||
"data": updated_build,
|
||||
},
|
||||
status_code=status.HTTP_200_OK,
|
||||
)
|
||||
@@ -123,7 +108,10 @@ class BuildingBuildPartsPatchEventMethods(MethodToEvent):
|
||||
|
||||
@classmethod
|
||||
def building_build_parts_patch(cls, data, token_dict):
|
||||
find_one_build = BuildParts.filter_one(BuildParts.uu_id == data.uu_id).data
|
||||
find_one_build = BuildParts.filter_one(
|
||||
BuildParts.uu_id == data.uu_id,
|
||||
*BuildParts.valid_record_args(BuildParts),
|
||||
).data
|
||||
access_authorized_build = BuildParts.select_action(
|
||||
duty_id=token_dict.selected_company.duty_id,
|
||||
filter_expr=[BuildParts.id == find_one_build.id],
|
||||
|
||||
@@ -37,7 +37,7 @@ class BuildingLivingSpacesPartsListEventMethods(MethodToEvent):
|
||||
Build.filter_attr = list_options
|
||||
build_part_id_list_query = BuildParts.filter_all(
|
||||
BuildParts.build_id.in_([build.id for build in build_id_list_query.all()]),
|
||||
BuildParts.active == True,
|
||||
*BuildParts.valid_record_args(BuildParts),
|
||||
).data
|
||||
|
||||
list_options.query.pop("expiry_starts", None)
|
||||
@@ -47,8 +47,8 @@ class BuildingLivingSpacesPartsListEventMethods(MethodToEvent):
|
||||
BuildLivingSpace.build_parts_id.in_(
|
||||
[build_part.id for build_part in build_part_id_list_query]
|
||||
),
|
||||
BuildLivingSpace.active == True,
|
||||
*BuildLivingSpace.get_smart_query(smart_query=list_options.query),
|
||||
*BuildLivingSpace.valid_record_args(BuildLivingSpace),
|
||||
)
|
||||
return AlchemyJsonResponse(
|
||||
completed=True,
|
||||
@@ -66,7 +66,7 @@ class BuildingLivingSpacesPartsListEventMethods(MethodToEvent):
|
||||
Build.filter_attr = list_options
|
||||
build_part_id_list_query = BuildParts.filter_all(
|
||||
BuildParts.build_id.in_([build.id for build in build_id_list_query.all()]),
|
||||
BuildParts.active == True,
|
||||
*BuildLivingSpace.valid_record_args(BuildLivingSpace),
|
||||
).data
|
||||
|
||||
records = BuildLivingSpace.filter_all(
|
||||
@@ -74,6 +74,7 @@ class BuildingLivingSpacesPartsListEventMethods(MethodToEvent):
|
||||
[build_part.id for build_part in build_part_id_list_query]
|
||||
),
|
||||
*BuildLivingSpace.get_smart_query(smart_query=list_options.query),
|
||||
*BuildLivingSpace.valid_record_args(BuildLivingSpace),
|
||||
).data
|
||||
return AlchemyJsonResponse(
|
||||
completed=True,
|
||||
@@ -96,7 +97,6 @@ class BuildingLivingSpacesPartsCreateEventMethods(MethodToEvent):
|
||||
token_dict: typing.Union[EmployeeTokenObject, OccupantTokenObject],
|
||||
):
|
||||
from api_library.date_time_actions.date_functions import system_arrow
|
||||
from sqlalchemy.sql import select
|
||||
|
||||
data_dict = data.dump()
|
||||
build_id_list_query = Build.select_action(
|
||||
@@ -105,6 +105,7 @@ class BuildingLivingSpacesPartsCreateEventMethods(MethodToEvent):
|
||||
build_part = BuildParts.filter_one(
|
||||
BuildParts.uu_id == data.build_parts_uu_id,
|
||||
BuildParts.build_id.in_([build.id for build in build_id_list_query.all()]),
|
||||
*BuildLivingSpace.valid_record_args(BuildLivingSpace),
|
||||
).data
|
||||
if not build_part:
|
||||
raise HTTPException(
|
||||
@@ -112,7 +113,10 @@ class BuildingLivingSpacesPartsCreateEventMethods(MethodToEvent):
|
||||
detail=f"{data.build_parts_uu_id} - Build Part is not found in database. Check build part uu_id",
|
||||
)
|
||||
|
||||
life_person = People.filter_one(People.uu_id == data.person_uu_id or "").data
|
||||
life_person = People.filter_one(
|
||||
People.uu_id == data.person_uu_id or "",
|
||||
*People.valid_record_args(People),
|
||||
).data
|
||||
if not life_person:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_418_IM_A_TEAPOT,
|
||||
@@ -139,17 +143,17 @@ class BuildingLivingSpacesPartsCreateEventMethods(MethodToEvent):
|
||||
BuildLivingSpace.build_parts_id == build_part.id,
|
||||
BuildLivingSpace.person_id == life_person.id,
|
||||
BuildLivingSpace.occupant_type == occupant_type.id,
|
||||
BuildLivingSpace.active == True,
|
||||
BuildLivingSpace.is_confirmed == True,
|
||||
str(system_arrow.now()) < BuildLivingSpace.expiry_ends,
|
||||
str(system_arrow.now()) >= BuildLivingSpace.expiry_starts,
|
||||
*BuildLivingSpace.valid_record_args(BuildLivingSpace),
|
||||
# str(system_arrow.now()) < BuildLivingSpace.expiry_ends,
|
||||
# str(system_arrow.now()) >= BuildLivingSpace.expiry_starts,
|
||||
select_args=[BuildLivingSpace.id],
|
||||
order_by=BuildLivingSpace.expiry_starts.desc(),
|
||||
limit=1,
|
||||
).data
|
||||
|
||||
last_living_space = BuildLivingSpace.filter_one(
|
||||
BuildLivingSpace.id == living_space_id[0] if living_space_id else None
|
||||
BuildLivingSpace.id == living_space_id[0] if living_space_id else None,
|
||||
*BuildLivingSpace.valid_record_args(BuildLivingSpace),
|
||||
)
|
||||
|
||||
data_dict["expiry_starts"] = str(system_arrow.now())
|
||||
@@ -183,7 +187,6 @@ class BuildingLivingSpacesPartsUpdateEventMethods(MethodToEvent):
|
||||
@classmethod
|
||||
def building_live_space_update(cls, build_uu_id: str, data, token_dict):
|
||||
from api_library.date_time_actions.date_functions import system_arrow
|
||||
from sqlalchemy.sql import select
|
||||
|
||||
data_dict = data.dump()
|
||||
build_id_list_query = Build.select_action(
|
||||
@@ -192,7 +195,7 @@ class BuildingLivingSpacesPartsUpdateEventMethods(MethodToEvent):
|
||||
build_part = BuildParts.filter_one(
|
||||
BuildParts.uu_id == data.build_parts_uu_id,
|
||||
BuildParts.build_id.in_([build.id for build in build_id_list_query.all()]),
|
||||
BuildParts.active == True,
|
||||
*BuildParts.valid_record_args(BuildParts),
|
||||
).data
|
||||
if not build_part:
|
||||
raise HTTPException(
|
||||
@@ -211,13 +214,15 @@ class BuildingLivingSpacesPartsUpdateEventMethods(MethodToEvent):
|
||||
)
|
||||
|
||||
living_space_id = BuildLivingSpace.select_only(
|
||||
*BuildLivingSpace.valid_record_args(BuildLivingSpace),
|
||||
select_args=[BuildLivingSpace.id],
|
||||
order_by=BuildLivingSpace.expiry_starts.desc(),
|
||||
limit=1,
|
||||
).get(1)
|
||||
|
||||
last_living_space = BuildLivingSpace.filter_one(
|
||||
BuildLivingSpace.id == living_space_id if living_space_id else None
|
||||
BuildLivingSpace.id == living_space_id if living_space_id else None,
|
||||
*BuildLivingSpace.valid_record_args(BuildLivingSpace),
|
||||
).data
|
||||
|
||||
data_dict["expiry_starts"] = str(system_arrow.now())
|
||||
|
||||
Reference in New Issue
Block a user