diff --git a/beat/web/common/api.py b/beat/web/common/api.py index 5fb277f215719bb4b804b8e2725b2744129a904f..2ce7b761aacdd1e7924e5221abde3bac49a1f4c8 100644 --- a/beat/web/common/api.py +++ b/beat/web/common/api.py @@ -235,46 +235,26 @@ class RetrieveUpdateDestroyContributionView( ): model = Contribution - def get_queryset(self): - version = self.kwargs.get("version", None) - author_name = self.kwargs.get("author_name") - object_name = self.kwargs.get("object_name") + def get_object(self): + version = self.kwargs["version"] + author_name = self.kwargs["author_name"] + object_name = self.kwargs["object_name"] user = self.request.user - if version is not None: - queryset = ( - self.model.objects.for_user(user, True) - .filter( - author__username__iexact=author_name, - name__iexact=object_name, - version__gte=version, - ) - .order_by("version") - ) - else: - queryset = ( - self.model.objects.for_user(user, True) - .filter(author__username__iexact=author_name, name__iexact=object_name) - .order_by("-version") + try: + obj = self.model.objects.for_user(user, True).get( + author__username__iexact=author_name, + name__iexact=object_name, + version=version, ) - - return queryset - - def get(self, request, *args, **kwargs): - db_objects = self.get_queryset() - - if db_objects.count() == 0: + except self.model.DoesNotExist: raise drf_exceptions.NotFound() + return obj - db_object = db_objects[0] - version = int(self.kwargs.get("version", -1)) - - if version != -1 and db_object.version != version: - raise drf_exceptions.NotFound() + def get(self, request, *args, **kwargs): + db_object = self.get_object() # Process the query string - allow_sharing = hasattr(db_object, "author") and ( - request.user == db_object.author - ) + allow_sharing = request.user == db_object.author fields_to_return = self.get_serializer_fields( request, allow_sharing=allow_sharing