Skip to content

Commit

Permalink
Merge d5e7c82 into dbf9802
Browse files Browse the repository at this point in the history
  • Loading branch information
grahamu committed Jun 29, 2016
2 parents dbf9802 + d5e7c82 commit 65a1427
Showing 1 changed file with 37 additions and 1 deletion.
38 changes: 37 additions & 1 deletion pinax/api/viewsets.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from django.conf import settings
from django.conf.urls import url
from django.core.exceptions import ObjectDoesNotExist, ValidationError
from django.db.models.base import ModelBase
from django.http import HttpResponse, Http404
from django.views.generic import View
from django.views.decorators.csrf import csrf_exempt
Expand Down Expand Up @@ -79,8 +80,43 @@ def handle_exception(self, exc):
else:
return self.render_error("unknown server error", status=500)

def get_pk(self):
"""
Convenience method returning URL PK kwarg.
"""
pk_url_kwarg = self.url.lookup["field"]
return self.kwargs[pk_url_kwarg] if pk_url_kwarg in self.kwargs else None

def get_resource_object_model(self):
"""
Convenience method returning Resource's object model, if any.
"""
if hasattr(self, "resource_class"):
return self.resource_class.model if hasattr(self.resource_class, "model") else None
else:
return None

def get_queryset(self):
"""
Convenience method returning all Resource's object model objects.
"""
return self.get_resource_object_model()._default_manager.all()

def prepare(self):
pass
"""
Sets `self.obj` to a retrieved Resource object.
No action is taken if requested method does not operate on single objects.
No action is taken if EndpointSet.get_object_model_class()
does not return a Django model.
"""
# EndpointSets may use a different data storage than Django models.
# Do not assume Django models are used.
if isinstance(self.get_resource_object_model(), ModelBase):
if self.requested_method in ["retrieve", "update", "destroy"]:
self.pk = self.get_pk()
self.obj = self.get_object_or_404(self.get_queryset(), pk=self.pk)

def check_authentication(self, endpoint):
user = None
Expand Down

0 comments on commit 65a1427

Please sign in to comment.