aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2012-10-03 09:26:15 +0100
committerTom Christie2012-10-03 09:26:15 +0100
commitc30e0795bebd9980a66ae7db1a0d8c43f77d4c11 (patch)
tree8b8dee7c7b15dd21fad9358cd97f274df4801527
parentd1b99f350aded62fe480f7dc4749cd63d52715d2 (diff)
downloaddjango-rest-framework-c30e0795bebd9980a66ae7db1a0d8c43f77d4c11.tar.bz2
Rename generic views
-rw-r--r--docs/tutorial/3-class-based-views.md4
-rw-r--r--rest_framework/generics.py24
-rw-r--r--rest_framework/renderers.py24
-rw-r--r--rest_framework/resources.py4
-rw-r--r--rest_framework/serializers.py2
-rw-r--r--rest_framework/tests/generics.py24
-rw-r--r--rest_framework/tests/pagination.py4
7 files changed, 44 insertions, 42 deletions
diff --git a/docs/tutorial/3-class-based-views.md b/docs/tutorial/3-class-based-views.md
index 25d5773f..663138bd 100644
--- a/docs/tutorial/3-class-based-views.md
+++ b/docs/tutorial/3-class-based-views.md
@@ -136,12 +136,12 @@ Using the mixin classes we've rewritten the views to use slightly less code than
from rest_framework import generics
- class CommentRoot(generics.RootAPIView):
+ class CommentRoot(generics.ListCreateAPIView):
model = Comment
serializer_class = CommentSerializer
- class CommentInstance(generics.InstanceAPIView):
+ class CommentInstance(generics.RetrieveUpdateDestroyAPIView):
model = Comment
serializer_class = CommentSerializer
diff --git a/rest_framework/generics.py b/rest_framework/generics.py
index 8647ad42..901d23d1 100644
--- a/rest_framework/generics.py
+++ b/rest_framework/generics.py
@@ -106,10 +106,10 @@ class ListAPIView(mixins.ListModelMixin,
return self.metadata(request, *args, **kwargs)
-class RootAPIView(mixins.ListModelMixin,
- mixins.CreateModelMixin,
- mixins.MetadataMixin,
- MultipleObjectBaseView):
+class ListCreateAPIView(mixins.ListModelMixin,
+ mixins.CreateModelMixin,
+ mixins.MetadataMixin,
+ MultipleObjectBaseView):
"""
Concrete view for listing a queryset or creating a model instance.
"""
@@ -123,9 +123,9 @@ class RootAPIView(mixins.ListModelMixin,
return self.metadata(request, *args, **kwargs)
-class DetailAPIView(mixins.RetrieveModelMixin,
- mixins.MetadataMixin,
- SingleObjectBaseView):
+class RetrieveAPIView(mixins.RetrieveModelMixin,
+ mixins.MetadataMixin,
+ SingleObjectBaseView):
"""
Concrete view for retrieving a model instance.
"""
@@ -136,11 +136,11 @@ class DetailAPIView(mixins.RetrieveModelMixin,
return self.metadata(request, *args, **kwargs)
-class InstanceAPIView(mixins.RetrieveModelMixin,
- mixins.UpdateModelMixin,
- mixins.DestroyModelMixin,
- mixins.MetadataMixin,
- SingleObjectBaseView):
+class RetrieveUpdateDestroyAPIView(mixins.RetrieveModelMixin,
+ mixins.UpdateModelMixin,
+ mixins.DestroyModelMixin,
+ mixins.MetadataMixin,
+ SingleObjectBaseView):
"""
Concrete view for retrieving, updating or deleting a model instance.
"""
diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py
index 8f2a3570..b3d27630 100644
--- a/rest_framework/renderers.py
+++ b/rest_framework/renderers.py
@@ -239,27 +239,29 @@ class DocumentingHTMLRenderer(BaseRenderer):
# We need to map our Fields to Django's Fields.
field_mapping = dict([
- [serializers.FloatField.__name__, forms.FloatField],
- [serializers.IntegerField.__name__, forms.IntegerField],
- [serializers.DateTimeField.__name__, forms.DateTimeField],
- [serializers.DateField.__name__, forms.DateField],
- [serializers.EmailField.__name__, forms.EmailField],
- [serializers.CharField.__name__, forms.CharField],
- [serializers.BooleanField.__name__, forms.BooleanField]
+ [serializers.FloatField.__name__, forms.FloatField],
+ [serializers.IntegerField.__name__, forms.IntegerField],
+ [serializers.DateTimeField.__name__, forms.DateTimeField],
+ [serializers.DateField.__name__, forms.DateField],
+ [serializers.EmailField.__name__, forms.EmailField],
+ [serializers.CharField.__name__, forms.CharField],
+ [serializers.BooleanField.__name__, forms.BooleanField]
])
# Creating an on the fly form see: http://stackoverflow.com/questions/3915024/dynamically-creating-classes-python
fields = {}
- object, data = None, None
+ obj, data = None, None
if getattr(view, 'object', None):
- object = view.object
- serializer = view.get_serializer(instance=object)
+ obj = view.object
+
+ serializer = view.get_serializer(instance=obj)
for k, v in serializer.fields.items():
if v.readonly:
continue
fields[k] = field_mapping[v.__class__.__name__]()
+
OnTheFlyForm = type("OnTheFlyForm", (forms.Form,), fields)
- if object and not view.request.method == 'DELETE': # Don't fill in the form when the object is deleted
+ if obj and not view.request.method == 'DELETE': # Don't fill in the form when the object is deleted
data = serializer.data
form_instance = OnTheFlyForm(data)
return form_instance
diff --git a/rest_framework/resources.py b/rest_framework/resources.py
index 5a70a034..493457e3 100644
--- a/rest_framework/resources.py
+++ b/rest_framework/resources.py
@@ -62,8 +62,8 @@ class Resource(ResourceMixin, views.APIView):
class ModelResource(ResourceMixin, views.APIView):
- root_class = generics.RootAPIView
- detail_class = generics.InstanceAPIView
+ root_class = generics.ListCreateAPIView
+ detail_class = generics.RetrieveUpdateDestroyAPIView
def root_view(self):
return wrapped(self, self.root_class())
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py
index a2f211ab..83ec1470 100644
--- a/rest_framework/serializers.py
+++ b/rest_framework/serializers.py
@@ -322,7 +322,7 @@ class ModelSerializer(RelatedField, Serializer):
else:
field = self.get_field(model_field)
- if field is not None:
+ if field:
field.initialize(parent=self, model_field=model_field)
ret[model_field.name] = field
diff --git a/rest_framework/tests/generics.py b/rest_framework/tests/generics.py
index 76662373..187465ed 100644
--- a/rest_framework/tests/generics.py
+++ b/rest_framework/tests/generics.py
@@ -8,7 +8,7 @@ from rest_framework.tests.models import BasicModel
factory = RequestFactory()
-class RootView(generics.RootAPIView):
+class RootView(generics.ListCreateAPIView):
"""
Example description for OPTIONS.
"""
@@ -16,7 +16,7 @@ class RootView(generics.RootAPIView):
paginate_by = None
-class InstanceView(generics.InstanceAPIView):
+class InstanceView(generics.RetrieveUpdateDestroyAPIView):
"""
Example description for OPTIONS.
"""
@@ -40,7 +40,7 @@ class TestRootView(TestCase):
def test_get_root_view(self):
"""
- GET requests to RootAPIView should return list of objects.
+ GET requests to ListCreateAPIView should return list of objects.
"""
request = factory.get('/')
response = self.view(request).render()
@@ -49,7 +49,7 @@ class TestRootView(TestCase):
def test_post_root_view(self):
"""
- POST requests to RootAPIView should create a new object.
+ POST requests to ListCreateAPIView should create a new object.
"""
content = {'text': 'foobar'}
request = factory.post('/', json.dumps(content),
@@ -62,7 +62,7 @@ class TestRootView(TestCase):
def test_put_root_view(self):
"""
- PUT requests to RootAPIView should not be allowed
+ PUT requests to ListCreateAPIView should not be allowed
"""
content = {'text': 'foobar'}
request = factory.put('/', json.dumps(content),
@@ -73,7 +73,7 @@ class TestRootView(TestCase):
def test_delete_root_view(self):
"""
- DELETE requests to RootAPIView should not be allowed
+ DELETE requests to ListCreateAPIView should not be allowed
"""
request = factory.delete('/')
response = self.view(request).render()
@@ -82,7 +82,7 @@ class TestRootView(TestCase):
def test_options_root_view(self):
"""
- OPTIONS requests to RootAPIView should return metadata
+ OPTIONS requests to ListCreateAPIView should return metadata
"""
request = factory.options('/')
response = self.view(request).render()
@@ -133,7 +133,7 @@ class TestInstanceView(TestCase):
def test_get_instance_view(self):
"""
- GET requests to InstanceAPIView should return a single object.
+ GET requests to RetrieveUpdateDestroyAPIView should return a single object.
"""
request = factory.get('/1')
response = self.view(request, pk=1).render()
@@ -142,7 +142,7 @@ class TestInstanceView(TestCase):
def test_post_instance_view(self):
"""
- POST requests to InstanceAPIView should not be allowed
+ POST requests to RetrieveUpdateDestroyAPIView should not be allowed
"""
content = {'text': 'foobar'}
request = factory.post('/', json.dumps(content),
@@ -153,7 +153,7 @@ class TestInstanceView(TestCase):
def test_put_instance_view(self):
"""
- PUT requests to InstanceAPIView should update an object.
+ PUT requests to RetrieveUpdateDestroyAPIView should update an object.
"""
content = {'text': 'foobar'}
request = factory.put('/1', json.dumps(content),
@@ -166,7 +166,7 @@ class TestInstanceView(TestCase):
def test_delete_instance_view(self):
"""
- DELETE requests to InstanceAPIView should delete an object.
+ DELETE requests to RetrieveUpdateDestroyAPIView should delete an object.
"""
request = factory.delete('/1')
response = self.view(request, pk=1).render()
@@ -177,7 +177,7 @@ class TestInstanceView(TestCase):
def test_options_instance_view(self):
"""
- OPTIONS requests to InstanceAPIView should return metadata
+ OPTIONS requests to RetrieveUpdateDestroyAPIView should return metadata
"""
request = factory.options('/')
response = self.view(request).render()
diff --git a/rest_framework/tests/pagination.py b/rest_framework/tests/pagination.py
index 9e424cc5..a939c9ef 100644
--- a/rest_framework/tests/pagination.py
+++ b/rest_framework/tests/pagination.py
@@ -7,7 +7,7 @@ from rest_framework.tests.models import BasicModel
factory = RequestFactory()
-class RootView(generics.RootAPIView):
+class RootView(generics.ListCreateAPIView):
"""
Example description for OPTIONS.
"""
@@ -35,7 +35,7 @@ class IntegrationTestPagination(TestCase):
def test_get_paginated_root_view(self):
"""
- GET requests to paginated RootAPIView should return paginated results.
+ GET requests to paginated ListCreateAPIView should return paginated results.
"""
request = factory.get('/')
response = self.view(request).render()