validations and dockerfiles are updated

This commit is contained in:
2025-01-10 12:40:52 +03:00
parent f4f9e584ff
commit 4eb95e4d9c
107 changed files with 400185 additions and 1338 deletions

View File

@@ -21,7 +21,7 @@ from api_validations.validations_request import (
)
from api_validations.validations_response import ListBuildingResponse
from api_validations.core_response import AlchemyJsonResponse
from ApiServices.api_handlers import AlchemyJsonResponse
from api_events.events.abstract_class import MethodToEvent, ActionsSchema
from api_objects.auth.token_objects import EmployeeTokenObject, OccupantTokenObject
@@ -57,9 +57,8 @@ class BuildListEventMethods(MethodToEvent):
records = Build.filter_all()
return AlchemyJsonResponse(
completed=True,
message="Building Records are listed",
message="Building records listed successfully",
result=records,
response_model=ListBuildingResponse,
)
@@ -124,20 +123,17 @@ class BuildCreateEventMethods(MethodToEvent):
created_build.save()
man_build_part.update(is_confirmed=True)
man_build_part.save()
# created_build_relation = RelationshipEmployee2Build.find_or_create(
# company_id=token_dict.selected_company.company_id,
# member_id=created_build.id,
# employee_id=token_dict.selected_company.employee_id,
# )
# created_build_relation.update(is_confirmed=True)
# created_build_relation.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,
relationship = RelationshipEmployee2Build.find_or_create(
employee_id=token_dict.selected_company.employee_id,
build_id=created_build.id,
company_id=token_dict.selected_company.company_id,
)
relationship.save()
return AlchemyJsonResponse(
completed=True,
message="Building created successfully",
result=created_build.get_dict(),
)
@classmethod
@@ -166,20 +162,17 @@ class BuildCreateEventMethods(MethodToEvent):
)
created_build = Build.create_action(data=data, token=token_dict)
created_build_relation = RelationshipEmployee2Build.find_or_create(
company_id=token_dict.selected_company.company_id,
member_id=created_build.id,
relationship = RelationshipEmployee2Build.find_or_create(
employee_id=token_dict.selected_company.employee_id,
build_id=created_build.id,
company_id=token_dict.selected_company.company_id,
)
created_build.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,
relationship.save()
return AlchemyJsonResponse(
completed=True,
message="Building created successfully",
result=created_build.get_dict(),
)
@@ -205,44 +198,30 @@ class BuildUpdateEventMethods(MethodToEvent):
token_dict: Union[EmployeeTokenObject, OccupantTokenObject],
):
if isinstance(token_dict, OccupantTokenObject):
Build.pre_query = Build.select_action(
employee_id=token_dict.selected_company.employee_id
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Occupant cannot update building",
)
updated_build = Build.update_action(
data=data, token=token_dict, build_uu_id=build_uu_id
Build.pre_query = Build.select_action(
employee_id=token_dict.selected_company.employee_id
)
build = Build.filter_one(Build.uu_id == build_uu_id).data
if not build:
return AlchemyJsonResponse(
completed=False,
message="Building not found",
result={},
status_code="HTTP_404_NOT_FOUND"
)
Build.save()
return JSONResponse(
content={
"completed": True,
"message": "Update Build record",
"data": updated_build.get_dict(),
},
status_code=status.HTTP_200_OK,
)
elif isinstance(token_dict, EmployeeTokenObject):
find_one_build = Build.filter_one(
Build.uu_id == build_uu_id,
).data
access_authorized_build = Build.select_action(
employee_id=token_dict.selected_company.employee_id,
filter_expr=[Build.id == find_one_build.id],
)
if access_authorized_build.count:
updated_build = Build.update_action(
data=data, token=token_dict, build_uu_id=build_uu_id
)
return JSONResponse(
content={
"completed": True,
"message": "Update Build record",
"data": updated_build.get_dict(),
},
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.",
build.update(**data.excluded_dump())
build.save()
return AlchemyJsonResponse(
completed=True,
message="Building updated successfully",
result=build.get_dict(),
)
@@ -261,36 +240,31 @@ class BuildPatchEventMethods(MethodToEvent):
@classmethod
def build_patch(cls, build_uu_id: str, data: PatchRecord, token_dict):
find_one_build = Build.filter_one(
Build.uu_id == build_uu_id,
)
access_authorized_build = Build.select_action(
employee_id=token_dict.selected_company.employee_id,
filter_expr=[Build.id == find_one_build.id],
)
if access_authorized_build.count:
action = data.excluded_dump()
find_one_build.active = bool(action.get("active", find_one_build.active))
find_one_build.is_confirmed = bool(
action.get("confirm", find_one_build.is_confirmed)
if isinstance(token_dict, OccupantTokenObject):
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Occupant cannot patch building",
)
find_one_build.deleted = bool(action.get("delete", find_one_build.deleted))
find_one_build.save()
return JSONResponse(
content={
"completed": True,
"message": "Patch Build record completed",
"data": find_one_build.get_dict(),
},
status_code=status.HTTP_200_OK,
Build.pre_query = Build.select_action(
employee_id=token_dict.selected_company.employee_id
)
build = Build.filter_one(Build.uu_id == build_uu_id).data
if not build:
return AlchemyJsonResponse(
completed=False,
message="Building not found",
result={},
status_code="HTTP_404_NOT_FOUND"
)
return JSONResponse(
content={
"completed": False,
"message": "Patch Build record failed",
"data": {},
},
status_code=status.HTTP_200_OK,
build.update(**data.excluded_dump())
build.save()
return AlchemyJsonResponse(
completed=True,
message="Building patched successfully",
result=build.get_dict(),
)

View File

@@ -11,7 +11,9 @@ from api_validations.validations_request import (
ListOptions,
)
from api_validations.core_response import AlchemyJsonResponse
from api_validations.validations_response.building_responses import BuildAreaListResponse
from ApiServices.api_handlers import AlchemyJsonResponse
from api_events.events.abstract_class import MethodToEvent, ActionsSchema
from api_objects.auth.token_objects import EmployeeTokenObject, OccupantTokenObject
@@ -23,7 +25,7 @@ class BuildAreaListEventMethods(MethodToEvent):
"0bb51845-65a2-4340-8872-a3b5aad95468": "build_area_list",
}
__event_validation__ = {
"0bb51845-65a2-4340-8872-a3b5aad95468": None,
"0bb51845-65a2-4340-8872-a3b5aad95468": BuildAreaListResponse,
}
@classmethod
@@ -49,7 +51,12 @@ class BuildAreaListEventMethods(MethodToEvent):
BuildArea.filter_attr = list_options
records = BuildArea.filter_all()
return AlchemyJsonResponse(
completed=True, message="List of Build Area", result=records
completed=True,
message="Building areas listed successfully",
result=records,
cls_object=BuildArea,
filter_attributes=list_options,
response_model=BuildAreaListResponse
)
@@ -103,14 +110,11 @@ class BuildAreaCreateEventMethods(MethodToEvent):
data_dict["build_id"] = selected_build.id
data_dict["build_uu_id"] = str(selected_build.uu_id)
created_build_part = BuildArea.find_or_create(**data_dict)
created_build_part.save()
created_build_part.update(is_confirmed=True)
created_build_part.save()
area = BuildArea.insert_one(data_dict).data
return AlchemyJsonResponse(
completed=True,
message="Created Build Area",
result=created_build_part.get_dict(),
message="Building area created successfully",
result=area
)
@@ -131,10 +135,11 @@ class BuildAreaUpdateEventMethods(MethodToEvent):
data: UpdateBuildArea,
token_dict: typing.Union[EmployeeTokenObject, OccupantTokenObject],
):
area = BuildArea.update_one(build_uu_id, data).data
return AlchemyJsonResponse(
completed=False,
message="Update Build record",
result=None,
completed=True,
message="Building area updated successfully",
result=area
)
@@ -155,10 +160,11 @@ class BuildAreaPatchEventMethods(MethodToEvent):
data,
token_dict: typing.Union[EmployeeTokenObject, OccupantTokenObject],
):
area = BuildArea.patch_one(build_uu_id, data).data
return AlchemyJsonResponse(
completed=False,
message="Patch Build record",
result=None,
completed=True,
message="Building area patched successfully",
result=area
)

View File

@@ -10,7 +10,7 @@ from databases import (
)
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 ApiServices.api_handlers import AlchemyJsonResponse
from api_validations.validations_request import (
InsertBuildParts,
@@ -46,11 +46,8 @@ class BuildingBuildPartsListEventMethods(MethodToEvent):
records = BuildParts.filter_all()
return AlchemyJsonResponse(
completed=True,
message="Building Parts Records are listed",
message="Building parts listed successfully",
result=records,
cls_object=BuildParts,
response_model=BuildPartsListResponse,
filter_attributes=list_options,
)
@@ -72,13 +69,10 @@ class BuildingBuildPartsCreateEventMethods(MethodToEvent):
created_build.save()
created_build.update(is_confirmed=True)
created_build.save()
return JSONResponse(
content={
"completed": True,
"message": "Create Build Parts record",
"data": created_build.get_dict(),
},
status_code=status.HTTP_200_OK,
return AlchemyJsonResponse(
completed=True,
message="Building part created successfully",
result=created_build,
)
@@ -98,13 +92,10 @@ class BuildingBuildPartsUpdateEventMethods(MethodToEvent):
):
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,
return AlchemyJsonResponse(
completed=True,
message="Building part updated successfully",
result=updated_build,
)
@@ -133,21 +124,15 @@ class BuildingBuildPartsPatchEventMethods(MethodToEvent):
)
find_one_build.deleted = bool(action.get("delete", find_one_build.deleted))
find_one_build.save()
return JSONResponse(
content={
"completed": True,
"message": "Update Build Parts record",
"data": find_one_build.get_dict(),
},
status_code=status.HTTP_200_OK,
return AlchemyJsonResponse(
completed=True,
message="Building part patched successfully",
result=find_one_build,
)
return JSONResponse(
content={
"completed": False,
"message": "Update Build Parts record",
"data": {},
},
status_code=status.HTTP_200_OK,
return AlchemyJsonResponse(
completed=False,
message="Building part patched failed",
result={},
)

View File

@@ -11,10 +11,11 @@ from api_validations.validations_request import (
ListOptions,
)
from api_validations.core_response import AlchemyJsonResponse
from api_validations.validations_response.building_responses import BuildSitesListResponse
from ApiServices.api_handlers import AlchemyJsonResponse
from api_events.events.abstract_class import MethodToEvent, ActionsSchema
from api_objects.auth.token_objects import EmployeeTokenObject, OccupantTokenObject
from databases.sql_models.identity.identity import Addresses
class BuildSitesListEventMethods(MethodToEvent):
@@ -24,7 +25,7 @@ class BuildSitesListEventMethods(MethodToEvent):
"6798414c-6c7d-47f0-9d8b-6935a0f51c2e": "build_sites_list",
}
__event_validation__ = {
"6798414c-6c7d-47f0-9d8b-6935a0f51c2e": None,
"6798414c-6c7d-47f0-9d8b-6935a0f51c2e": BuildSitesListResponse,
}
@classmethod
@@ -58,7 +59,12 @@ class BuildSitesListEventMethods(MethodToEvent):
BuildSites.filter_attr = list_options
records = BuildSites.filter_all()
return AlchemyJsonResponse(
completed=True, message="Update Build record", result=records
completed=True,
message="Building sites listed successfully",
result=records,
cls_object=BuildSites,
filter_attributes=list_options,
response_model=BuildSitesListResponse
)
@@ -102,14 +108,11 @@ class BuildSitesCreateEventMethods(MethodToEvent):
},
)
data_dict = data.excluded_dump()
created_build_part = BuildSites.find_or_create(**data_dict)
created_build_part.save()
created_build_part.update(is_confirmed=True)
created_build_part.save()
site = BuildSites.insert_one(data_dict).data
return AlchemyJsonResponse(
completed=True,
message="Update Build record",
result=created_build_part,
message="Building site created successfully",
result=site
)
@@ -130,10 +133,11 @@ class BuildSitesUpdateEventMethods(MethodToEvent):
data: UpdateBuildArea,
token_dict: typing.Union[EmployeeTokenObject, OccupantTokenObject],
):
site = BuildSites.update_one(build_uu_id, data).data
return AlchemyJsonResponse(
completed=False,
message="Update Build record",
result=None,
completed=True,
message="Building site updated successfully",
result=site
)
@@ -154,10 +158,11 @@ class BuildSitesPatchEventMethods(MethodToEvent):
data,
token_dict: typing.Union[EmployeeTokenObject, OccupantTokenObject],
):
site = BuildSites.patch_one(build_uu_id, data).data
return AlchemyJsonResponse(
completed=False,
message="Patch Build record",
result=None,
completed=True,
message="Building site patched successfully",
result=site
)

