resources : bug fix + better error messages

This commit is contained in:
Sébastien Piquemal 2012-01-05 22:28:51 +02:00
parent 926059dad6
commit 36b89cd367
2 changed files with 27 additions and 6 deletions

View File

@ -1,3 +1,4 @@
from django.core.exceptions import ImproperlyConfigured
from django import forms from django import forms
from django.core.urlresolvers import reverse, get_urlconf, get_resolver, NoReverseMatch from django.core.urlresolvers import reverse, get_urlconf, get_resolver, NoReverseMatch
from django.db import models from django.db import models
@ -533,18 +534,37 @@ class ModelResource(FormResource):
def get_model(self): def get_model(self):
""" """
Return the model class for this view. Return the model class for this resource.
""" """
return getattr(self, 'model', getattr(self.view, 'model', None)) if hasattr(self, 'model'):
return self.model
elif hasattr(self.view, 'model'):
return self.view.model
else:
raise ImproperlyConfigured(u"%(cls)s is missing a model. Define "
u"%(cls)s.model." % {
'cls': self.__class__
})
def get_queryset(self): def get_queryset(self):
""" """
Return the queryset that should be used when retrieving or listing Return the queryset that should be used when retrieving or listing
instances. instances.
""" """
return getattr(self, 'queryset', if hasattr(self, 'queryset'):
getattr(self.view, 'queryset', queryset = self.queryset
self.get_model().objects.all())) elif hasattr (self.view, 'queryset'):
queryset = self.view.queryset
else:
model = self.get_model()
if model:
queryset = model._default_manager.all()
else:
raise ImproperlyConfigured(u"%(cls)s is missing a queryset. Define "
u"%(cls)s.model or %(cls)s.queryset." % {
'cls': self.__class__
})
return queryset._clone()
def get_ordering(self): def get_ordering(self):
""" """

View File

@ -201,10 +201,11 @@ class ListModelView(ListResourceMixin, ModelView):
A view which provides default operations for list, against a model in the A view which provides default operations for list, against a model in the
database. database.
""" """
queryset = None
_suffix = 'List' _suffix = 'List'
class ListOrCreateModelView(PostResourceMixin, ListResourceMixin, ModelView): class ListOrCreateModelView(PostResourceMixin, ListModelView, ModelView):
""" """
A view which provides default operations for list and create, against a A view which provides default operations for list and create, against a
model in the database. model in the database.