Skip to content

Commit 524f530

Browse files
committed
add locations
1 parent aa44513 commit 524f530

File tree

2 files changed

+39
-16
lines changed

2 files changed

+39
-16
lines changed

apps/accounts/serializers.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
from django.shortcuts import get_object_or_404
77
from drf_spectacular.utils import extend_schema_serializer
88
from rest_framework import serializers
9+
from services.crisalid.serializers import ResearcherSerializerLight
10+
from services.translator.serializers import AutoTranslatedModelSerializer
911

1012
from apps.commons.fields import (
1113
HiddenPrimaryKeyRelatedField,
@@ -27,9 +29,7 @@
2729
from apps.organizations.models import Organization
2830
from apps.projects.models import Project
2931
from apps.skills.models import Skill
30-
from apps.skills.serializers import SkillLightSerializer, TagRelatedField, TagSerializer
31-
from services.crisalid.serializers import ResearcherSerializerLight
32-
from services.translator.serializers import AutoTranslatedModelSerializer
32+
from apps.skills.serializers import SkillLightSerializer, TagRelatedField
3333

3434
from .exceptions import (
3535
FeaturedProjectPermissionDeniedError,

apps/accounts/views.py

Lines changed: 36 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,33 +25,39 @@
2525
from rest_framework.decorators import action
2626
from rest_framework.filters import OrderingFilter
2727
from rest_framework.parsers import JSONParser
28-
from rest_framework.permissions import IsAuthenticated, IsAuthenticatedOrReadOnly
28+
from rest_framework.permissions import (
29+
IsAuthenticated,
30+
IsAuthenticatedOrReadOnly,
31+
)
2932
from rest_framework.response import Response
3033
from rest_framework.serializers import BooleanField
3134
from rest_framework.views import APIView
35+
from services.google.models import GoogleAccount, GoogleGroup
36+
from services.google.tasks import (
37+
create_google_account,
38+
create_google_group,
39+
suspend_google_account,
40+
update_google_account,
41+
update_google_group,
42+
)
43+
from services.keycloak.exceptions import KeycloakAccountNotFound
44+
from services.keycloak.interface import KeycloakService
3245

3346
from apps.commons.filters import UnaccentSearchFilter
3447
from apps.commons.models import GroupData
3548
from apps.commons.permissions import IsOwner, ReadOnly, WillBeOwner
36-
from apps.commons.serializers import EmailAddressSerializer, RetrieveUpdateModelViewSet
49+
from apps.commons.serializers import (
50+
EmailAddressSerializer,
51+
RetrieveUpdateModelViewSet,
52+
)
3753
from apps.commons.utils import map_action_to_permission
3854
from apps.commons.views import DetailOnlyViewsetMixin, MultipleIDViewsetMixin
3955
from apps.files.models import Image
4056
from apps.files.views import ImageStorageView
4157
from apps.organizations.models import Organization
4258
from apps.organizations.permissions import HasOrganizationPermission
43-
from apps.projects.serializers import ProjectLightSerializer
59+
from apps.projects.serializers import LocationSerializer, ProjectLightSerializer
4460
from apps.skills.models import Skill
45-
from services.google.models import GoogleAccount, GoogleGroup
46-
from services.google.tasks import (
47-
create_google_account,
48-
create_google_group,
49-
suspend_google_account,
50-
update_google_account,
51-
update_google_group,
52-
)
53-
from services.keycloak.exceptions import KeycloakAccountNotFound
54-
from services.keycloak.interface import KeycloakService
5561

5662
from .exceptions import EmailTypeMissingError, PermissionNotFoundError
5763
from .filters import PeopleGroupFilter, UserFilter
@@ -839,6 +845,23 @@ def similars(self, request, *args, **kwargs):
839845
)
840846
return self.get_paginated_response(data.data)
841847

848+
@action(
849+
detail=True,
850+
methods=["GET"],
851+
url_path="locations",
852+
permission_classes=[ReadOnly],
853+
)
854+
def locations(self, request, *args, **kwargs):
855+
group = self.get_object()
856+
modules_manager = group.get_related_module()
857+
modules = modules_manager(group, request.user)
858+
queryset = modules.locations()
859+
860+
return Response(
861+
LocationSerializer(queryset, many=True, context={"request": request}).data,
862+
status=status.HTTP_200_OK,
863+
)
864+
842865

843866
@extend_schema(
844867
parameters=[OpenApiParameter("people_group_id", str, OpenApiParameter.PATH)]

0 commit comments

Comments
 (0)