View File

@@ -2,10 +2,11 @@ from typing import Union
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 ApiServices.api_handlers import AlchemyJsonResponse
from api_validations.validations_request import (
ListOptions,
)
from api_validations.validations_response.building_responses import BuildTypesListResponse
from databases.sql_models.building.build import BuildTypes
@@ -15,7 +16,9 @@ class BuildTypesListEventMethods(MethodToEvent):
__event_keys__ = {
"5344d03c-fc47-43ec-8c44-6c2acd7e5d9f": "build_types_list",
}
__event_validation__ = {"5344d03c-fc47-43ec-8c44-6c2acd7e5d9f": None}
__event_validation__ = {
"5344d03c-fc47-43ec-8c44-6c2acd7e5d9f": BuildTypesListResponse
}
@classmethod
def build_types_list(
@@ -30,16 +33,23 @@ class BuildTypesListEventMethods(MethodToEvent):
results = BuildTypes.filter_all()
return AlchemyJsonResponse(
completed=True,
message="Building types listed successfully",
result=results,
message="Build Types are listed successfully",
cls_object=BuildTypes,
filter_attributes=list_options,
response_model=BuildTypesListResponse
)
elif isinstance(token_dict, OccupantTokenObject):
raise HTTPException(
status_code=403, detail="You are not authorized to access this endpoint"
return AlchemyJsonResponse(
completed=False,
message="You are not authorized to access this endpoint",
result=None
)
else:
raise HTTPException(
status_code=403, detail="You are not authorized to access this endpoint"
return AlchemyJsonResponse(
completed=False,
message="You are not authorized to access this endpoint",
result=None
)

View File

@@ -5,7 +5,6 @@ from api_events.events.events.events_bind_services import (
ServiceBindOccupantEventMethods,
)
from databases import (
Modules,
BuildParts,
Build,
BuildLivingSpace,
@@ -14,7 +13,7 @@ from databases import (
)
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 ApiServices.api_handlers import AlchemyJsonResponse
from api_validations.validations_request import (
InsertBuildLivingSpace,
UpdateBuildLivingSpace,
@@ -71,6 +70,11 @@ class BuildingLivingSpacesListEventMethods(MethodToEvent):
).query
BuildLivingSpace.filter_attr = list_options
records = BuildLivingSpace.filter_all()
return AlchemyJsonResponse(
completed=True,
message="Living spaces listed successfully",
result=records
)
elif isinstance(token_dict, EmployeeTokenObject):
build_id_list_query = Build.select_action(
employee_id=token_dict.selected_company.employee_id
@@ -101,14 +105,11 @@ class BuildingLivingSpacesListEventMethods(MethodToEvent):
).query
BuildLivingSpace.filter_attr = list_options
records = BuildLivingSpace.filter_all()
return AlchemyJsonResponse(
completed=True,
message="Building Living Spaces are listed successfully",
result=records,
response_model=LivingSpaceListResponse,
cls_object=BuildLivingSpace,
filter_attributes=list_options,
)
return AlchemyJsonResponse(
completed=True,
message="Living spaces listed successfully",
result=records
)
class BuildingLivingSpacesCreateEventMethods(MethodToEvent):
@@ -210,7 +211,11 @@ class BuildingLivingSpacesCreateEventMethods(MethodToEvent):
build_living_space_id=created_living_space.id,
service_id=occupants_service.id,
)
return created_living_space
return AlchemyJsonResponse(
completed=True,
message="Living space created successfully",
result=created_living_space
)
class BuildingLivingSpacesUpdateEventMethods(MethodToEvent):
@@ -295,6 +300,13 @@ class BuildingLivingSpacesUpdateEventMethods(MethodToEvent):
data_dict["owner_person_id"] = life_person.id
del data_dict["build_parts_uu_id"], data_dict["life_person_uu_id"]
living_space = BuildLivingSpace.update_one(build_uu_id, data_dict).data
return AlchemyJsonResponse(
completed=True,
message="Living space updated successfully",
result=living_space
)
BuildingLivingSpacesListEventMethod = BuildingLivingSpacesListEventMethods(
action=ActionsSchema(endpoint="/building/living_space/list")