diff --git a/osmchadjango/supervise/urls.py b/osmchadjango/supervise/urls.py index e161726d..940bf574 100644 --- a/osmchadjango/supervise/urls.py +++ b/osmchadjango/supervise/urls.py @@ -13,6 +13,11 @@ view=views.AOIListCreateAPIView.as_view(), name='aoi-list-create' ), + re_path( + r'^aoi/released/$', + view=views.AOIListCreateAPIViewReleased.as_view(), + name='aoi-get-released' + ), re_path( r'^aoi/(?P[0-9a-f-]+)/$', view=views.AOIRetrieveUpdateDestroyAPIView.as_view(), diff --git a/osmchadjango/supervise/views.py b/osmchadjango/supervise/views.py index 8c8645ad..b670f185 100644 --- a/osmchadjango/supervise/views.py +++ b/osmchadjango/supervise/views.py @@ -50,6 +50,29 @@ def has_object_permission(self, request, view, obj): else: return obj.user == request.user +class AOIListCreateAPIViewReleased(ListAPIView): + """ + get: + List the released Areas of Interest of the request user. + """ + permission_classes = (IsAuthenticated,) + serializer_class = AreaOfInterestSerializer + + def get_queryset(self): + allAreaOfInterests = AreaOfInterest.objects.all() + releasedAreas = [] + for areaOfInterest in allAreaOfInterests: + if 'filterMember' in areaOfInterest.filters: + filterMembersString = areaOfInterest.filters['filterMember'] + filterMembers = filterMembersString.split(',') + for filterMember in filterMembers: + if str(self.request.user) == filterMember.strip(): + releasedAreas.append(areaOfInterest) + + if releasedAreas is not None: + return releasedAreas + else: + AreaOfInterest.objects.none() class AOIListCreateAPIView(ListCreateAPIView): """