summaryrefslogtreecommitdiff
path: root/tests/generic_views
diff options
context:
space:
mode:
authorLuke Plant <L.Plant.98@cantab.net>2013-02-21 21:56:55 +0000
committerLuke Plant <L.Plant.98@cantab.net>2013-05-09 16:44:36 +0100
commitf026a519aea8f3ea7ca339bfbbb007e1ee0068b0 (patch)
tree882e594178a78d507ede36c2c9b0b8d5a9305561 /tests/generic_views
parent1e37cb37cec330a6b78925e2ef5589817428d09a (diff)
Fixed #19733 - deprecated ModelForms without 'fields' or 'exclude', and added '__all__' shortcut
This also updates all dependent functionality, including modelform_factory and modelformset_factory, and the generic views `ModelFormMixin`, `CreateView` and `UpdateView` which gain a new `fields` attribute.
Diffstat (limited to 'tests/generic_views')
-rw-r--r--tests/generic_views/test_edit.py44
-rw-r--r--tests/generic_views/test_forms.py1
-rw-r--r--tests/generic_views/views.py9
3 files changed, 53 insertions, 1 deletions
diff --git a/tests/generic_views/test_edit.py b/tests/generic_views/test_edit.py
index c54d632363..54eab7ffa4 100644
--- a/tests/generic_views/test_edit.py
+++ b/tests/generic_views/test_edit.py
@@ -1,12 +1,14 @@
from __future__ import absolute_import
+import warnings
+
from django.core.exceptions import ImproperlyConfigured
from django.core.urlresolvers import reverse
from django import forms
from django.test import TestCase
from django.utils.unittest import expectedFailure
from django.views.generic.base import View
-from django.views.generic.edit import FormMixin
+from django.views.generic.edit import FormMixin, CreateView, UpdateView
from . import views
from .models import Artist, Author
@@ -34,6 +36,7 @@ class ModelFormMixinTests(TestCase):
form_class = views.AuthorGetQuerySetFormView().get_form_class()
self.assertEqual(form_class._meta.model, Author)
+
class CreateViewTests(TestCase):
urls = 'generic_views.urls'
@@ -112,6 +115,45 @@ class CreateViewTests(TestCase):
self.assertEqual(res.status_code, 302)
self.assertRedirects(res, 'http://testserver/accounts/login/?next=/edit/authors/create/restricted/')
+ def test_create_view_with_restricted_fields(self):
+
+ class MyCreateView(CreateView):
+ model = Author
+ fields = ['name']
+
+ self.assertEqual(list(MyCreateView().get_form_class().base_fields),
+ ['name'])
+
+ def test_create_view_all_fields(self):
+
+ with warnings.catch_warnings(record=True) as w:
+ warnings.simplefilter("always", PendingDeprecationWarning)
+
+ class MyCreateView(CreateView):
+ model = Author
+ fields = '__all__'
+
+ self.assertEqual(list(MyCreateView().get_form_class().base_fields),
+ ['name', 'slug'])
+ self.assertEqual(len(w), 0)
+
+
+ def test_create_view_without_explicit_fields(self):
+
+ with warnings.catch_warnings(record=True) as w:
+ warnings.simplefilter("always", PendingDeprecationWarning)
+
+ class MyCreateView(CreateView):
+ model = Author
+
+ # Until end of the deprecation cycle, should still create the form
+ # as before:
+ self.assertEqual(list(MyCreateView().get_form_class().base_fields),
+ ['name', 'slug'])
+
+ # but with a warning:
+ self.assertEqual(w[0].category, PendingDeprecationWarning)
+
class UpdateViewTests(TestCase):
urls = 'generic_views.urls'
diff --git a/tests/generic_views/test_forms.py b/tests/generic_views/test_forms.py
index e036ad8afc..8c118e32a6 100644
--- a/tests/generic_views/test_forms.py
+++ b/tests/generic_views/test_forms.py
@@ -11,6 +11,7 @@ class AuthorForm(forms.ModelForm):
class Meta:
model = Author
+ fields = ['name', 'slug']
class ContactForm(forms.Form):
diff --git a/tests/generic_views/views.py b/tests/generic_views/views.py
index 69bfcb32dd..aa8777e8c6 100644
--- a/tests/generic_views/views.py
+++ b/tests/generic_views/views.py
@@ -85,15 +85,18 @@ class ContactView(generic.FormView):
class ArtistCreate(generic.CreateView):
model = Artist
+ fields = '__all__'
class NaiveAuthorCreate(generic.CreateView):
queryset = Author.objects.all()
+ fields = '__all__'
class AuthorCreate(generic.CreateView):
model = Author
success_url = '/list/authors/'
+ fields = '__all__'
class SpecializedAuthorCreate(generic.CreateView):
@@ -112,19 +115,23 @@ class AuthorCreateRestricted(AuthorCreate):
class ArtistUpdate(generic.UpdateView):
model = Artist
+ fields = '__all__'
class NaiveAuthorUpdate(generic.UpdateView):
queryset = Author.objects.all()
+ fields = '__all__'
class AuthorUpdate(generic.UpdateView):
model = Author
success_url = '/list/authors/'
+ fields = '__all__'
class OneAuthorUpdate(generic.UpdateView):
success_url = '/list/authors/'
+ fields = '__all__'
def get_object(self):
return Author.objects.get(pk=1)
@@ -184,6 +191,8 @@ class BookDetail(BookConfig, generic.DateDetailView):
pass
class AuthorGetQuerySetFormView(generic.edit.ModelFormMixin):
+ fields = '__all__'
+
def get_queryset(self):
return Author.objects.all()