Merge branch 'floppify-auth-forms' of git://github.com/gregmuellegger/django-admin2 into gregmuellegger-floppify-auth-forms

This commit is contained in:
Daniel Greenfeld 2013-05-23 22:25:16 +02:00
commit dca4d849d7
6 changed files with 88 additions and 11 deletions

View file

@ -109,17 +109,14 @@ _django_to_floppyforms_widget = {
django.forms.widgets.DateInput:
_create_widget(
floppyforms.widgets.DateInput,
('input_type',),
init_arguments=('format',)),
django.forms.widgets.DateTimeInput:
_create_widget(
floppyforms.widgets.DateTimeInput,
('input_type',),
init_arguments=('format',)),
django.forms.widgets.TimeInput:
_create_widget(
floppyforms.widgets.TimeInput,
('input_type',),
init_arguments=('format',)),
django.forms.widgets.CheckboxInput:
_create_widget(floppyforms.widgets.CheckboxInput, ('check_test',)),

View file

@ -6,10 +6,15 @@ from django.contrib.auth.models import Group, User
from rest_framework.relations import PrimaryKeyRelatedField
import djadmin2
from djadmin2.forms import floppify_form
from djadmin2.models import ModelAdmin2, Admin2Inline
from djadmin2.apiviews import Admin2APISerializer
UserCreationForm = floppify_form(UserCreationForm)
UserChangeForm = floppify_form(UserChangeForm)
class GroupSerializer(Admin2APISerializer):
permissions = PrimaryKeyRelatedField(many=True)

View file

@ -1,3 +1,4 @@
from test_auth_admin import *
from test_apiviews import *
from test_builtin_api_resources import *
from test_views import *

View file

@ -19,7 +19,6 @@ class ViewTest(TestCase):
class IndexAPIViewTest(ViewTest):
def test_response_ok(self):
request = self.factory.get(reverse('admin2:api-index'))
view = apiviews.IndexAPIView.as_view(**default.get_api_index_kwargs())
@ -28,7 +27,6 @@ class IndexAPIViewTest(ViewTest):
class ListCreateAPIViewTest(ViewTest):
def test_response_ok(self):
request = self.factory.get(reverse('admin2:blog_post_api-list'))
model_admin = self.get_model_admin(Post)

View file

@ -0,0 +1,59 @@
import floppyforms
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse
from django.test import TestCase
from django.test.client import RequestFactory
import djadmin2
from blog.admin2 import UserAdmin2
class UserAdminTest(TestCase):
def setUp(self):
self.factory = RequestFactory()
self.user = User(
username='admin',
is_staff=True,
is_superuser=True)
self.user.set_password('admin')
self.user.save()
def test_create_form_uses_floppyform_widgets(self):
form = UserAdmin2.create_form_class()
self.assertTrue(
isinstance(form.fields['username'].widget,
floppyforms.TextInput))
request = self.factory.get(reverse('admin2:auth_user_create'))
request.user = self.user
model_admin = UserAdmin2(User, djadmin2.default)
view = model_admin.create_view.as_view(
**model_admin.get_create_kwargs())
response = view(request)
form = response.context_data['form']
self.assertTrue(
isinstance(form.fields['username'].widget,
floppyforms.TextInput))
def test_update_form_uses_floppyform_widgets(self):
form = UserAdmin2.update_form_class()
self.assertTrue(
isinstance(form.fields['username'].widget,
floppyforms.TextInput))
self.assertTrue(
isinstance(form.fields['date_joined'].widget,
floppyforms.DateTimeInput))
request = self.factory.get(
reverse('admin2:auth_user_update', args=(self.user.pk,)))
request.user = self.user
model_admin = UserAdmin2(User, djadmin2.default)
view = model_admin.update_view.as_view(
**model_admin.get_update_kwargs())
response = view(request, pk=self.user.pk)
form = response.context_data['form']
self.assertTrue(
isinstance(form.fields['username'].widget,
floppyforms.TextInput))
self.assertTrue(
isinstance(form.fields['date_joined'].widget,
floppyforms.DateTimeInput))

View file

@ -15,7 +15,7 @@ class ModelFormFactoryTest(TestCase):
class GetFloppyformWidgetTest(TestCase):
def assertExpectWidget(self, instance, new_class_,
equal_attributes=None):
equal_attributes=None, new_attributes=None):
new_instance = floppify_widget(instance)
self.assertEqual(new_instance.__class__, new_class_)
if equal_attributes:
@ -33,6 +33,16 @@ class GetFloppyformWidgetTest(TestCase):
self.assertEqual(old_attr, new_attr,
'Original widget\'s attribute was not copied: %r != %r' %
(old_attr, new_attr))
if new_attributes:
for attribute, value in new_attributes.items():
self.assertTrue(
hasattr(new_instance, attribute),
'Cannot check new attribute %r, not available on '
'generated widget %r' % (attribute, new_instance))
new_attr = getattr(new_instance, attribute)
self.assertEqual(new_attr, value,
'Generated widget\'s attribute is not as expected: '
'%r != %r' % (new_attr, value))
def test_created_widget_doesnt_leak_attributes_into_original_widget(self):
widget = forms.TextInput()
@ -70,12 +80,16 @@ class GetFloppyformWidgetTest(TestCase):
def test_textinput_widget(self):
self.assertExpectWidget(
forms.widgets.TextInput(),
floppyforms.widgets.TextInput)
floppyforms.widgets.TextInput,
['input_type'],
{'input_type': 'text'})
def test_passwordinput_widget(self):
self.assertExpectWidget(
forms.widgets.PasswordInput(),
floppyforms.widgets.PasswordInput)
floppyforms.widgets.PasswordInput,
['input_type'],
{'input_type': 'password'})
def test_hiddeninput_widget(self):
self.assertExpectWidget(
@ -146,7 +160,8 @@ class GetFloppyformWidgetTest(TestCase):
self.assertExpectWidget(
widget,
floppyforms.widgets.DateInput,
['format'])
['format'],
{'input_type': 'date'})
def test_datetimeinput_widget(self):
self.assertExpectWidget(
@ -157,7 +172,8 @@ class GetFloppyformWidgetTest(TestCase):
self.assertExpectWidget(
widget,
floppyforms.widgets.DateTimeInput,
['format'])
['format'],
{'input_type': 'datetime'})
def test_timeinput_widget(self):
self.assertExpectWidget(
@ -168,7 +184,8 @@ class GetFloppyformWidgetTest(TestCase):
self.assertExpectWidget(
widget,
floppyforms.widgets.TimeInput,
['format'])
['format'],
{'input_type': 'time'})
def test_checkboxinput_widget(self):
self.assertExpectWidget(