From 6bb4074cb1a9496817453608df97a69cec5c3b97 Mon Sep 17 00:00:00 2001 From: Ruslan Bakiev <572431+veikab@users.noreply.github.com> Date: Wed, 7 Jan 2026 16:16:04 +0700 Subject: [PATCH] feat(teams): add UpdateTeamAddressMutation --- teams_app/schemas/team_schema.py | 51 ++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/teams_app/schemas/team_schema.py b/teams_app/schemas/team_schema.py index 813e2ae..eb58cb0 100644 --- a/teams_app/schemas/team_schema.py +++ b/teams_app/schemas/team_schema.py @@ -301,6 +301,56 @@ class DeleteTeamAddressMutation(graphene.Mutation): return DeleteTeamAddressMutation(success=False, message="Адрес не найден") +class UpdateTeamAddressInput(graphene.InputObjectType): + uuid = graphene.String(required=True) + name = graphene.String() + address = graphene.String() + latitude = graphene.Float() + longitude = graphene.Float() + countryCode = graphene.String() + isDefault = graphene.Boolean() + + +class UpdateTeamAddressMutation(graphene.Mutation): + class Arguments: + input = UpdateTeamAddressInput(required=True) + + success = graphene.Boolean() + message = graphene.String() + address = graphene.Field(TeamAddress) + + @require_scopes("teams:member") + def mutate(self, info, input): + team_uuid = getattr(info.context, 'team_uuid', None) + if not team_uuid: + return UpdateTeamAddressMutation(success=False, message="Не авторизован") + + try: + team = TeamModel.objects.get(uuid=team_uuid) + address = team.addresses.get(uuid=input.uuid) + + if input.name is not None: + address.name = input.name + if input.address is not None: + address.address = input.address + if input.latitude is not None: + address.latitude = input.latitude + if input.longitude is not None: + address.longitude = input.longitude + if input.countryCode is not None: + address.country_code = input.countryCode + if input.isDefault is not None: + address.is_default = input.isDefault + + address.save() + return UpdateTeamAddressMutation(success=True, message="Адрес обновлен", address=address) + + except TeamModel.DoesNotExist: + return UpdateTeamAddressMutation(success=False, message="Команда не найдена") + except TeamAddressModel.DoesNotExist: + return UpdateTeamAddressMutation(success=False, message="Адрес не найден") + + class SetSelectedLocationInput(graphene.InputObjectType): type = graphene.String(required=True) # 'address' или 'hub' uuid = graphene.String(required=True) @@ -361,6 +411,7 @@ class SetSelectedLocationMutation(graphene.Mutation): class TeamMutation(graphene.ObjectType): invite_member = InviteMemberMutation.Field() create_team_address = CreateTeamAddressMutation.Field() + update_team_address = UpdateTeamAddressMutation.Field() delete_team_address = DeleteTeamAddressMutation.Field() set_selected_location = SetSelectedLocationMutation.Field()