diff --git a/api_events/events/__init__.py b/api_events/events/__init__.py index c9651b1..7a1f13d 100644 --- a/api_events/events/__init__.py +++ b/api_events/events/__init__.py @@ -136,6 +136,12 @@ from api_events.events.decision_book.project_decision_book_person import ( ProjectDecisionBookPersonUpdateEventMethod, ProjectDecisionBookPersonPatchEventMethod, ) +from api_events.events.decision_book.project_decision_book_items import ( + BuildDecisionBookProjectItemsPatchEventMethod, + BuildDecisionBookProjectItemsUpdateEventMethod, + BuildDecisionBookProjectItemsCreateEventMethod, + BuildDecisionBookProjectItemsListEventMethod, +) from api_events.events.events.events_bind_events import ( EventBindOccupantEventMethod, EventBindEmployeeEventMethod, @@ -230,6 +236,10 @@ __all__ = [ "ProjectDecisionBookPersonCreateEventMethod", "ProjectDecisionBookPersonUpdateEventMethod", "ProjectDecisionBookPersonPatchEventMethod", + "BuildDecisionBookProjectItemsPatchEventMethod", + "BuildDecisionBookProjectItemsUpdateEventMethod", + "BuildDecisionBookProjectItemsCreateEventMethod", + "BuildDecisionBookProjectItemsListEventMethod", "CompanyPatchEventMethod", "CompanyCreateEventMethod", "CompanyUpdateEventMethod", diff --git a/api_events/events/decision_book/decision_book_decision_book_items.py b/api_events/events/decision_book/decision_book_decision_book_items.py index 24a7417..5394c38 100644 --- a/api_events/events/decision_book/decision_book_decision_book_items.py +++ b/api_events/events/decision_book/decision_book_decision_book_items.py @@ -271,9 +271,10 @@ class DecisionBookDecisionBookItemsCreateEventMethods(MethodToEvent): f"is assigned to {occupant_man.occupant_description}" ) decision_book_item.save_and_confirm() - project_lead = ApiEnumDropdown.filter_by_one( - system=True, key="PTT-LDR", enum_class="ProjectTeamTypes" + project_lead = OccupantTypes.filter_by_one( + system=True, occupant_code="PRJ-LDR", occupant_category_type="PRJ" ).data + project_person = BuildDecisionBookProjectPerson.find_or_create( build_decision_book_project_id=book_project_created.id, build_decision_book_project_uu_id=str(book_project_created.uu_id), diff --git a/api_events/events/decision_book/project_decision_book_items.py b/api_events/events/decision_book/project_decision_book_items.py index 0a764b6..f0d8616 100644 --- a/api_events/events/decision_book/project_decision_book_items.py +++ b/api_events/events/decision_book/project_decision_book_items.py @@ -16,4 +16,111 @@ from api_objects.auth.token_objects import EmployeeTokenObject, OccupantTokenObj from api_validations.core_response import AlchemyJsonResponse +class BuildDecisionBookProjectItemsListEventMethods(MethodToEvent): + event_type = "SELECT" + __event_keys__ = { + "ce3630e4-2bf9-4433-bdab-1ee72117e54b": "build_decision_book_project_items_list", + } + + @staticmethod + def build_decision_book_project_items_list( + requester: Union[EmployeeTokenObject, OccupantTokenObject], + list_options: ListOptions, + ): + response = BuildDecisionBookProjectItems.list_items( + requester=requester, + list_options=list_options, + ) + return AlchemyJsonResponse( + message="Build Decision Book Project Items List", + result=response, + ) + + +class BuildDecisionBookProjectItemsCreateEventMethods(MethodToEvent): + + event_type = "CREATE" + __event_keys__ = { + "b27e4fd0-6e3e-441b-9b33-806ac7082444": "build_decision_book_project_items_create", + } + + @staticmethod + def build_decision_book_project_items_create( + requester: Union[EmployeeTokenObject, OccupantTokenObject], + decision_book_project_items: InsertBuildDecisionBookProjectItems, + ): + response = BuildDecisionBookProjectItems.create_item( + requester=requester, + decision_book_project_items=decision_book_project_items, + ) + return AlchemyJsonResponse( + message="Build Decision Book Project Items Create", + result=response, + ) + + +class BuildDecisionBookProjectItemsUpdateEventMethods(MethodToEvent): + + event_type = "UPDATE" + __event_keys__ = { + "b2b7cdce-9a0c-4722-90ff-8bef36b4ec6b": "build_decision_book_project_items_update", + } + + @staticmethod + def build_decision_book_project_items_update( + requester: Union[EmployeeTokenObject, OccupantTokenObject], + decision_book_project_items: UpdateBuildDecisionBookProjectItems, + ): + response = BuildDecisionBookProjectItems.update_item( + requester=requester, + decision_book_project_items=decision_book_project_items, + ) + return AlchemyJsonResponse( + message="Build Decision Book Project Items Update", + result=response, + ) + + +class BuildDecisionBookProjectItemsPatchEventMethods(MethodToEvent): + + event_type = "SELECT" + __event_keys__ = { + "e59d50df-dd22-4823-aeae-b9490332885c": "build_decision_book_project_items_patch", + } + + @staticmethod + def build_decision_book_project_items_patch( + requester: Union[EmployeeTokenObject, OccupantTokenObject], + decision_book_project_items: UpdateBuildDecisionBookProjectItems, + ): + response = BuildDecisionBookProjectItems.delete_item( + requester=requester, + decision_book_project_items=decision_book_project_items, + ) + return AlchemyJsonResponse( + message="Build Decision Book Project Items Patch", + result=response, + ) + + +BuildDecisionBookProjectItemsListEventMethod = ( + BuildDecisionBookProjectItemsListEventMethods( + action=ActionsSchema(endpoint="/build/decision_book/project/items/list") + ) +) +BuildDecisionBookProjectItemsCreateEventMethod = ( + BuildDecisionBookProjectItemsCreateEventMethods( + action=ActionsSchema(endpoint="/build/decision_book/project/items/create") + ) +) +BuildDecisionBookProjectItemsUpdateEventMethod = ( + BuildDecisionBookProjectItemsUpdateEventMethods( + action=ActionsSchema(endpoint="/build/decision_book/project/items/update") + ) +) +BuildDecisionBookProjectItemsPatchEventMethod = ( + BuildDecisionBookProjectItemsPatchEventMethods( + action=ActionsSchema(endpoint="/build/decision_book/project/items/patch") + ) +) diff --git a/databases/sql_models/response_model.py b/databases/sql_models/response_model.py index ba9cde6..9fba8cd 100644 --- a/databases/sql_models/response_model.py +++ b/databases/sql_models/response_model.py @@ -23,13 +23,15 @@ class AlchemyResponse: return self.__query.first() except Exception as e: err = e - self.__query.session.close() + self.__query.session.expunge_all() + self.__query.session.rollback() return None try: return self.__query.all() except Exception as e: err = e - self.__query.session.close() + self.__query.session.expunge_all() + self.__query.session.rollback() return [] @property diff --git a/service_app/routers/decision_book/project_decision_book_items/router.py b/service_app/routers/decision_book/project_decision_book_items/router.py new file mode 100644 index 0000000..0ab5e43 --- /dev/null +++ b/service_app/routers/decision_book/project_decision_book_items/router.py @@ -0,0 +1,66 @@ +from fastapi.routing import APIRouter +from fastapi.requests import Request + +from api_validations.validations_request import ( + InsertBuildDecisionBookProjectItems, + UpdateBuildDecisionBookProjectItems, + ListOptions, +) +from api_services.redis.auth_actions.token import parse_token_object_to_dict + + +build_decision_book_project_items_route = APIRouter( + prefix="/build/decision_book/project/items", tags=["Decision Project Book Project Items"] +) +build_decision_book_project_items_route.include_router( + build_decision_book_project_items_route, include_in_schema=True +) + + +@build_decision_book_project_items_route.post( + path="/list", summary="List Active/Delete/Confirm Decision Project Book Project Items" +) +def build_decision_book_project_people_items_list(request: Request, list_options: ListOptions): + token_dict = parse_token_object_to_dict(request=request) + return token_dict.available_event(list_options=list_options, token_dict=token_dict) + + +@build_decision_book_project_items_route.post( + path="/create", + summary="Create Build Decision Book Project People with given auth levels", +) +def build_decision_book_project_people_items_create(request: Request, data: InsertBuildDecisionBookProjectItems): + token_dict = parse_token_object_to_dict(request=request) + return token_dict.available_event(data=data, token_dict=token_dict) + + +@build_decision_book_project_items_route.post( + path="/update/{build_decision_book_project_item_uu_id}", + summary="Add people to Decision Project Book Project Items with given auth levels", +) +def build_decision_book_project_people_items_update( + request: Request, + build_decision_book_project_item_uu_id: str, + data: UpdateBuildDecisionBookProjectItems +): + token_dict = parse_token_object_to_dict(request=request) + return token_dict.available_event( + data=data, + build_decision_book_project_item_uu_id=build_decision_book_project_item_uu_id, + token_dict=token_dict + ) + + +@build_decision_book_project_items_route.post( + path="/patch/{build_decision_book_project_item_uu_id}", + summary="Patch people from Decision Project Book Project Items with given auth levels", +) +def build_decision_book_project_people_items_patch( + request: Request, build_decision_book_project_item_uu_id:str, data +): + token_dict = parse_token_object_to_dict(request=request) + return token_dict.available_event( + data=data, + build_decision_book_project_item_uu_id=build_decision_book_project_item_uu_id, + token_dict=token_dict + ) diff --git a/service_app_test/test_application/evyos/decision_book_items.py b/service_app_test/test_application/evyos/decision_book_items.py index 2de2e46..80a6df6 100644 --- a/service_app_test/test_application/evyos/decision_book_items.py +++ b/service_app_test/test_application/evyos/decision_book_items.py @@ -9,7 +9,7 @@ from service_app_test.test_application.evyos.datas.get_occupants_codes import ( decision_book_items_dict = ( lambda token, item_comment, info_type_uu_id, unit_price, is_fixed, st, ed: { "token": token, - "item_comment": f"Test {item_comment}", + "item_comment": item_comment, "info_type_uu_id": info_type_uu_id, "unit_price": unit_price, "unit_price_is_fixed": is_fixed, diff --git a/service_app_test/test_application/migrate_old_data/decision_book_project.py b/service_app_test/test_application/migrate_old_data/decision_book_project.py new file mode 100644 index 0000000..df1109c --- /dev/null +++ b/service_app_test/test_application/migrate_old_data/decision_book_project.py @@ -0,0 +1,30 @@ + +from api_validations.validations_request import ( + InsertBuildDecisionBookProjects, + InsertBuildDecisionBookProjectItems, +) + + +def create_decision_book_items(decision_book_items, requester): + response = requester.post( + endpoint="/build/decision_book/items/create", + data=decision_book_items, + ) + print("text", response.text) + print("json", response.json()) + return response.json() + + +def approve_build_decision_book_project(): + + return + + +def approve_build_decision_book_project_item_create(requester): + requester.post( + endpoint="/build/decision_book/project/items/create", + data=dict( + build_decision_book_project_item_uu_id="", + ), + ) + diff --git a/service_app_test/test_application/migrate_old_data/runner.py b/service_app_test/test_application/migrate_old_data/runner.py index e4d2a07..d0a1551 100644 --- a/service_app_test/test_application/migrate_old_data/runner.py +++ b/service_app_test/test_application/migrate_old_data/runner.py @@ -22,7 +22,7 @@ from service_app_test.test_application.migrate_old_data.accounts import ( ) -password_token = "JFHnbuPmYDSK816Ce49UAbjLMuHn3a3X5eFm6TGXzXJd1RNIPJrKprmin1JTsZN1hu1vUoyQRYoIQ2bn-FQOBWn1DoN9LavmJZww2JS7UUXSyMvPZGIgM-vr9BoYh3OaGPqcZAAT8AG3j__80WHfYsPuk_flF4R4UUnKE-0GWQ-YBkVs9C9llhD4k6e_uIsr" +password_token = "g17Anw5yBvrASMXtES8olfE8vN32R-U7wO_g8kbhjK8C67ww7fv39Mp3ygjouDw8UrwFJhemqFwbEIi2XzIN1u_rq4nmUSROZAnL3NyhczfizMZml0Rd84HWFA80Z1WpIsOadRlGVN77rr3OrrfYXfp1Fa6f_LsiTj0m3N-ie6Mr-4NIQ-3g25Z4oCD4Up6o" login_data = { "domain": "evyos.com.tr", "access_key": "karatay.berkay.sup@evyos.com.tr", @@ -43,7 +43,7 @@ login_creds_occupant = { "access_key": access_key_president, "password": "string", "remember_me": False, - "password_token": "wU1OkD5HEicfNEs_Azm-PjEOaQT4uO9vmnKgtMrME0rNCS4rbMwj6mTXteu5i0DS8EoQOB0XXdN-BWsU0FvRRMND5wzTHHc4k5eb62blrXnM8IHRlFpxObUflGwjOF4tNoTeU53z5zqqHgaHMFAD6GUtZSeXwoSpQcLcag-OqdVmOL82GBmEXXU8bodKL5_y" + "password_token": "88ENxfw1a0tQRHTQ1RWPsv1iWEe2jzwPqra1tH5PuGmr69fneVDdCpQhgj5LnY0L9IA2Zq8eUX7LRpwKaez0rbYQZRdrKNCfx98M4erSNSRCFPI35tBvGdRuTEISIGoUXPI1xEcfQvGT-AOILc-yPOlyfYLyB7Chej1bjuGxe04hdtqQon2rYLmI8KMCv2XK" } wrt_creds_occupant = { "domain": "evyos.com.tr", @@ -67,27 +67,39 @@ both_apis = BothAPIS() # both_apis.wag_api = wag_api both_apis.local_api = local_api -assign_people_to_create_item = -1 +assign_people_to_create_item = 3 # selection_list = None selection_list = [ - # "a44fb2c0-42a4-4193-b964-73dcbf605110", - # "463ae98b-07e7-4e76-8de1-d5984fed91fa", + "68b5e3d9-c546-4ebd-98f5-df468f20cc54", + "da2a282c-7053-4cdf-bca5-c41f548883cc", ] # selection_list = None -manager_token = "" +manager_token = "jk-8A2kXjk86QGP2WHMrOF7E9UTfzOe0Wcq0HDZFDh78V5YbuNVxmw" writers_token = manager_token people_uu_id_list = [ - # "2f1d6e3e-aca2-4bfa-a3e7-ce32eb7e02b2", + "561a9cbc-587a-4582-8eff-f005f5b1e847", + "561a9cbc-587a-4582-8eff-f005f5b1e847", + "561a9cbc-587a-4582-8eff-f005f5b1e847", ] list_of_attendees = [ - +"zFhY5z05ixUxvryeGYPdchUDYhIoatghz06bb74FwJuMyrH1w4JVQw", +"wlm0VNMnUDj91B8HLWQE9vKZsOIPcYQlHZqmgV_U_ywIOXFxR7RDxw", +"2ckn8Jp7r0xgHqdExk82SQVUhekwSMNI6Yvd1ESV6LD4769kyeso2g", +"6iY_p1JkptCj1JeptEUokw5BzxtcgQ3tHYkF2Vud9Cl1uzO3TJZmnQ", +"jaOQodhZaDcEJ8_1Y2hjOlKk3f5SiaYfYU-xqDlervLdeYgHumkniw", +"2iPk5lcTYdl_-S7odsLbN8Kij20pVNHmGSDC6gIJHIIRQ74JitP_LA", +"cl82VDi7xQNO77v3CC7X8wcQ4i_C-K9uuKZyqnvh4KHi0ciwqXyOKA", +"UTHZNg9gx0lZ4laDUz7S5xQ5e83vxrufqp7PbPCJx29AxhzX9DL62A", +"rwlasXNiQXXxfRBXv78DkQeSS1S3ubV0ulrXK8cZgmCDkHAIoWvU0w", +"JgAVc5U5lsfrbSx1gx0_SYQcO0q_K2HX8Vir5SIdiM-Z-PuHAG5cRg", +"V_rSldMaE9P_-uEfSsyh1ojEYep4Xma3NY7BIKzuicj_wEkCqFramw", ] living_space_data = dict( - build_parts_uu_id="a44fb2c0-42a4-4193-b964-73dcbf605110", - person_uu_id="269d1bdc-1495-4e5f-afef-20dd5c3e22be", - occupant_type_uu_id="6c98e522-6b4c-4951-8e1e-e33c14b4d779", + build_parts_uu_id="68b5e3d9-c546-4ebd-98f5-df468f20cc54", + person_uu_id="dc135536-086f-4e11-af3a-02c7cf65f265", + occupant_type_uu_id="a47372a9-67da-4dfb-82a9-51f9ca15ef63", expiry_starts=arrow.now().date().__str__(), )