Skip to content
Snippets Groups Projects
Commit 23e9e6eb authored by Samuel GAIST's avatar Samuel GAIST
Browse files

[common][api] Implement get_object in place of get_queryset for...

[common][api] Implement get_object in place of get_queryset for RetrieveUpdateDestroyContributionView

This view shall act on one object only and the check
should already be done there rather than in furhter
methods below.

It also follows the URL routes cleanup
parent 4853f0a3
No related branches found
No related tags found
1 merge request!327Refactor update creation api
...@@ -235,46 +235,26 @@ class RetrieveUpdateDestroyContributionView( ...@@ -235,46 +235,26 @@ class RetrieveUpdateDestroyContributionView(
): ):
model = Contribution model = Contribution
def get_queryset(self): def get_object(self):
version = self.kwargs.get("version", None) version = self.kwargs["version"]
author_name = self.kwargs.get("author_name") author_name = self.kwargs["author_name"]
object_name = self.kwargs.get("object_name") object_name = self.kwargs["object_name"]
user = self.request.user user = self.request.user
if version is not None: try:
queryset = ( obj = self.model.objects.for_user(user, True).get(
self.model.objects.for_user(user, True) author__username__iexact=author_name,
.filter( name__iexact=object_name,
author__username__iexact=author_name, version=version,
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")
) )
except self.model.DoesNotExist:
return queryset
def get(self, request, *args, **kwargs):
db_objects = self.get_queryset()
if db_objects.count() == 0:
raise drf_exceptions.NotFound() raise drf_exceptions.NotFound()
return obj
db_object = db_objects[0] def get(self, request, *args, **kwargs):
version = int(self.kwargs.get("version", -1)) db_object = self.get_object()
if version != -1 and db_object.version != version:
raise drf_exceptions.NotFound()
# Process the query string # Process the query string
allow_sharing = hasattr(db_object, "author") and ( allow_sharing = request.user == db_object.author
request.user == db_object.author
)
fields_to_return = self.get_serializer_fields( fields_to_return = self.get_serializer_fields(
request, allow_sharing=allow_sharing request, allow_sharing=allow_sharing
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment