From 7e1b26f3c43938edee323fb85146ecb33b218697 Mon Sep 17 00:00:00 2001 From: berkay Date: Fri, 15 Nov 2024 19:23:08 +0300 Subject: [PATCH] test application updated@build living space --- api_events/events/account/account_records.py | 9 +- api_events/events/address/address.py | 24 +--- .../events/application/authentication.py | 35 ++---- api_events/events/authentication.py | 20 ---- api_events/events/building/building_build.py | 7 +- .../events/building/building_build_area.py | 7 +- .../events/building/building_build_parts.py | 5 +- .../events/building/building_build_sites.py | 7 +- .../events/building/building_build_types.py | 4 +- .../events/building/building_living_spaces.py | 39 +++--- api_events/events/company/company_company.py | 6 +- .../events/company/company_department.py | 1 - api_events/events/company/company_duties.py | 1 - api_events/events/company/company_employee.py | 11 +- api_events/events/company/company_staff.py | 9 +- .../decision_book_decision_book.py | 6 - .../decision_book_decision_book_items.py | 8 -- ...ecision_book_decision_book_items_debits.py | 4 - .../decision_book_decision_book_person.py | 2 - .../decision_book_invitations.py | 8 +- .../events/events/events_bind_events.py | 1 - .../events/events/events_bind_modules.py | 15 +-- .../events/events/events_bind_services.py | 19 +-- api_events/events/events/events_events.py | 10 +- api_events/events/identity/people.py | 19 +-- api_events/events/identity/users.py | 8 +- api_services/redis/auth_actions/auth.py | 8 +- api_services/redis/auth_actions/token.py | 2 - .../validations_request/build_living_space.py | 2 + databases/extensions/auth.py | 3 +- databases/sql_models/building/build.py | 26 ++-- .../sql_models/building/decision_book.py | 13 +- databases/sql_models/company/company.py | 9 -- databases/sql_models/core_mixin.py | 9 +- databases/sql_models/event/event.py | 9 +- databases/sql_models/identity/identity.py | 26 ++-- databases/sql_models/sql_operations.py | 27 +++-- service_app/application/create_file.py | 4 +- .../initialize_app/event_initator.py | 8 +- .../initialize_default_department.py | 4 +- .../migrate_old_data/building.py | 14 +-- .../migrate_old_data/data/people.json | 20 ++++ .../migrate_old_data/people.py | 2 + .../migrate_old_data/runner.py | 111 ++++++++++++++++-- 44 files changed, 261 insertions(+), 321 deletions(-) diff --git a/api_events/events/account/account_records.py b/api_events/events/account/account_records.py index a588789..9d9d7da 100644 --- a/api_events/events/account/account_records.py +++ b/api_events/events/account/account_records.py @@ -35,17 +35,13 @@ class AccountRecordsListEventMethods(MethodToEvent): AccountRecords.pre_query = AccountRecords.filter_all( AccountRecords.company_id == token_dict.selected_occupant.responsible_company_id, - *AccountRecords.valid_record_args(AccountRecords), ) elif isinstance(token_dict, EmployeeTokenObject): AccountRecords.pre_query = AccountRecords.filter_all( AccountRecords.company_id == token_dict.selected_company.company_id, - *AccountRecords.valid_record_args(AccountRecords), ) - records = AccountRecords.filter_all( - *AccountRecords.smart_query(list_options.query), - *AccountRecords.valid_record_args(AccountRecords), - ) + AccountRecords.filter_attr = list_options + records = AccountRecords.filter_all() return AlchemyJsonResponse( completed=True, message="Update Build record", result=records ) @@ -90,7 +86,6 @@ class AccountRecordsCreateEventMethods(MethodToEvent): # employee_id=token_dict.selected_employee.employee_id, # ) # build_ids_list = Build.filter_all( - # *Build.valid_record_args(Build), # ) # build_iban = BuildIbans.filter_one( # BuildIbans.iban == data.iban, diff --git a/api_events/events/address/address.py b/api_events/events/address/address.py index 7d3caa0..12170e4 100644 --- a/api_events/events/address/address.py +++ b/api_events/events/address/address.py @@ -53,7 +53,6 @@ class AddressListEventMethods(MethodToEvent): street_id[0] for street_id in AddressPostcode.select_only( AddressPostcode.id.in_(post_code_id_list), - *AddressPostcode.valid_record_args(AddressPostcode), select_args=[AddressPostcode.street_id], order_by=AddressPostcode.street_id.desc(), ).data @@ -65,11 +64,9 @@ class AddressListEventMethods(MethodToEvent): ) Addresses.pre_query = Addresses.filter_all( Addresses.street_id.in_(get_street_ids), - *Addresses.valid_record_args(Addresses), ).query Addresses.filter_attr = list_options records = Addresses.filter_all( - *Addresses.valid_record_args(Addresses), ).data return AlchemyJsonResponse( completed=True, @@ -109,7 +106,6 @@ class AddressCreateEventMethods(MethodToEvent): ): post_code = AddressPostcode.filter_one( AddressPostcode.uu_id == data.post_code_uu_id, - *AddressPostcode.valid_record_args(AddressPostcode), ).data if not post_code: raise HTTPException( @@ -122,16 +118,9 @@ class AddressCreateEventMethods(MethodToEvent): data_dict["street_uu_id"] = str(post_code.street_uu_id) del data_dict["post_code_uu_id"] address = Addresses.find_or_create(**data_dict) - relation_employee = RelationshipEmployee2PostCode.find_or_create( - employee_id=token_dict.selected_company.employee_id, - member_id=post_code.id, - company_id=token_dict.selected_company.company_id, - ) address.save() address.update(is_confirmed=True) address.save() - relation_employee.update(is_confirmed=True) - relation_employee.save() return JSONResponse( content={ "completed": True, @@ -231,7 +220,6 @@ class AddressUpdateEventMethods(MethodToEvent): if isinstance(token_dict, EmployeeTokenObject): address = Addresses.filter_one( Addresses.uu_id == address_uu_id, - *Addresses.valid_record_args(Addresses), ).data if not address: raise HTTPException( @@ -273,13 +261,9 @@ class AddressPatchEventMethods(MethodToEvent): ): address = Addresses.filter_one( Addresses.uu_id == address_uu_id, - *Addresses.valid_record_args(Addresses), ).data post_code = RelationshipEmployee2PostCode.filter_one( RelationshipEmployee2PostCode.member_id == address.post_code_id, - *RelationshipEmployee2PostCode.valid_record_args( - RelationshipEmployee2PostCode - ), ) if not post_code: raise HTTPException( @@ -318,7 +302,6 @@ class AddressPostCodeCreateEventMethods(MethodToEvent): data_dump = data.excluded_dump() street = AddressStreet.filter_one( AddressStreet.uu_id == data.street_uu_id, - *AddressStreet.valid_record_args(AddressStreet), ).data if not street: raise HTTPException( @@ -370,7 +353,6 @@ class AddressPostCodeUpdateEventMethods(MethodToEvent): ) post_code = AddressPostcode.filter_one( AddressPostcode.uu_id == post_code_uu_id, - *AddressPostcode.valid_record_args(AddressPostcode), ).data if not post_code: raise HTTPException( @@ -420,7 +402,6 @@ class AddressPostCodeListEventMethods(MethodToEvent): post_code_list = AddressPostcode.__many__table__.filter_all( AddressPostcode.__many__table__.company_id == token_dict.selected_company.company_id, - *AddressPostcode.valid_record_args(AddressPostcode.__many__table__), ).data if not post_code_list: raise HTTPException( @@ -432,12 +413,9 @@ class AddressPostCodeListEventMethods(MethodToEvent): AddressPostcode.id.in_( [post_code.member_id for post_code in post_code_list] ), - *AddressPostcode.valid_record_args(AddressPostcode), ).query AddressPostcode.filter_attr = list_options - records = AddressPostcode.filter_all( - *AddressPostcode.valid_record_args(AddressPostcode), - ).data + records = AddressPostcode.filter_all().data return AlchemyJsonResponse( completed=True, message="List Address records", diff --git a/api_events/events/application/authentication.py b/api_events/events/application/authentication.py index c57317d..5499134 100644 --- a/api_events/events/application/authentication.py +++ b/api_events/events/application/authentication.py @@ -116,13 +116,11 @@ class AuthenticationSelectEventMethods(MethodToEvent): ) if selected_company := Companies.filter_one( Companies.uu_id == data.company_uu_id, - *Companies.valid_record_args(Companies), ).data: department_ids = [ department.id for department in Departments.filter_all( Departments.company_id == selected_company.id, - *Departments.valid_record_args(Departments), ).data ] duties_ids = [ @@ -130,41 +128,37 @@ class AuthenticationSelectEventMethods(MethodToEvent): for duties in Duties.filter_all( Duties.company_id == selected_company.id, Duties.department_id.in_(department_ids), - *Duties.valid_record_args(Duties), ).data ] staff_ids = [ staff.id for staff in Staff.filter_all( - Staff.duties_id.in_(duties_ids), *Staff.valid_record_args(Staff) + Staff.duties_id.in_(duties_ids), ).data ] employee = Employees.filter_one( Employees.people_id == token_user.person_id, Employees.staff_id.in_(staff_ids), - *Employees.valid_record_args(Employees), ).data reachable_event_list_id, reachable_event_list_uu_id = ( Event2Employee.get_event_id_by_employee_id(employee_id=employee.id) ) staff = Staff.filter_one( - Staff.id == employee.staff_id, *Staff.valid_record_args(Staff) + Staff.id == employee.staff_id, ).data duties = Duties.filter_one( - Duties.id == staff.duties_id, *Duties.valid_record_args(Duties) + Duties.id == staff.duties_id, ).data department = Departments.filter_one( Departments.id == duties.department_id, - *Departments.valid_record_args(Departments), ).data bulk_id = Duty.filter_one( - Duty.duty_code == "BULK", *Duty.valid_record_args(Duty) + Duty.duty_code == "BULK", ).data bulk_duty_id = Duties.filter_one( Duties.company_id == selected_company.id, Duties.duties_id == bulk_id.id, - *Duties.valid_record_args(Duties), ).data update_selected_to_redis( request=request, @@ -202,7 +196,6 @@ class AuthenticationSelectEventMethods(MethodToEvent): ) build_part = BuildParts.filter_one( BuildParts.uu_id == data.build_part_uu_id, - *BuildParts.valid_record_args(BuildParts), ).data if not build_part: raise HTTPException( @@ -210,27 +203,22 @@ class AuthenticationSelectEventMethods(MethodToEvent): detail="Build Part is not found", ) build = Build.filter_one( - Build.id == build_part.build_id, *Build.valid_record_args(Build) + Build.id == build_part.build_id ).data related_company = RelationshipEmployee2Build.filter_one( RelationshipEmployee2Build.member_id == build.id, - *RelationshipEmployee2Build.valid_record_args( - RelationshipEmployee2Build - ), + ).data company_related = Companies.filter_one( Companies.id == related_company.company_id, - *Companies.valid_record_args(Companies), ).data responsible_employee = Employees.filter_one( Employees.id == related_company.employee_id, - *Employees.valid_record_args(Employees), ).data if selected_occupant_type := BuildLivingSpace.filter_one( BuildLivingSpace.occupant_type == occupant_type.id, BuildLivingSpace.person_id == token_user.person_id, BuildLivingSpace.build_parts_id == build_part.id, - *BuildLivingSpace.valid_record_args(BuildLivingSpace), ).data: reachable_event_list_id, reachable_event_list_uu_id = ( Event2Occupant.get_event_id_by_build_living_space_id( @@ -317,7 +305,6 @@ class AuthenticationRefreshEventMethods(MethodToEvent): UsersTokens.domain == found_user.domain_name, UsersTokens.user_id == found_user.id, UsersTokens.token_type == "RememberMe", - *UsersTokens.valid_record_args(UsersTokens), ).data access_dict = { "access_token": access_token, @@ -354,7 +341,7 @@ class AuthenticationChangePasswordEventMethods(MethodToEvent): token_user = get_object_via_access_key(request=request) if token_user.user_type == 1: if found_user := Users.filter_one( - Users.uu_id == token_user.uu_id, *Users.valid_record_args(Users) + Users.uu_id == token_user.uu_id ).data: if found_user.check_password(data.old_password): found_user.set_password(data.new_password) @@ -395,7 +382,7 @@ class AuthenticationCreatePasswordEventMethods(MethodToEvent): status_code=status.HTTP_406_NOT_ACCEPTABLE, detail="Password must match" ) if found_user := Users.filter_one( - Users.password_token == data.password_token, *Users.valid_record_args(Users) + Users.password_token == data.password_token ).data: found_user.create_password(password=data.password) found_user.password_token = None @@ -441,7 +428,7 @@ class AuthenticationDisconnectUserEventMethods(MethodToEvent): if token_user := get_object_via_access_key(request=request): found_user = Users.filter_one( - Users.uu_id == token_user.get("uu_id"), *Users.valid_record_args(Users) + Users.uu_id == token_user.get("uu_id") ).data if not found_user: return JSONResponse( @@ -458,7 +445,6 @@ class AuthenticationDisconnectUserEventMethods(MethodToEvent): redis_cli.delete(key) selected_user = Users.filter_one( Users.uu_id == token_user.get("uu_id"), - *Users.valid_record_args(Users), ).data selected_user.remove_refresher_token( domain=data.domain, disconnect=True @@ -510,7 +496,6 @@ class AuthenticationLogoutEventMethods(MethodToEvent): redis_cli.delete(key) selected_user = Users.filter_one( Users.uu_id == token_user.get("uu_id"), - *Users.valid_record_args(Users), ).data selected_user.remove_refresher_token(domain=data.domain) # UserLogger.log_error( @@ -568,7 +553,7 @@ class AuthenticationRefreshTokenEventMethods(MethodToEvent): status_code=status.HTTP_202_ACCEPTED, ) if found_user := Users.filter_one( - Users.id == token_refresher.user_id, *Users.valid_record_args(Users) + Users.id == token_refresher.user_id, ).data: found_user: Users = found_user access_key = save_access_token_to_redis( diff --git a/api_events/events/authentication.py b/api_events/events/authentication.py index 7525551..0aecbdb 100644 --- a/api_events/events/authentication.py +++ b/api_events/events/authentication.py @@ -117,45 +117,37 @@ class AuthenticationSelectEventMethods(MethodToEvent): ) if selected_company := Companies.filter_one( Companies.uu_id == data.company_uu_id, - *Companies.valid_record_args(Companies), ).data: department_ids = [ department.id for department in Departments.filter_all( Departments.company_id == selected_company.id, - *Departments.valid_record_args(Departments), ).data ] duties_ids = [ duties.id for duties in Duties.filter_all( Duties.company_id == selected_company.id, - Duties.department_id.in_(department_ids), - *Duties.valid_record_args(Duties), ).data ] staff_ids = [ staff.id for staff in Staff.filter_all( Staff.duties_id.in_(duties_ids), - *Staff.valid_record_args(Staff), ).data ] employee = Employees.filter_one( Employees.people_id == token_dict.person_id, Employees.staff_id.in_(staff_ids), - *Employees.valid_record_args(Employees), ).data reachable_event_list_id, reachable_event_list_uu_id = ( Event2Employee.get_event_id_by_employee_id(employee_id=employee.id) ) staff = Staff.filter_one( Staff.id == employee.staff_id, - *Staff.valid_record_args(Staff), ).data duties = Duties.filter_one( Duties.id == staff.duties_id, - *Duties.valid_record_args(Duties), ).data department = Departments.filter_one( Departments.id == duties.department_id, @@ -212,27 +204,20 @@ class AuthenticationSelectEventMethods(MethodToEvent): ) build = Build.filter_one( Build.id == build_part.build_id, - *Build.valid_record_args(Build), ).data related_company = RelationshipEmployee2Build.filter_one( RelationshipEmployee2Build.member_id == build.id, - *RelationshipEmployee2Build.valid_record_args( - RelationshipEmployee2Build - ), ).data company_related = Companies.filter_one( Companies.id == related_company.company_id, - *Companies.valid_record_args(Companies), ).data responsible_employee = Employees.filter_one( Employees.id == related_company.employee_id, - *Employees.valid_record_args(Employees), ).data if selected_occupant_type := BuildLivingSpace.filter_one( BuildLivingSpace.occupant_type == occupant_type.id, BuildLivingSpace.person_id == token_dict.person_id, BuildLivingSpace.build_parts_id == build_part.id, - *BuildLivingSpace.valid_record_args(BuildLivingSpace), ).data: reachable_event_list_id, reachable_event_list_uu_id = ( Event2Occupant.get_event_id_by_build_living_space_id( @@ -311,13 +296,11 @@ class AuthenticationRefreshEventMethods(MethodToEvent): if token_user := get_object_via_access_key(request=request): if found_user := Users.filter_one( Users.uu_id == token_user.get("uu_id"), - *Users.valid_record_args(Users), ).data: user_token = UsersTokens.filter_one( UsersTokens.domain == found_user.domain_name, UsersTokens.user_id == found_user.id, UsersTokens.token_type == "RememberMe", - *UsersTokens.valid_record_args(UsersTokens), ).data access_dict = { "access_token": access_token, @@ -353,7 +336,6 @@ class AuthenticationChangePasswordEventMethods(MethodToEvent): if token_dict.user_type == 1: if found_user := Users.filter_one( Users.uu_id == token_dict.person_uu_id, - *Users.valid_record_args(Users), ).data: if found_user.check_password(data.old_password): found_user.set_password(data.new_password) @@ -395,7 +377,6 @@ class AuthenticationCreatePasswordEventMethods(MethodToEvent): ) found_user = Users.filter_one( Users.password_token == data.password_token, - *Users.valid_record_args(Users), ).data if not found_user: return JSONResponse( @@ -442,7 +423,6 @@ class AuthenticationDisconnectUserEventMethods(MethodToEvent): ): found_user = Users.filter_one( Users.uu_id == token_dict.person_uu_id, - *Users.valid_record_args(Users), ).data if not found_user: return JSONResponse( diff --git a/api_events/events/building/building_build.py b/api_events/events/building/building_build.py index 6443098..1d04bb7 100644 --- a/api_events/events/building/building_build.py +++ b/api_events/events/building/building_build.py @@ -41,16 +41,13 @@ class BuildListEventMethods(MethodToEvent): if isinstance(token_dict, OccupantTokenObject): Build.pre_query = Build.filter_all( Build.id == token_dict.selected_occupant.build_id, - *Build.valid_record_args(Build), ).query elif isinstance(token_dict, EmployeeTokenObject): Build.pre_query = Build.select_action( employee_id=token_dict.selected_company.employee_id ) Build.filter_attr = list_options - records = Build.filter_all( - *Build.valid_record_args(Build), - ) + records = Build.filter_all() return AlchemyJsonResponse( completed=True, message="Building Records are listed", @@ -187,7 +184,6 @@ class BuildUpdateEventMethods(MethodToEvent): ) if Build.filter_all( Build.person_id == token_dict.person_id, - *Build.valid_record_args(Build), ).data: Build.pre_query = None updated_build = Build.update_action( @@ -219,7 +215,6 @@ class BuildPatchEventMethods(MethodToEvent): def build_patch(cls, build_uu_id: str, data: PatchRecord, token_dict): find_one_build = Build.filter_one( Build.uu_id==build_uu_id, - *Build.valid_record_args(Build) ) access_authorized_build = Build.select_action( employee_id=token_dict.selected_company.employee_id, diff --git a/api_events/events/building/building_build_area.py b/api_events/events/building/building_build_area.py index 754b31b..30a05ce 100644 --- a/api_events/events/building/building_build_area.py +++ b/api_events/events/building/building_build_area.py @@ -32,11 +32,9 @@ class BuildAreaListEventMethods(MethodToEvent): if isinstance(token_dict, OccupantTokenObject): build_ids = Build.filter_all( Build.id == token_dict.selected_occupant.build_id, - *Build.valid_record_args(Build), ).data BuildArea.pre_query = BuildArea.filter_all( BuildArea.build_id.in_([build.id for build in build_ids]), - *BuildArea.valid_record_args(BuildArea), ).query elif isinstance(token_dict, EmployeeTokenObject): build_ids = Build.select_action( @@ -44,12 +42,9 @@ class BuildAreaListEventMethods(MethodToEvent): ) BuildArea.pre_query = BuildArea.filter_all( BuildArea.build_id.in_([build.id for build in build_ids]), - *BuildArea.valid_record_args(BuildArea), ).query BuildArea.filter_attr = list_options - records = BuildArea.filter_all( - *BuildArea.valid_record_args(BuildArea), - ) + records = BuildArea.filter_all() return AlchemyJsonResponse( completed=True, message="List of Build Area", result=records ) diff --git a/api_events/events/building/building_build_parts.py b/api_events/events/building/building_build_parts.py index c932dea..72edf88 100644 --- a/api_events/events/building/building_build_parts.py +++ b/api_events/events/building/building_build_parts.py @@ -38,9 +38,7 @@ class BuildingBuildPartsListEventMethods(MethodToEvent): BuildParts.build_id.in_(build_list_ids), ).query BuildParts.filter_attr = list_options - records = BuildParts.filter_all( - *BuildParts.valid_record_args(BuildParts), - ) + records = BuildParts.filter_all() return AlchemyJsonResponse( completed=True, message="Building Parts Records are listed", @@ -111,7 +109,6 @@ class BuildingBuildPartsPatchEventMethods(MethodToEvent): def building_build_parts_patch(cls, data, token_dict): 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, diff --git a/api_events/events/building/building_build_sites.py b/api_events/events/building/building_build_sites.py index b8694e1..f5904d7 100644 --- a/api_events/events/building/building_build_sites.py +++ b/api_events/events/building/building_build_sites.py @@ -33,11 +33,9 @@ class BuildSitesListEventMethods(MethodToEvent): if isinstance(token_dict, OccupantTokenObject): occupants_build = Build.filter_one( Build.id == token_dict.selected_occupant.build_id, - *Build.valid_record_args(Build), ).data BuildSites.pre_query = BuildSites.filter_all( BuildSites.address_id == occupants_build.address_id, - *BuildSites.valid_record_args(BuildSites), ).query elif isinstance(token_dict, EmployeeTokenObject): employees_build = Build.select_action( @@ -53,12 +51,9 @@ class BuildSitesListEventMethods(MethodToEvent): ) BuildSites.pre_query = BuildSites.filter_all( BuildSites.address_id.in_(employees_build_list) - *BuildSites.valid_record_args(BuildSites), ).query BuildSites.filter_attr = list_options - records = BuildSites.filter_all( - *BuildSites.valid_record_args(BuildSites), - ) + records = BuildSites.filter_all() return AlchemyJsonResponse( completed=True, message="Update Build record", result=records ) diff --git a/api_events/events/building/building_build_types.py b/api_events/events/building/building_build_types.py index 392db65..9ef1f7c 100644 --- a/api_events/events/building/building_build_types.py +++ b/api_events/events/building/building_build_types.py @@ -25,9 +25,7 @@ class BuildTypesListEventMethods(MethodToEvent): from fastapi.exceptions import HTTPException if isinstance(token_dict, EmployeeTokenObject): BuildTypes.filter_attr = list_options - results = BuildTypes.filter_all( - *BuildTypes.valid_record_args(BuildTypes) - ) + results = BuildTypes.filter_all() return AlchemyJsonResponse( completed=True, result=results, diff --git a/api_events/events/building/building_living_spaces.py b/api_events/events/building/building_living_spaces.py index 16a6728..46530c1 100644 --- a/api_events/events/building/building_living_spaces.py +++ b/api_events/events/building/building_living_spaces.py @@ -36,7 +36,6 @@ class BuildingLivingSpacesPartsListEventMethods(MethodToEvent): if isinstance(token_dict, OccupantTokenObject): occupants_build_id = Build.filter_one( Build.id == token_dict.selected_occupant.build_id, - *Build.valid_record_args(Build), ).data if not occupants_build_id: Build.raise_http_exception( @@ -47,7 +46,6 @@ class BuildingLivingSpacesPartsListEventMethods(MethodToEvent): ) occupants_build_parts = BuildParts.filter_all( BuildParts.build_id.in_(occupants_build_id.id), - *BuildParts.valid_record_args(BuildParts), ).data if not occupants_build_parts: Build.raise_http_exception( @@ -60,12 +58,9 @@ class BuildingLivingSpacesPartsListEventMethods(MethodToEvent): BuildLivingSpace.build_parts_id.in_( [build_part.id for build_part in occupants_build_parts] ), - *BuildLivingSpace.valid_record_args(BuildLivingSpace), ).query BuildLivingSpace.filter_attr = list_options - records = BuildLivingSpace.filter_all( - *BuildLivingSpace.valid_record_args(BuildLivingSpace), - ) + records = BuildLivingSpace.filter_all() elif isinstance(token_dict, EmployeeTokenObject): build_id_list_query = Build.select_action( employee_id=token_dict.selected_company.employee_id @@ -81,7 +76,6 @@ class BuildingLivingSpacesPartsListEventMethods(MethodToEvent): BuildParts.build_id.in_( [build.id for build in build_id_list_query.all()] ), - *BuildLivingSpace.valid_record_args(BuildLivingSpace), ).data if not build_part_id_list_query: Build.raise_http_exception( @@ -94,12 +88,9 @@ class BuildingLivingSpacesPartsListEventMethods(MethodToEvent): BuildLivingSpace.build_parts_id.in_( [build_part.id for build_part in build_part_id_list_query] ), - *BuildLivingSpace.valid_record_args(BuildLivingSpace), ).query BuildLivingSpace.filter_attr = list_options - records = BuildLivingSpace.filter_all( - *BuildLivingSpace.valid_record_args(BuildLivingSpace), - ) + records = BuildLivingSpace.filter_all() return AlchemyJsonResponse( completed=True, message="Building Living Spaces are listed successfully", @@ -122,14 +113,13 @@ class BuildingLivingSpacesPartsCreateEventMethods(MethodToEvent): ): from api_library.date_time_actions.date_functions import system_arrow - data_dict = data.dump() + data_dict = data.excluded_dump() build_id_list_query = Build.select_action( employee_id=token_dict.selected_company.employee_id ) 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: BuildLivingSpace.raise_http_exception( @@ -141,8 +131,7 @@ class BuildingLivingSpacesPartsCreateEventMethods(MethodToEvent): }, ) life_person = People.filter_one( - People.uu_id == data.person_uu_id or "", - *People.valid_record_args(People), + People.uu_id == data.person_uu_id, ).data if not life_person: BuildLivingSpace.raise_http_exception( @@ -175,7 +164,6 @@ class BuildingLivingSpacesPartsCreateEventMethods(MethodToEvent): BuildLivingSpace.build_parts_id == build_part.id, BuildLivingSpace.person_id == life_person.id, BuildLivingSpace.occupant_type == occupant_type.id, - *BuildLivingSpace.valid_record_args(BuildLivingSpace), select_args=[BuildLivingSpace.id], order_by=BuildLivingSpace.expiry_starts.desc(), limit=1, @@ -183,27 +171,30 @@ class BuildingLivingSpacesPartsCreateEventMethods(MethodToEvent): last_living_space = BuildLivingSpace.filter_one( 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()) + ).data created_living_space = BuildLivingSpace.create_action( data=data_dict, token_dict=token_dict ) if last_living_space: - if last_living_space.expiry_ends > str(system_arrow.now()): - last_living_space.expiry_ends = str(system_arrow.shift(minutes=-10)) + dt = system_arrow.get(last_living_space.expiry_ends) + if dt > system_arrow.now(): + minute_df = int(dt.time().minute) - 10 + last_living_space.expiry_ends = str(dt.replace( + minute=60 - abs(minute_df) if minute_df < 0 else minute_df + )) last_living_space.save() user_module = Modules.filter_one( Modules.module_code == "USR-PUB", system=True ).data + created_living_space.save() + created_living_space.update(is_confirmed=True) + created_living_space.save() ModulesBindOccupantEventMethods.modules_bind_occupant_system( build_living_space_id=created_living_space.id, modules_id=user_module.id, ) - created_living_space.save() return created_living_space @@ -233,7 +224,6 @@ class BuildingLivingSpacesPartsUpdateEventMethods(MethodToEvent): BuildParts.build_id.in_( [build.id for build in build_id_list_query.all()] ), - *BuildParts.valid_record_args(BuildParts), ).data if not build_part: BuildLivingSpace.raise_http_exception( @@ -266,7 +256,6 @@ class BuildingLivingSpacesPartsUpdateEventMethods(MethodToEvent): last_living_space = BuildLivingSpace.filter_one( 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()) diff --git a/api_events/events/company/company_company.py b/api_events/events/company/company_company.py index fcc8416..2afc635 100644 --- a/api_events/events/company/company_company.py +++ b/api_events/events/company/company_company.py @@ -42,9 +42,7 @@ class CompanyListEventMethods(MethodToEvent): Companies.id == token_dict.selected_occupant.responsible_company_id ).query Companies.filter_attr = list_options - records = Companies.filter_all( - *Companies.valid_record_args(Companies) - ) + records = Companies.filter_all() return AlchemyJsonResponse( completed=True, message="Building Living Spaces are listed successfully", @@ -97,7 +95,6 @@ class CompanyUpdateEventMethods(MethodToEvent): ) find_one_company = Companies.filter_one( Companies.uu_id == company_uu_id, - Companies.valid_record_args(Companies), ).data if not find_one_company: return JSONResponse( @@ -133,7 +130,6 @@ class CompanyPatchEventMethods(MethodToEvent): ): find_one_company = Companies.filter_one( Companies.uu_id==company_uu_id, - *Companies.valid_record_args(Companies) ).data access_authorized_company = Companies.select_action( duty_id_list=[ diff --git a/api_events/events/company/company_department.py b/api_events/events/company/company_department.py index 000f436..4195728 100644 --- a/api_events/events/company/company_department.py +++ b/api_events/events/company/company_department.py @@ -32,7 +32,6 @@ class DepartmentListEventMethods(MethodToEvent): Departments.filter_attr = list_options records = Departments.filter_all( Departments.company_id == token_dict.selected_company.company_id, - *Departments.valid_record_args(Departments) ) return AlchemyJsonResponse( completed=True, diff --git a/api_events/events/company/company_duties.py b/api_events/events/company/company_duties.py index 65c7e79..c3c7184 100644 --- a/api_events/events/company/company_duties.py +++ b/api_events/events/company/company_duties.py @@ -67,7 +67,6 @@ class DutiesGetByUUIDEventMethods(MethodToEvent): records = Duties.filter_all( Duties.duties_id == duty.id, Duties.company_id == token_dict.selected_company.company_id, - *Duties.valid_record_args(Duties) ) if not records.data: return JSONResponse( diff --git a/api_events/events/company/company_employee.py b/api_events/events/company/company_employee.py index 70f40e8..a446ea4 100644 --- a/api_events/events/company/company_employee.py +++ b/api_events/events/company/company_employee.py @@ -31,12 +31,10 @@ class EmployeeListEventMethods(MethodToEvent): ): employees_staff = Staff.filter_all( Staff.duties_id.in_(token_dict.duty_id_list), - *Staff.valid_record_args(Staff), ).data Employees.filter_attr = list_options records = Employees.filter_all( Employees.staff_id.in_([staff.id for staff in employees_staff]), - *Employees.valid_record_args(Employees), ) return AlchemyJsonResponse( completed=True, @@ -60,11 +58,9 @@ class EmployeeCreateEventMethods(MethodToEvent): ): person = People.filter_one( People.uu_id == data.people_uu_id, - *People.valid_record_args(People), ).data staff = Staff.filter_one( Staff.uu_id == data.staff_uu_id, - *Staff.valid_record_args(Staff), ).data if not staff: return JSONResponse( @@ -108,7 +104,6 @@ class EmployeeUpdateEventMethods(MethodToEvent): ): find_one_employee = Employees.filter_one( Employees.uu_id == employee_uu_id, - *Employees.valid_record_args(Employees), ).data access_authorized_employee = Employees.select_action( employee_id=getattr(token_dict, "employee_id", 5), @@ -199,10 +194,9 @@ class Employee2PeopleEmployEventMethods(MethodToEvent): ): selected_staff = Staff.filter_one( Staff.uu_id == data.staff_uu_id, - *Staff.valid_record_args(Staff), ).data selected_people = People.filter_one( - People.uu_id == data.people_uu_id, *People.valid_record_args + People.uu_id == data.people_uu_id ).data if not selected_staff: raise HTTPException( @@ -217,7 +211,6 @@ class Employee2PeopleEmployEventMethods(MethodToEvent): find_one_employee = Employees.filter_all( Employees.staff_id == selected_staff.id, - *Employees.valid_record_args(Employees), ).data staff_name_upper = str(selected_staff.staff_name).upper() @@ -265,7 +258,6 @@ class Employee2PeopleFireEventMethods(MethodToEvent): ): selected_people = People.filter_one( People.uu_id == data.people_uu_id, - *People.valid_record_args(People), ).data if not selected_people: raise HTTPException( @@ -275,7 +267,6 @@ class Employee2PeopleFireEventMethods(MethodToEvent): find_one_employee: Employees = Employees.filter_one( Employees.people_id == selected_people.id, - *Employees.valid_record_args(Employees), ).data if not find_one_employee: return JSONResponse( diff --git a/api_events/events/company/company_staff.py b/api_events/events/company/company_staff.py index 993fdc6..eb18648 100644 --- a/api_events/events/company/company_staff.py +++ b/api_events/events/company/company_staff.py @@ -25,9 +25,7 @@ class StaffListEventMethods(MethodToEvent): @classmethod def staff_list(cls, list_options: ListOptions, token_dict: EmployeeTokenObject): Staff.filter_attr = list_options - records = Staff.filter_all( - *Staff.valid_record_args(Staff) - ) + records = Staff.filter_all() return AlchemyJsonResponse( completed=True, message="Staff are listed successfully", @@ -46,7 +44,6 @@ class StaffCreateEventMethods(MethodToEvent): data_dict = data.excluded_dump() duties = Duties.filter_one( Duties.uu_id == data.duties_uu_id, - *Duties.valid_record_args(Duties), ).data if not duties: raise HTTPException( @@ -77,10 +74,10 @@ class StaffGetByUUIDEventMethods(MethodToEvent): def staff_get_by_uu_id(cls, data: SelectStaff, token_dict: EmployeeTokenObject): if data.duties_uu_id: duties_id = Duties.filter_one( - Duties.uu_id == data.duties_uu_id, *Duties.valid_record_args(Duties) + Duties.uu_id == data.duties_uu_id, ).data selected_staffs = Staff.filter_all( - Staff.duties_id == duties_id.id, *Staff.valid_record_args(Staff) + Staff.duties_id == duties_id.id ) return JSONResponse( content={ diff --git a/api_events/events/decision_book/decision_book_decision_book.py b/api_events/events/decision_book/decision_book_decision_book.py index 5fa8197..5682315 100644 --- a/api_events/events/decision_book/decision_book_decision_book.py +++ b/api_events/events/decision_book/decision_book_decision_book.py @@ -49,13 +49,11 @@ class DecisionBookListEventMethods(MethodToEvent): BuildDecisionBook.filter_attr = list_options records = BuildDecisionBook.filter_all( BuildDecisionBook.build_id.in_([build.id for build in build_id_list]), - *BuildDecisionBook.valid_record_args(BuildDecisionBook), ).data elif isinstance(token_dict, OccupantTokenObject): BuildDecisionBook.filter_attr = list_options records = BuildDecisionBook.filter_all( BuildDecisionBook.build_id == token_dict.selected_occupant.build_id, - *BuildDecisionBook.valid_record_args(BuildDecisionBook), ).data return AlchemyJsonResponse( completed=True, @@ -84,7 +82,6 @@ class DecisionBookCreateEventMethods(MethodToEvent): ) build = Build.filter_one( Build.uu_id == data.build_uu_id, - *Build.valid_record_args(Build), ).data if not build: raise HTTPException( @@ -101,7 +98,6 @@ class DecisionBookCreateEventMethods(MethodToEvent): ) company = Companies.filter_one( Companies.uu_id == data.resp_company_uu_id, - *Companies.valid_record_args(Companies), ).data if not company: raise HTTPException( @@ -143,11 +139,9 @@ class DecisionBookCreateEventMethods(MethodToEvent): occupant_build = Build.filter_one( Build.id == token_dict.selected_occupant.build_id, - *Build.valid_record_args(Build), ).data occupant_company = Companies.filter_one( Companies.id == token_dict.selected_occupant.responsible_company_id, - *Companies.valid_record_args(Companies), ).data data_dict["build_id"] = occupant_build.id data_dict["build_uu_id"] = str(occupant_build.uu_id) 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 1b56cf4..5042e07 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 @@ -44,7 +44,6 @@ class DecisionBookDecisionBookItemsListEventMethods(MethodToEvent): ): decision_book = BuildDecisionBook.filter_one( BuildDecisionBook.uu_id == data.build_decision_book_uu_id, - *BuildDecisionBook.valid_record_args(BuildDecisionBook), ).data if not decision_book: raise HTTPException( @@ -105,7 +104,6 @@ class DecisionBookDecisionBookItemsListEventMethods(MethodToEvent): # ) # BuildDecisionBookItems.filter_attr = list_options # records = BuildDecisionBookItems.filter_all( - # *BuildDecisionBookItems.valid_record_args(BuildDecisionBookItems) # ) # return return_json_response_from_alchemy(response=records, pagination=list_options) return @@ -178,7 +176,6 @@ class DecisionBookDecisionBookItemsCreateEventMethods(MethodToEvent): build_parts_list = BuildParts.filter_all( BuildParts.human_livable == True, BuildParts.build_id == build_id, - *BuildParts.valid_record_args(BuildParts) ) book_payment_dict = dict( payment_plan_time_periods=str(data_info_type.key), @@ -236,7 +233,6 @@ class DecisionBookDecisionBookItemsCreateEventMethods(MethodToEvent): management_room = BuildParts.filter_one( BuildParts.build_id == build_id, BuildParts.part_no == 0, - *BuildParts.valid_record_args(BuildParts), ).data occupant_man = OccupantTypes.filter_by_one( occupant_code="MT-VPR", occupant_category_type="MT" @@ -244,7 +240,6 @@ class DecisionBookDecisionBookItemsCreateEventMethods(MethodToEvent): manager_living_space = BuildLivingSpace.filter_one( BuildLivingSpace.build_parts_id == management_room.id, BuildLivingSpace.occupant_type == occupant_man.id, - *BuildLivingSpace.valid_record_args(BuildLivingSpace), ).data if not manager_living_space.data: raise HTTPException( @@ -325,11 +320,9 @@ class DecisionBookDecisionBookItemsCreateEventMethods(MethodToEvent): decision_book_person = BuildDecisionBookPerson.filter_one( BuildDecisionBookPerson.token == data.token, - *BuildDecisionBookPerson.valid_record_args(BuildDecisionBookPerson), ).data decision_book = BuildDecisionBook.filter_one( BuildDecisionBook.id == decision_book_person.build_decision_book_id, - *BuildDecisionBook.valid_record_args(BuildDecisionBook), ).data BuildDecisionBookItems.check_meeting_is_valid_to_start_add_attendance( decision_book=decision_book, @@ -337,7 +330,6 @@ class DecisionBookDecisionBookItemsCreateEventMethods(MethodToEvent): ) book_items = BuildDecisionBookItems.filter_all( BuildDecisionBookItems.build_decision_book_id == decision_book.id, - *BuildDecisionBookItems.valid_record_args(BuildDecisionBookItems) ) data_dict["item_order"] = int(book_items.count) + 1 diff --git a/api_events/events/decision_book/decision_book_decision_book_items_debits.py b/api_events/events/decision_book/decision_book_decision_book_items_debits.py index 2680f71..d069d44 100644 --- a/api_events/events/decision_book/decision_book_decision_book_items_debits.py +++ b/api_events/events/decision_book/decision_book_decision_book_items_debits.py @@ -36,12 +36,10 @@ class DecisionBookDecisionBookItemsDebitsListEventMethods(MethodToEvent): ): BuildDecisionBookItems.pre_query = BuildDecisionBookItems.filter_all( BuildDecisionBookItems.decision_book_id == decision_book_id, - *BuildDecisionBookItems.valid_record_args(BuildDecisionBookItems) ).query BuildDecisionBookItems.filter_attr = None records = BuildDecisionBookItems.filter_all( BuildDecisionBookItems.decision_book_id == decision_book_id, - *BuildDecisionBookItems.valid_record_args(BuildDecisionBookItems) ) return AlchemyJsonResponse( completed=True, @@ -93,12 +91,10 @@ class DecisionBookDecisionBookItemsDebitsCreateEventMethods(MethodToEvent): decision_book_items_debits["deleted_by"] = None BuildDecisionBookItems.pre_query = BuildDecisionBookItems.filter_all( BuildDecisionBookItems.decision_book_id == decision_book_id, - *BuildDecisionBookItems.valid_record_args(BuildDecisionBookItems) ).query BuildDecisionBookItems.filter_attr = None records = BuildDecisionBookItems.filter_all( BuildDecisionBookItems.decision_book_id == decision_book_id, - *BuildDecisionBookItems.valid_record_args(BuildDecisionBookItems) ) return AlchemyJsonResponse( completed=True, diff --git a/api_events/events/decision_book/decision_book_decision_book_person.py b/api_events/events/decision_book/decision_book_decision_book_person.py index 3572f77..7356ce4 100644 --- a/api_events/events/decision_book/decision_book_decision_book_person.py +++ b/api_events/events/decision_book/decision_book_decision_book_person.py @@ -63,7 +63,6 @@ class DecisionBookPersonAddEventMethods(MethodToEvent): elif isinstance(token_dict, OccupantTokenObject): decision_book = BuildDecisionBook.filter_one( BuildDecisionBook.uu_id == data.build_decision_book_uu_id, - *BuildDecisionBook.valid_record_args(BuildDecisionBook), ).data if not decision_book: raise HTTPException( @@ -281,7 +280,6 @@ class DecisionBookPersonAssignOccupantEventMethods(MethodToEvent): build_parts_of_token = BuildParts.filter_all( BuildParts.build_id == token_dict.selected_occupant.build_id, - *BuildParts.valid_record_args(BuildParts), ).data selected_living_space = BuildLivingSpace.filter_one( BuildLivingSpace.uu_id == data.build_living_space_uu_id, diff --git a/api_events/events/decision_book/decision_book_invitations.py b/api_events/events/decision_book/decision_book_invitations.py index 949b095..574fc94 100644 --- a/api_events/events/decision_book/decision_book_invitations.py +++ b/api_events/events/decision_book/decision_book_invitations.py @@ -137,7 +137,6 @@ 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.valid_record_args(BuildParts), ) # Get all build living spaces that is found in building with distinct person id @@ -188,7 +187,6 @@ class BuildDecisionBookInvitationsCreateEventMethods(MethodToEvent): BuildDecisionBookPerson.invite_id == book_invitation.id, BuildDecisionBookPerson.build_living_space_id == build_living_spaces_user.id, - *BuildDecisionBookPerson.valid_record_args(BuildDecisionBookPerson), ).data: raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, @@ -219,7 +217,6 @@ class BuildDecisionBookInvitationsCreateEventMethods(MethodToEvent): manager_living_spaces = BuildLivingSpace.filter_all( BuildLivingSpace.person_id == token_dict.person_id, - *BuildLivingSpace.valid_record_args(BuildLivingSpace), ) manager_people = BuildDecisionBookPerson.filter_all( BuildDecisionBookPerson.invite_id == book_invitation.id, @@ -229,14 +226,11 @@ class BuildDecisionBookInvitationsCreateEventMethods(MethodToEvent): for manager_living_space in manager_living_spaces.data ] ), - *BuildLivingSpace.valid_record_args(BuildLivingSpace), ) manager_people_occupants = BuildDecisionBookPersonOccupants.filter_all( BuildDecisionBookPersonOccupants.build_decision_book_person_id == manager_people.get(1).id, - *BuildDecisionBookPersonOccupants.valid_record_args( - BuildDecisionBookPersonOccupants - ), + ) manager_people_occupants.query.delete() manager_people.query.delete() diff --git a/api_events/events/events/events_bind_events.py b/api_events/events/events/events_bind_events.py index c7817ee..de1f850 100644 --- a/api_events/events/events/events_bind_events.py +++ b/api_events/events/events/events_bind_events.py @@ -66,7 +66,6 @@ class EventBindOccupantEventMethods(MethodToEvent): events_to_add_to_occupant = Events.filter_all( Events.uu_id.in_(list(data.event_uu_id_list)), - *Events.valid_record_args(Events), ) if not events_to_add_to_occupant.data: return JSONResponse( diff --git a/api_events/events/events/events_bind_modules.py b/api_events/events/events/events_bind_modules.py index 5c79b3c..edf4651 100644 --- a/api_events/events/events/events_bind_modules.py +++ b/api_events/events/events/events_bind_modules.py @@ -30,19 +30,20 @@ class ModulesBindOccupantEventMethods(MethodToEvent): ): living_space = BuildLivingSpace.filter_one( - Modules.id == build_living_space_id, - Modules.active == True, + BuildLivingSpace.id == build_living_space_id, ).data modules = Modules.filter_one( - Modules.id == modules_id, Modules.active == True + Modules.id == modules_id ).data + if not living_space or not modules: + print(f"Giving living Space or Modules: {modules.module_name} not found") + return service_build_dict = dict(build_living_space_id=living_space.id) - service_build_dict["expires_at"] = str( - system_arrow.get(living_space.expiry_ends) - ) - if not expires_at: + if expires_at: service_build_dict["expires_at"] = str(system_arrow.get(expires_at)) + else: + service_build_dict["expires_at"] = str(system_arrow.get(living_space.expiry_ends)) for service in modules.retrieve_services(): ServiceBindOccupantEventMethods.bind_services_occupant_system( diff --git a/api_events/events/events/events_bind_services.py b/api_events/events/events/events_bind_services.py index fe54d90..ff3127b 100644 --- a/api_events/events/events/events_bind_services.py +++ b/api_events/events/events/events_bind_services.py @@ -35,22 +35,19 @@ class ServiceBindOccupantEventMethods(MethodToEvent): cls, build_living_space_id: int, service_id: int, expires_at: str = None ): from sqlalchemy.dialects.postgresql import insert - living_space = BuildLivingSpace.filter_one( BuildLivingSpace.id == build_living_space_id, - *BuildLivingSpace.valid_record_args(BuildLivingSpace), - ).data - service = Services.filter_one( - Services.id == service_id, *Services.valid_record_args(Services) ).data + service = Services.filter_one(Services.id == service_id).data add_events_list = Service2Events.filter_all( Service2Events.service_id == service.id, - *Service2Events.valid_record_args(Service2Events), ).data + if not living_space: + print("Living Space is not valid. Service is not binded") + return if not add_events_list: - raise Exception( - "Service has no events registered. Please contact with your manager" - ) + print(f"Service has no events registered. Please contact with your manager") + return event_ids_list = [ { @@ -131,7 +128,6 @@ class ServiceBindOccupantEventMethods(MethodToEvent): service_events = Service2Events.filter_all( Service2Events.service_id == service.id, - Service2Events.valid_record_args(Service2Events), ).data if not service_events: raise HTTPException( @@ -143,7 +139,6 @@ class ServiceBindOccupantEventMethods(MethodToEvent): BuildLivingSpace.build_parts_id == occupants_build_part.id, BuildLivingSpace.occupant_types_id == occupant_occupant_type.id, BuildLivingSpace.person_id == token_dict.person_id, - *BuildLivingSpace.valid_record_args(BuildLivingSpace), ).data if not living_space: return JSONResponse( @@ -197,7 +192,6 @@ class ServiceBindEmployeeEventMethods(MethodToEvent): ).data service_events = Service2Events.filter_all( Service2Events.service_id == service.id, - *Service2Events.valid_record_args(Service2Events), ).data if not service_events: raise Exception( @@ -271,7 +265,6 @@ class ServiceBindEmployeeEventMethods(MethodToEvent): service_events = Service2Events.filter_all( Service2Events.service_id == service.id, - *Service2Events.valid_record_args(Service2Events), ).data if not service_events: raise HTTPException( diff --git a/api_events/events/events/events_events.py b/api_events/events/events/events_events.py index 096cbd7..825fa7a 100644 --- a/api_events/events/events/events_events.py +++ b/api_events/events/events/events_events.py @@ -37,9 +37,7 @@ class EventsListEventMethods(MethodToEvent): token_dict: Union[EmployeeTokenObject, OccupantTokenObject], ): Events.filter_attr = list_options - records = Events.filter_all( - *Events.valid_record_args(Events) - ) + records = Events.filter_all() return AlchemyJsonResponse( completed=True, message="DecisionBook are listed successfully", @@ -143,7 +141,6 @@ class EventsBindEventToOccupantMethods(MethodToEvent): def bind_events_employee(cls, data: RegisterEvents2Employee, token_dict): events = Events.filter_all( Events.uu_id.in_(data.event_id), - *Events.valid_record_args(Events), ).data if not events: raise HTTPException( @@ -153,16 +150,13 @@ class EventsBindEventToOccupantMethods(MethodToEvent): employee_is_not_valid = False employee = Employees.filter_one( Employees.employee_uu_id == data.employee_uu_id, - *Employees.valid_record_args(Employees), ).data if employee: staff = Staff.filter_one( Staff.id == employee.staff_id, - *Staff.valid_record_args(Staff), ).data duties = Duties.filter_one( Duties.id == staff.duties_id, - *Duties.valid_record_args(Duties), ).data if duties.company_id not in token_dict.companies_id_list: employee_is_not_valid = True @@ -196,7 +190,6 @@ class EventsBindEventToEmployeeMethods(MethodToEvent): def bind_events_occupant(cls, data: RegisterEvents2Occupant, token_dict): events = Events.filter_all( Events.uu_id.in_(data.event_id), - *Events.valid_record_args(Events), ).data if not events: raise HTTPException( @@ -205,7 +198,6 @@ class EventsBindEventToEmployeeMethods(MethodToEvent): ) occupant = BuildLivingSpace.filter_one( BuildLivingSpace.uu_id == data.build_living_space_uu_id, - *BuildLivingSpace.valid_record_args(BuildLivingSpace), ).data if not occupant: raise HTTPException( diff --git a/api_events/events/identity/people.py b/api_events/events/identity/people.py index bddadf6..1dc84c4 100644 --- a/api_events/events/identity/people.py +++ b/api_events/events/identity/people.py @@ -39,9 +39,7 @@ class PeopleListEventMethods(MethodToEvent): ], ) People.filter_attr = list_options - records = People.filter_all( - *People.valid_record_args(People), - ) + records = People.filter_all() elif isinstance(token_dict, OccupantTokenObject): related_users = Users.filter_all( Users.related_company @@ -49,12 +47,9 @@ class PeopleListEventMethods(MethodToEvent): ).data People.pre_query = People.filter_all( People.id.in_([user.person_id for user in related_users]), - *People.valid_record_args(People), ).query People.filter_attr = list_options - records = People.filter_all( - *People.valid_record_args(People), - ) + records = People.filter_all() return AlchemyJsonResponse( completed=True, message="People are listed successfully", @@ -68,9 +63,7 @@ class PeopleListEventMethods(MethodToEvent): token_dict: EmployeeTokenObject, ): People.filter_attr = list_options - records = People.filter_all( - *People.valid_record_args(People), - ).data + records = People.filter_all().data return AlchemyJsonResponse( completed=True, message="People are listed successfully", @@ -85,9 +78,7 @@ class PeopleListEventMethods(MethodToEvent): ): if isinstance(token_dict, EmployeeTokenObject): People.filter_attr = list_options - records = People.filter_all( - *People.valid_record_args(People), - ).data + records = People.filter_all().data return AlchemyJsonResponse( completed=True, message="People are listed successfully", @@ -142,7 +133,6 @@ class PeopleUpdateEventMethods(MethodToEvent): if isinstance(token_dict, EmployeeTokenObject): find_one_user = Users.filter_one( Users.uu_id == user_uu_id, - *Users.valid_record_args(Users), ).data access_authorized_company = Companies.select_action( duty_id_list=[ @@ -164,7 +154,6 @@ class PeopleUpdateEventMethods(MethodToEvent): elif isinstance(token_dict, OccupantTokenObject): find_one_user = People.filter_one( People.uu_id == user_uu_id, - *People.valid_record_args(People), ).data access_authorized_company = Companies.select_action( duty_id_list=[getattr(token_dict, "duty_id")], diff --git a/api_events/events/identity/users.py b/api_events/events/identity/users.py index 36dde82..0d17dd7 100644 --- a/api_events/events/identity/users.py +++ b/api_events/events/identity/users.py @@ -46,13 +46,12 @@ class UserListEventMethods(MethodToEvent): people_id_list = ( user.person_id for user in Users.filter_all( - Users.uu_id.in_(people_ids), *Users.valid_record_args(Users) + Users.uu_id.in_(people_ids) ).data ) Users.filter_attr = list_options records = Users.filter_all( Users.person_id.in_(people_id_list), - *Users.valid_record_args(Users), ) return AlchemyJsonResponse( completed=True, @@ -60,9 +59,7 @@ class UserListEventMethods(MethodToEvent): result=records, ) Users.filter_attr = list_options - records = Users.filter_all( - *Users.valid_record_args(Users), - ) + records = Users.filter_all() return AlchemyJsonResponse( completed=True, message="Users are listed successfully", @@ -161,7 +158,6 @@ class UserPatchEventMethods(MethodToEvent): def user_patch(cls, data: PatchRecord, user_uu_id: str, token_dict): find_one_user = Users.filter_one( Users.uu_id == user_uu_id, - *Users.valid_record_args(Users), ).data access_authorized_company = Companies.select_action( duty_id_list=[getattr(token_dict, "duty_id", 5)], diff --git a/api_services/redis/auth_actions/auth.py b/api_services/redis/auth_actions/auth.py index 0bbd1fc..9d7df29 100644 --- a/api_services/redis/auth_actions/auth.py +++ b/api_services/redis/auth_actions/auth.py @@ -85,7 +85,6 @@ def save_access_token_to_redis( for living_space in living_spaces: build_parts_selection = BuildParts.filter_all( BuildParts.id == living_space.build_parts_id, - *BuildParts.valid_record_args(BuildParts), ) if not build_parts_selection.data: raise HTTPException( @@ -133,16 +132,15 @@ def save_access_token_to_redis( list_employee = Employees.filter_all( Employees.people_id == found_user.person_id, - *Employees.valid_record_args(Employees), ).data companies_uu_id_list, companies_id_list = [], [] duty_uu_id_list, duty_id_list = [], [] for employee in list_employee: staff = Staff.filter_one( - Staff.id == employee.staff_id, *Staff.valid_record_args(Staff) + Staff.id == employee.staff_id ).data if duties := Duties.filter_one( - Duties.id == staff.duties_id, *Duties.valid_record_args(Duties) + Duties.id == staff.duties_id ).data: if duty_found := Duty.filter_by_one(id=duties.duties_id).data: duty_uu_id_list.append(str(duty_found.uu_id)) @@ -150,11 +148,9 @@ def save_access_token_to_redis( department = Departments.filter_one( Departments.id == duties.department_id, - *Departments.valid_record_args(Departments), ).data if company := Companies.filter_one( Companies.id == department.company_id, - *Companies.valid_record_args(Companies), ).data: companies_uu_id_list.append(str(company.uu_id)) companies_id_list.append(company.id) diff --git a/api_services/redis/auth_actions/token.py b/api_services/redis/auth_actions/token.py index 5983acd..1e52ecb 100644 --- a/api_services/redis/auth_actions/token.py +++ b/api_services/redis/auth_actions/token.py @@ -30,7 +30,6 @@ def parse_token_object_to_dict(request): # from requests import Request selected_event = Events.filter_one( Events.endpoint_id == endpoint_active.id, Events.id.in_(valid_token.selected_company.reachable_event_list_id), - *Events.valid_record_args(Events), ).data if not selected_event: raise HTTPException( @@ -61,7 +60,6 @@ def parse_token_object_to_dict(request): # from requests import Request selected_event = Events.filter_all( Events.endpoint_id == endpoint_active.id, Events.id.in_(valid_token.selected_occupant.reachable_event_list_id), - Events.valid_record_args(Events), ) if not selected_event.data: raise HTTPException( diff --git a/api_validations/validations_request/build_living_space.py b/api_validations/validations_request/build_living_space.py index f2a66b4..8ab0e68 100644 --- a/api_validations/validations_request/build_living_space.py +++ b/api_validations/validations_request/build_living_space.py @@ -10,6 +10,8 @@ class InsertBuildLivingSpace(BaseModelRegular): person_uu_id: str build_parts_uu_id: str occupant_type_uu_id: str + expiry_starts: str + expiry_ends: Optional[str] = None class UpdateBuildLivingSpace(PydanticBaseModel): diff --git a/databases/extensions/auth.py b/databases/extensions/auth.py index 5366d7f..6e88a7d 100644 --- a/databases/extensions/auth.py +++ b/databases/extensions/auth.py @@ -209,7 +209,6 @@ class UserLoginModule(AuthModule): People, MongoQueryIdentity, ) - found_user = Users.check_user_exits( access_key=data.access_key, domain=data.domain ) @@ -262,7 +261,7 @@ class UserLoginModule(AuthModule): record_id = uuid.uuid4().__str__() notice_link = ApiStatic.blacklist_login(record_id=record_id) found_people = People.filter_one( - People.id == found_user.person_id, *People.valid_record_args(People) + People.id == found_user.person_id ).data access_via_user = query_engine.update_access_history_via_user( AccessHistoryViaUser( diff --git a/databases/sql_models/building/build.py b/databases/sql_models/building/build.py index 3848d4d..97289d9 100644 --- a/databases/sql_models/building/build.py +++ b/databases/sql_models/building/build.py @@ -19,6 +19,7 @@ from sqlalchemy import ( Numeric, ) +from api_library.date_time_actions.date_functions import system_arrow from databases.sql_models.core_mixin import CrudCollection from databases.extensions.selector_classes import SelectActionWithEmployee @@ -240,7 +241,6 @@ class Build(CrudCollection, SelectActionWithEmployee): if data.address_uu_id: official_address = Addresses.filter_one( Addresses.uu_id==data.address_uu_id, - *Addresses.valid_record_args(Addresses) ).data data_dict["address_id"] = official_address.id data_dict["build_no"] = str(official_address.build_number) @@ -305,7 +305,6 @@ class Build(CrudCollection, SelectActionWithEmployee): def livable_part_count(self): livable_parts = BuildParts.filter_all( BuildParts.build_id == self.id, BuildParts.human_livable == True, - *BuildParts.valid_record_args(BuildParts) ) if not livable_parts.data: raise HTTPException( @@ -422,7 +421,6 @@ class BuildParts(CrudCollection): if build_types := BuildTypes.filter_one( BuildTypes.uu_id == data.build_part_type_uu_id, - *BuildTypes.valid_record_args(BuildTypes) ).data: part_direction = ApiEnumDropdown.get_by_uuid( uuid=str(data.part_direction_uu_id) @@ -554,15 +552,24 @@ class BuildLivingSpace(CrudCollection): from api_events.events.events.events_bind_services import ( ServiceBindOccupantEventMethods, ) - + if data.get('expiry_starts'): + data['expiry_starts'] = str(system_arrow.get(data['expiry_starts'])) + if data.get('expiry_ends'): + data['expiry_ends'] = str(system_arrow.get(data['expiry_ends'])) created_living_space = BuildLivingSpace.find_or_create(**data) - occupant_type = OccupantTypes.find_one( + occupant_type = OccupantTypes.filter_by_one( + system=True, uu_id=created_living_space.occupant_type_uu_id - ) - related_service = Services.find_one( - active=True, + ).data + related_service = Services.filter_by_one( related_responsibility=occupant_type.occupant_code, - ) + **Services.valid_record_dict + ).data + + created_living_space.save() + created_living_space.is_confirmed = True + created_living_space.save() + if not related_service: raise HTTPException( status_code=status.HTTP_418_IM_A_TEAPOT, @@ -584,7 +591,6 @@ class BuildLivingSpace(CrudCollection): or_( cls.owner_person_id == customer_id, cls.life_person_id == customer_id, - *cls.valid_record_args(cls) ), cls.start_date < formatted_date - timedelta(days=add_days), cls.stop_date > formatted_date + timedelta(days=add_days), diff --git a/databases/sql_models/building/decision_book.py b/databases/sql_models/building/decision_book.py index cb8c9a1..89b3890 100644 --- a/databases/sql_models/building/decision_book.py +++ b/databases/sql_models/building/decision_book.py @@ -137,7 +137,6 @@ class BuildDecisionBook(CrudCollection): ) 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 @@ -176,7 +175,6 @@ class BuildDecisionBook(CrudCollection): BuildDecisionBook.build_id == building.id, BuildDecisionBook.expiry_ends > data_dict["expiry_starts"], BuildDecisionBook.decision_type == data_dict.get("decision_type"), - *BuildDecisionBook.valid_record_args(BuildDecisionBook), ).data: # Decision book is already exist: cls.raise_http_exception( status_code=status.HTTP_409_CONFLICT, @@ -485,6 +483,9 @@ class BuildDecisionBookPerson(CrudCollection): expires_at = str( system_arrow.get(decision_book.meeting_date).shift(days=15) ) + related_living_space.save() + related_living_space.is_confirmed = True + related_living_space.save() ServiceBindOccupantEventMethods.bind_services_occupant_system( build_living_space_id=related_living_space.id, service_id=related_service.id, @@ -496,9 +497,6 @@ class BuildDecisionBookPerson(CrudCollection): def get_occupant_types(self): if occupants := BuildDecisionBookPersonOccupants.filter_all( BuildDecisionBookPersonOccupants.build_decision_book_person_id == self.id, - *BuildDecisionBookPersonOccupants.valid_record_args( - BuildDecisionBookPersonOccupants - ), ).data: return occupants return @@ -1073,12 +1071,11 @@ class BuildDecisionBookProjects(CrudCollection): related_.id for related_ in related_companies.all() ) related_building = Build.filter_all( - Build.company_id.in_(related_companies_ids), *Build.valid_record_args(Build) + Build.company_id.in_(related_companies_ids) ) related_building_ids = list(related_.id for related_ in related_building.data) 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 @@ -1087,14 +1084,12 @@ class BuildDecisionBookProjects(CrudCollection): 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 ) return cls.filter_all( cls.build_decision_book_item_id.in_(related_decision_books_items_ids), - *cls.valid_record_args(cls), ).query @classmethod diff --git a/databases/sql_models/company/company.py b/databases/sql_models/company/company.py index 5038eea..71acc74 100644 --- a/databases/sql_models/company/company.py +++ b/databases/sql_models/company/company.py @@ -70,12 +70,10 @@ class RelationshipDutyCompany(CrudCollection): list_match_company_id = [] send_duties = Duties.filter_one( Duties.uu_id == data.duty_uu_id, - *Duties.valid_record_args(Duties), ) send_user_duties = Duties.filter_one( Duties.duties_id == send_duties.id, Duties.company_id == token_duties_id, - *Duties.valid_record_args(Duties), ) if not send_user_duties: raise Exception( @@ -85,13 +83,11 @@ class RelationshipDutyCompany(CrudCollection): for company_uu_id in list(data.match_company_uu_id): company = Companies.filter_one( Companies.uu_id == company_uu_id, - *Companies.valid_record_args(Companies), ) bulk_company = RelationshipDutyCompany.filter_one( RelationshipDutyCompany.owner_id == token_company_id, RelationshipDutyCompany.relationship_type == "Bulk", RelationshipDutyCompany.member_id == company.id, - *RelationshipDutyCompany.valid_record_args(RelationshipDutyCompany), ) if not bulk_company: raise Exception( @@ -122,12 +118,10 @@ class RelationshipDutyCompany(CrudCollection): list_match_company_id = [] send_duties = Duties.filter_one( Duties.uu_id == data.duty_uu_id, - *Duties.valid_record_args(Duties), ) send_user_duties = Duties.filter_one( Duties.duties_id == send_duties.id, Duties.company_id == token_duties_id, - *Duties.valid_record_args(Duties), ) if not send_user_duties: raise Exception( @@ -137,13 +131,11 @@ class RelationshipDutyCompany(CrudCollection): for company_uu_id in list(data.match_company_uu_id): company = Companies.filter_one( Companies.uu_id == company_uu_id, - *Companies.valid_record_args(Companies), ) bulk_company = RelationshipDutyCompany.filter_one( RelationshipDutyCompany.owner_id == token_company_id, RelationshipDutyCompany.relationship_type == "Bulk", RelationshipDutyCompany.member_id == company.id, - *RelationshipDutyCompany.valid_record_args(RelationshipDutyCompany), ) if not bulk_company: raise Exception( @@ -254,7 +246,6 @@ class Companies(CrudCollection, SelectAction): official_address = Addresses.filter_one( Addresses.uu_id == data.official_address_uu_id, - *Addresses.valid_record_args(Addresses), ).data # if not official_address: # raise HTTPException( diff --git a/databases/sql_models/core_mixin.py b/databases/sql_models/core_mixin.py index 6b09b11..57ab781 100644 --- a/databases/sql_models/core_mixin.py +++ b/databases/sql_models/core_mixin.py @@ -164,7 +164,10 @@ class CrudMixin(Base, SmartQueryMixin, SessionMixin, FilterAttributes): is_found can be used to check if the record was found or created. """ check_kwargs = cls.extract_system_fields(kwargs) - cls.pre_query = cls.query.filter(cls.expiry_ends < system_arrow.now().date()) + cls.pre_query = cls.query.filter( + cls.expiry_ends > str(system_arrow.now()), + cls.expiry_starts <= str(system_arrow.now()), + ) already_record = cls.filter_by_one(system=True, **check_kwargs).data cls.pre_query = None if already_record: @@ -195,8 +198,8 @@ class CrudMixin(Base, SmartQueryMixin, SessionMixin, FilterAttributes): if getattr(cls.creds, "person_id", None) and getattr( cls.creds, "person_name", None ): - cls.created_by_id = cls.creds.get("person_id", "Unknown") - cls.created_by = cls.creds.get("person_name", "Unknown") + cls.created_by_id = cls.creds.get("person_id", None) + cls.created_by = cls.creds.get("person_name", None) created_record.flush() return created_record diff --git a/databases/sql_models/event/event.py b/databases/sql_models/event/event.py index 551e9ec..e24ad25 100644 --- a/databases/sql_models/event/event.py +++ b/databases/sql_models/event/event.py @@ -69,7 +69,7 @@ class Modules(CrudCollection): def retrieve_services(self): services = Services.filter_all( - Services.module_id == self.id, *Services.valid_record_args(Services) + Services.module_id == self.id ).data if not services: self.raise_http_exception( @@ -146,11 +146,11 @@ class Event2Employee(CrudCollection): @classmethod def get_event_id_by_employee_id(cls, employee_id) -> (list, list): active_events = cls.filter_all( - cls.employee_id == employee_id, *cls.valid_record_args(cls) + cls.employee_id == employee_id ) active_events_id = [event.event_id for event in active_events.data] active_events = Events.filter_all( - Events.id.in_(active_events_id), *Events.valid_record_args(Events) + Events.id.in_(active_events_id) ) active_events_uu_id = [str(event.uu_id) for event in active_events.data] return active_events_id, active_events_uu_id @@ -189,11 +189,10 @@ class Event2Occupant(CrudCollection): ) -> (list, list): active_events = cls.filter_all( cls.build_living_space_id == build_living_space_id, - *cls.valid_record_args(cls), ).data active_events_id = [event.event_id for event in active_events] active_events = Events.filter_all( - Events.id.in_(active_events_id), *Events.valid_record_args(Events) + Events.id.in_(active_events_id) ).data active_events_uu_id = [str(event.uu_id) for event in active_events] return active_events_id, active_events_uu_id diff --git a/databases/sql_models/identity/identity.py b/databases/sql_models/identity/identity.py index 60f4077..8eaedfb 100644 --- a/databases/sql_models/identity/identity.py +++ b/databases/sql_models/identity/identity.py @@ -139,7 +139,6 @@ class Users(CrudCollection, UserLoginModule, SelectAction): def create_action(cls, create_user: InsertUsers): found_person = People.filter_one( People.uu_id == create_user.people_uu_id, - *People.valid_record_args(People), ).data if not found_person: raise HTTPException(status_code=400, detail="Person not found.") @@ -164,14 +163,19 @@ class Users(CrudCollection, UserLoginModule, SelectAction): @classmethod def credentials(cls): person_object = People.filter_by_one(system=True, id=cls.person_id).data - if not person_object: - raise HTTPException( - status_code=401, - detail="Person not found. Please contact the admin.", - ) + # if not person_object: + # raise HTTPException( + # status_code=401, + # detail="Person not found. Please contact the admin.", + # ) + if person_object: + return { + "person_id": person_object.id, + "person_uu_id": str(person_object.uu_id), + } return { - "person_id": person_object.id, - "person_uu_id": str(person_object.uu_id), + "person_id": None, + "person_uu_id": None, } def get_employee_and_duty_details(self): @@ -179,7 +183,6 @@ class Users(CrudCollection, UserLoginModule, SelectAction): found_person = People.filter_one( People.id==self.person_id, - *People.valid_record_args(People), ) found_employees = Employees.filter_by_active( people_id=found_person.id, is_confirmed=True @@ -460,9 +463,6 @@ class Addresses(CrudCollection): post_code_list = RelationshipEmployee2PostCode.filter_all( RelationshipEmployee2PostCode.employee_id == token_dict.selected_company.employee_id, - *RelationshipEmployee2PostCode.valid_record_args( - RelationshipEmployee2PostCode - ), ).data post_code_id_list = [post_code.member_id for post_code in post_code_list] if not post_code_id_list: @@ -471,7 +471,7 @@ class Addresses(CrudCollection): detail="User has no post code registered. User can not list addresses.", ) cls.pre_query = cls.filter_all( - cls.post_code_id.in_(post_code_id_list), cls.valid_record_args(cls) + cls.post_code_id.in_(post_code_id_list) ).query filter_cls = cls.filter_all(*filter_expr or []) cls.pre_query = None diff --git a/databases/sql_models/sql_operations.py b/databases/sql_models/sql_operations.py index d945a8a..36b5c15 100644 --- a/databases/sql_models/sql_operations.py +++ b/databases/sql_models/sql_operations.py @@ -48,7 +48,6 @@ class FilterAttributes: """Saves the updated model to the current entity db.""" try: cls.__session__.commit() - return cls except SQLAlchemyError as e: cls.raise_http_exception( status_code="HTTP_400_BAD_REQUEST", @@ -122,14 +121,26 @@ class FilterAttributes: ) return arg + @classmethod + def get_active_and_confirmed_query_arg(cls, arg): + """Add active and confirmed to the query.""" + arg = cls.add_new_arg_to_args( + arg, "is_confirmed", cls.is_confirmed == True + ) + arg = cls.add_new_arg_to_args( + arg, "active", cls.active == True + ) + arg = cls.add_new_arg_to_args( + arg, "deleted", cls.deleted == False + ) + return arg + @classmethod def select_only( cls, *args, select_args: list, order_by=None, limit=None, system=False ): if not system: - args = cls.add_new_arg_to_args( - args, "is_confirmed", cls.is_confirmed == True - ) + args = cls.get_active_and_confirmed_query_arg(args) args = cls.get_not_expired_query_arg(args) query = cls._query().filter(*args).with_entities(*select_args) cls.total_count = query.count() @@ -175,9 +186,7 @@ class FilterAttributes: """ arg_left = lambda arg_obj: getattr(getattr(arg_obj, "left", None), "key", None) if not system: - args = cls.add_new_arg_to_args( - args, "is_confirmed", cls.is_confirmed == True - ) + args = cls.get_active_and_confirmed_query_arg(args) args = cls.get_not_expired_query_arg(args) filter_list = cls.get_filter_attributes() if filter_list.get("query", None): @@ -199,9 +208,7 @@ class FilterAttributes: Filters one record regardless of is_deleted, is_confirmed. """ if not system: - args = cls.add_new_arg_to_args( - args, "is_confirmed", cls.is_confirmed == True - ) + args = cls.get_active_and_confirmed_query_arg(args) args = cls.get_not_expired_query_arg(args) query = cls._query().filter(*args) cls.total_count = 1 diff --git a/service_app/application/create_file.py b/service_app/application/create_file.py index 5c5022c..b492475 100644 --- a/service_app/application/create_file.py +++ b/service_app/application/create_file.py @@ -43,7 +43,9 @@ def create_app(routers): if route.include_in_schema: methods = [method.lower() for method in getattr(route, "methods")] for method in methods: - if path not in Config.INSECURE_PATHS: + insecure_paths = Config.INSECURE_PATHS.copy() + insecure_paths.remove("/authentication/select") + if path not in insecure_paths: openapi_schema["paths"][path][method]["security"] = [ {"Bearer Auth": []} ] diff --git a/service_app_init/initialize_app/event_initator.py b/service_app_init/initialize_app/event_initator.py index 47ff698..f403db0 100644 --- a/service_app_init/initialize_app/event_initator.py +++ b/service_app_init/initialize_app/event_initator.py @@ -97,15 +97,15 @@ def add_events_all_services_and_occupant_types(): ) for block in event_block_class(): event_id, event_uu_id = block - Service2Events.find_or_create( + service_events = Service2Events.find_or_create( service_id=service_selected.id, service_uu_id=str(service_selected.uu_id), event_id=event_id, event_uu_id=event_uu_id, ) - Service2Events.save() - Service2Events.is_confirmed = True - Service2Events.save() + service_events.save() + service_events.is_confirmed = True + service_events.save() return diff --git a/service_app_init/initialize_app/initialize_default_department.py b/service_app_init/initialize_app/initialize_default_department.py index e72f5d3..9de57a7 100644 --- a/service_app_init/initialize_app/initialize_default_department.py +++ b/service_app_init/initialize_app/initialize_default_department.py @@ -140,9 +140,7 @@ def create_occupant_types_defaults(): ] for list_occupant_type in list_occupant_types: - created_type = OccupantTypes.find_or_create( - **{"is_confirmed": True, **list_occupant_type} - ) + created_type = OccupantTypes.find_or_create(**list_occupant_type) created_type.save() created_type.is_confirmed = True created_type.save() diff --git a/service_app_test/test_application/migrate_old_data/building.py b/service_app_test/test_application/migrate_old_data/building.py index f405773..24f0b6d 100644 --- a/service_app_test/test_application/migrate_old_data/building.py +++ b/service_app_test/test_application/migrate_old_data/building.py @@ -95,7 +95,7 @@ def get_build_living_space_from_json(): read_files = read_files_json.get("build_living_space") for row in read_files: pydantic_row = InsertBuildLivingSpace(**row) - with_pydantic.append(pydantic_row.model_dump()) + with_pydantic.append(pydantic_row.excluded_dump()) if not with_pydantic: raise Exception("No data found") return with_pydantic @@ -109,12 +109,6 @@ def create_address(requester: BothAPIS, post_code): print("post_code_response", post_code_response.text) response_post_code = post_code_response.json() response_post_code_uu_id = response_post_code["data"]["uu_id"] - requester.local_api.post( - endpoint=f"/postcode/update/{response_post_code_uu_id}", - data={ - "is_confirmed": True, - }, - ) return response_post_code_uu_id @@ -212,14 +206,14 @@ def migrate_build_iban(requester: BothAPIS, build_uu_id: str): def migrate_build_living_space(requester: BothAPIS): response_datas = get_build_living_space_from_json() for response_data in response_datas: + print("b response_data[person_uu_id]", response_data["person_uu_id"]) response = requester.local_api.post( endpoint="/people/list", - data={"page": 1, "size": 1, "query": {"ref_id": response_data.get("person_uu_id")}}, + data={"page": 1, "size": 1, "query": {"ref_id": response_data["person_uu_id"]}}, ) print("/people/list response", response.text) - response_data["person_uu_id"] = response.json()["data"][0]["uu_id"] - + print("a response_data[person_uu_id]", response_data["person_uu_id"]) response = requester.local_api.post( endpoint="/building/parts/list", data={"page": 1, "size": 30, "query": {"ref_id": response_data.get("build_parts_uu_id")}}, diff --git a/service_app_test/test_application/migrate_old_data/data/people.json b/service_app_test/test_application/migrate_old_data/data/people.json index d0b8505..5c65b18 100644 --- a/service_app_test/test_application/migrate_old_data/data/people.json +++ b/service_app_test/test_application/migrate_old_data/data/people.json @@ -86,6 +86,7 @@ "tax_no" : "", "id" : 17, "uu_id" : "cb687f38-91e5-461b-a5b7-53cfe98d5ea1", + "emails" : "caglarcelik8822@gmail.com", "ref_id" : "71c00e1f-2a3f-4c9d-922d-376647a1ca7f", "created_at" : "2024-11-06T08:50:09.747Z", "updated_at" : "2024-11-06T08:50:09.747Z", @@ -121,6 +122,7 @@ "tax_no" : "", "id" : 18, "uu_id" : "2fa2d08e-69e3-4f3a-9104-d32e77411729", + "emails" : "Osmankilinc67@gmail.com", "ref_id" : "9aa3064e-6db1-4f50-82c9-6130e7312a0c", "created_at" : "2024-11-06T08:50:09.747Z", "updated_at" : "2024-11-06T08:50:09.747Z", @@ -366,6 +368,7 @@ "tax_no" : "", "id" : 28, "uu_id" : "0d82e964-80fd-4c80-9f8d-5cac1d7a2f68", + "emails" : "sozdirim@gmail.com", "ref_id" : "eed3b880-fafa-4546-be39-4d3002c089ab", "created_at" : "2024-11-06T08:50:09.747Z", "updated_at" : "2024-11-06T08:50:09.747Z", @@ -395,6 +398,7 @@ "father_name" : "", "mother_name" : "", "country_code" : "TR", + "emails" : "songulvar@gmail.com", "national_identity_id" : "481b626f-b566-4c9e-9c2e-9fee5db440aa", "birth_place" : "", "birth_date" : "1899-12-31T21:00:00.000Z", @@ -436,6 +440,7 @@ "tax_no" : "", "id" : 21, "uu_id" : "36620cc9-eeaa-40e3-885d-e1ab0e8cc7d1", + "emails" : "berat.varnali@turktelekom.com.tr", "ref_id" : "da53214e-49be-4b07-bc1a-c39c3fe44df1", "created_at" : "2024-11-06T08:50:09.747Z", "updated_at" : "2024-11-06T08:50:09.747Z", @@ -471,6 +476,7 @@ "tax_no" : "", "id" : 22, "uu_id" : "ba23bb68-bd82-4022-855a-2c29c23e75a0", + "emails" : "iremyuksekol@gmail.com", "ref_id" : "e1b9aea6-6787-4304-8a1f-dd712bcbea33", "created_at" : "2024-11-06T08:50:09.747Z", "updated_at" : "2024-11-06T08:50:09.747Z", @@ -540,6 +546,7 @@ "birth_date" : "1899-12-31T21:00:00.000Z", "tax_no" : "", "id" : 31, + "emails" : "muberrabaltaci@hotmail.com", "uu_id" : "312fe4ca-c6ba-47d5-b123-96c6e718e176", "ref_id" : "a0d3a4e3-3081-43e8-ae71-063f216126e9", "created_at" : "2024-11-06T08:50:09.747Z", @@ -611,6 +618,7 @@ "tax_no" : "", "id" : 33, "uu_id" : "1ffc8ec9-6cd2-4bd5-bd33-fe29ff13b82f", + "emails" : "fatih707@hotmail.com", "ref_id" : "41823bea-1b4c-4eb2-ae98-ca50f6af8b2e", "created_at" : "2024-11-06T08:50:09.747Z", "updated_at" : "2024-11-06T08:50:09.747Z", @@ -646,6 +654,7 @@ "tax_no" : "", "id" : 34, "uu_id" : "3f700961-30fc-441b-991e-4bba1b360496", + "emails" : "gulsermay@gmail.com", "ref_id" : "122e627b-c6fe-46ac-b419-c26f5f418630", "created_at" : "2024-11-06T08:50:09.747Z", "updated_at" : "2024-11-06T08:50:09.747Z", @@ -681,6 +690,7 @@ "tax_no" : "", "id" : 12, "uu_id" : "92dd0069-4627-44cb-9fa9-7e594ea81be6", + "emails" : "hcihans@gmail.com", "ref_id" : "1940fb33-1eb6-4163-811b-89940302340a", "created_at" : "2024-11-06T08:50:09.747Z", "updated_at" : "2024-11-06T08:50:09.747Z", @@ -716,6 +726,7 @@ "tax_no" : "", "id" : 35, "uu_id" : "b79aa7d7-4b3c-47a4-b71a-8ca9be9c168c", + "emails" : "mustafa_edepli@hotmail.com", "ref_id" : "280d5b24-33e5-40bb-a278-1a4783f45205", "created_at" : "2024-11-06T08:50:09.747Z", "updated_at" : "2024-11-06T08:50:09.747Z", @@ -751,6 +762,7 @@ "tax_no" : "", "id" : 36, "uu_id" : "1a81b4b3-fcc4-4c01-b7d0-f54dc3f7c9a6", + "emails" : "selma.karatay@hotmail.com", "ref_id" : "2c10f55d-4560-40c3-86f5-aedf38f084b5", "created_at" : "2024-11-06T08:50:09.747Z", "updated_at" : "2024-11-06T08:50:09.747Z", @@ -891,6 +903,7 @@ "tax_no" : "", "id" : 3, "uu_id" : "691f73a4-02e4-49c0-a7e5-452232499479", + "emails" : "mehmet.karatay@hotmail.com", "ref_id" : "d2ae4c73-bcb9-4afe-9473-621f70f649cf", "created_at" : "2024-11-06T08:50:09.747Z", "updated_at" : "2024-11-06T08:50:09.747Z", @@ -921,6 +934,7 @@ "mother_name" : "", "country_code" : "TR", "national_identity_id" : "d153bb50-4ce2-4da2-86bd-e5d00fe18d2f", + "emails" : "erinckaratas@gmail.com", "birth_place" : "", "birth_date" : "1899-12-31T21:00:00.000Z", "tax_no" : "", @@ -961,6 +975,7 @@ "tax_no" : "", "id" : 13, "uu_id" : "1ee7244f-6a99-4680-b8d9-880c61270261", + "emails" : "barisgkce@gmail.com", "ref_id" : "25e89088-ef5d-443f-a151-898e961b68a0", "created_at" : "2024-11-06T08:50:09.747Z", "updated_at" : "2024-11-06T08:50:09.747Z", @@ -1031,6 +1046,7 @@ "tax_no" : "", "id" : 62, "uu_id" : "b1dcdb0d-d6a2-41a3-82e9-8ae29749c0d6", + "emails" : "damlaayiker@gmail.com", "ref_id" : "100940000000015", "created_at" : "2024-11-06T08:50:09.757Z", "updated_at" : "2024-11-06T08:50:09.757Z", @@ -1101,6 +1117,7 @@ "tax_no" : "", "id" : 37, "uu_id" : "48c2317d-17a6-4bf3-8798-db97d01f14db", + "emails" : "arisoy2012@gmail.com", "ref_id" : "1a5d7bdf-f24e-4b9c-91bb-955a09b965f3", "created_at" : "2024-11-06T08:50:09.747Z", "updated_at" : "2024-11-06T08:50:09.747Z", @@ -1276,6 +1293,7 @@ "tax_no" : "", "id" : 72, "uu_id" : "4087d0ad-24b7-4e9f-b4fd-065d8c2eb9c4", + "emails" : "sinem@valor.com.tr", "ref_id" : "100940000000025", "created_at" : "2024-11-06T08:50:09.757Z", "updated_at" : "2024-11-06T08:50:09.757Z", @@ -1346,6 +1364,7 @@ "tax_no" : "", "id" : 75, "uu_id" : "ad535cf7-c729-4db3-8051-0ff59ebdbca9", + "emails" : "iletisim@smmmsimsek.com", "ref_id" : "100940000000028", "created_at" : "2024-11-06T08:50:09.757Z", "updated_at" : "2024-11-06T08:50:09.757Z", @@ -1626,6 +1645,7 @@ "tax_no" : "", "id" : 84, "uu_id" : "56618f23-51af-444c-a6f7-87586833a5b4", + "emails" : "fatihedepli@gmail.com", "ref_id" : "100940000000037", "created_at" : "2024-11-06T08:50:09.757Z", "updated_at" : "2024-11-06T08:50:09.757Z", diff --git a/service_app_test/test_application/migrate_old_data/people.py b/service_app_test/test_application/migrate_old_data/people.py index 205ca2d..2c9fddd 100644 --- a/service_app_test/test_application/migrate_old_data/people.py +++ b/service_app_test/test_application/migrate_old_data/people.py @@ -13,6 +13,7 @@ def get_people_from_json(): read_files_json, with_pydantic = read_json_file(json_file="people"), [] read_files = read_files_json.get("people") for row in read_files: + row["ref_id"] = row["uu_id"] pydantic_row = InsertPerson(**row) with_pydantic.append(pydantic_row.model_dump()) if not with_pydantic: @@ -22,6 +23,7 @@ def get_people_from_json(): generate_random_national_identity_id = lambda n: str(random.randint(10 ** (n - 1), 10**n)) + def migrate_people(requester: BothAPIS): for response_data in get_people_from_json(): response_data["national_identity_id"] = generate_random_national_identity_id(11) 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 dd8e255..93a121f 100644 --- a/service_app_test/test_application/migrate_old_data/runner.py +++ b/service_app_test/test_application/migrate_old_data/runner.py @@ -1,6 +1,13 @@ +import arrow + from service_app_test.bases import RequestToApi from service_app_test.api_configs import WagAPI, LocalAPI, BothAPIS - +from service_app_test.test_application.evyos.decision_book import run_decision_book_depends +from service_app_test.test_application.evyos.decision_book_items import ( + send_invitation_to_building_residents, + collect_invitation_to_building_residents, + assign_people_to_pre_or_wrt +) from service_app_test.test_application.migrate_old_data.people import migrate_people from service_app_test.test_application.migrate_old_data.building import ( migrate_build, migrate_build_living_space, @@ -9,7 +16,7 @@ from service_app_test.test_application.migrate_old_data.company import migrate_c from service_app_test.test_application.migrate_old_data.accounts import migrate_account_records -password_token = "" +password_token = "CDWs5ASBD4LVbmhNeilKSqBLKjKKt0odOL9h6NY082xqwln7Bo1opvC12j07iP8Gx-vpJSpF5nqUWs-Q9klQUJ6uLc8vuPmVKYVCXE0nz2yU_xyFGOrlqrVro1FSZG1EXwWopuLA_gKH5qkiiQwI1tM3UDFLJjbnR4xjwnH4m6RHe0gYKOZbpkd-uxFxzYbw" login_data = { "domain": "evyos.com.tr", "access_key": "karatay.berkay.sup@evyos.com.tr", @@ -25,6 +32,29 @@ login_data_wag = { "password_token": "", } +login_creds_employee = { + "domain": "evyos.com.tr", + "access_key": "karatay.berkay.sup@evyos.com.tr", + "password": "string", + "remember_me": False, + "password_token": "z5nPguDu6PrY_94KlTGxGBCMcK6rZcDl5AGqO5aHWY7TcQF8LJGYikMQs9labvqdz5yM7vE_f8Zq_vqp00o3EnWwWCWhel-EsMcAujBKNRjV3jC_4xk0_1r_unIYogWAjz_spZipX6pncsch2ngvv0dpx4lHSiZ5QrDTA1RefQ", +} +access_key_president = "bmanco@example.net" +login_creds_occupant = { + "domain": "evyos.com.tr", + "access_key": access_key_president, + "password": "string", + "remember_me": False, + "password_token": "o_2Y_yXS-cl6MxLbzLrXQetXTlDLD3UBDTQNa_mBMyzSOVIgx3LGbnufLRJjd4g6BWFbwVgJIUxbK-Pi0R5dwxfVJKyoEeDdej40uRHSsElKR16nvnqgFB_BJ4nmyN0KSunZHra5NqHJor17EGExOSmlttZV5dC7vFsrc-GUkg", +} +wrt_creds_occupant = { + "domain": "evyos.com.tr", + "access_key": access_key_president, + "password": "string", + "remember_me": False, + "password_token": "", +} + wag_api = RequestToApi() wag_api.overwrite_base_url(base_url=WagAPI.base_url) wag_api.selected_object = wag_api.login_via_email_and_password( @@ -34,16 +64,81 @@ wag_api.selected_object = wag_api.login_via_email_and_password( local_api = RequestToApi() local_api.overwrite_base_url(base_url=LocalAPI.base_url) local_api.selected_object = local_api.login_via_email_and_password( - login_data=login_data, is_password_valid=True + login_data=login_data, is_password_valid=False ) both_apis = BothAPIS() both_apis.wag_api = wag_api both_apis.local_api = local_api -# migrate_company(requester=both_apis) -# migrate_people(requester=both_apis) -# migrate_build(requester=both_apis) -migrate_build_living_space(requester=both_apis) +do_migrates = False +assign_people_to_create_item = -1 -# migrate_account_records(requester=both_apis) +# selection_list = None +selection_list = [] +# selection_list = None +manager_token = "" +writers_token = manager_token +people_uu_id_list = [] +list_of_attendees = [] + + +if do_migrates: + migrate_company(requester=both_apis) + migrate_people(requester=both_apis) + migrate_build(requester=both_apis) + migrate_build_living_space(requester=both_apis) + migrate_account_records(requester=both_apis) + + +if assign_people_to_create_item == 0: + # local_api.post( + # endpoint="/building/living_space/create", + # data=dict( + # build_parts_uu_id="b23d32d2-e80c-4ca4-8d4a-bae6f710608c", + # person_uu_id="cf47be44-ec58-4585-be41-178160be5b7e", + # occupant_type_uu_id="30512a47-1b3e-4602-ac1a-75fcabb076b4", + # expiry_starts=arrow.now().date().__str__(), + # ) + # ) + + local_api.selected_object = local_api.login_via_email_and_password( + login_data=login_creds_occupant, + is_password_valid=False, + selection_list=selection_list, + ) + selected_decision_book_uu_id = run_decision_book_depends(requester=both_apis.local_api) + send_invitation = { + "build_decision_book_uu_id": selected_decision_book_uu_id, + "message": "Request for a Regular Building Meeting", + "planned_date": arrow.now().shift(days=2).date().__str__(), + } + send_invitation_to_building_residents( + send_invitation_dict=send_invitation, requester=both_apis.local_api + ) +if assign_people_to_create_item == 1: + count = 17 + list_of_attendees.insert(0, manager_token) + collect_invitation_to_building_residents( + attended_dict_list=list_of_attendees, attend_count=count + 1, + requester=both_apis.local_api + ) +elif assign_people_to_create_item == 2: + assign_people_to_pre_or_wrt( + person_uu_id=people_uu_id_list[0], + manager_token=manager_token, + occupant_code="MT-VPR", + requester=both_apis.local_api + ) + assign_people_to_pre_or_wrt( + person_uu_id=people_uu_id_list[1], + manager_token=manager_token, + occupant_code="MT-WRT", + requester=both_apis.local_api + ) + assign_people_to_pre_or_wrt( + person_uu_id=people_uu_id_list[2], + manager_token=manager_token, + occupant_code="MT-PRS", + requester=both_apis.local_api + )