From a19ed8aea395e8e07164ff7d85bd7dff2f24edca Mon Sep 17 00:00:00 2001 From: Brian Rosner Date: Fri, 18 Jul 2008 23:54:34 +0000 Subject: Merged the newforms-admin branch into trunk. This is a backward incompatible change. The admin contrib app has been refactored. The newforms module has several improvements including FormSets and Media definitions. git-svn-id: http://code.djangoproject.com/svn/django/trunk@7967 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- tests/regressiontests/admin_widgets/__init__.py | 0 tests/regressiontests/admin_widgets/models.py | 85 +++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 tests/regressiontests/admin_widgets/__init__.py create mode 100644 tests/regressiontests/admin_widgets/models.py (limited to 'tests/regressiontests/admin_widgets') diff --git a/tests/regressiontests/admin_widgets/__init__.py b/tests/regressiontests/admin_widgets/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/regressiontests/admin_widgets/models.py b/tests/regressiontests/admin_widgets/models.py new file mode 100644 index 0000000000..584d973c83 --- /dev/null +++ b/tests/regressiontests/admin_widgets/models.py @@ -0,0 +1,85 @@ + +from django.conf import settings +from django.db import models + +class Member(models.Model): + name = models.CharField(max_length=100) + + def __unicode__(self): + return self.name + +class Band(models.Model): + name = models.CharField(max_length=100) + members = models.ManyToManyField(Member) + + def __unicode__(self): + return self.name + +class Album(models.Model): + band = models.ForeignKey(Band) + name = models.CharField(max_length=100) + + def __unicode__(self): + return self.name + +__test__ = {'WIDGETS_TESTS': """ +>>> from datetime import datetime +>>> from django.utils.html import escape, conditional_escape +>>> from django.contrib.admin.widgets import FilteredSelectMultiple, AdminSplitDateTime +>>> from django.contrib.admin.widgets import AdminFileWidget, ForeignKeyRawIdWidget, ManyToManyRawIdWidget +>>> from django.contrib.admin.widgets import RelatedFieldWidgetWrapper + +Calling conditional_escape on the output of widget.render will simulate what +happens in the template. This is easier than setting up a template and context +for each test. + +Make sure that the Admin widgets render properly, that is, without their extra +HTML escaped. + +>>> w = FilteredSelectMultiple('test', False) +>>> print conditional_escape(w.render('test', 'test')) + + + +>>> w = AdminSplitDateTime() +>>> print conditional_escape(w.render('test', datetime(2007, 12, 1, 9, 30))) +

Date:
Time:

+ +>>> w = AdminFileWidget() +>>> print conditional_escape(w.render('test', 'test')) +Currently: test
Change: + +>>> band = Band.objects.create(pk=1, name='Linkin Park') +>>> album = band.album_set.create(name='Hybrid Theory') + +>>> rel = Album._meta.get_field('band').rel +>>> w = ForeignKeyRawIdWidget(rel) +>>> print conditional_escape(w.render('test', band.pk, attrs={})) + Lookup Linkin Park + +>>> m1 = Member.objects.create(pk=1, name='Chester') +>>> m2 = Member.objects.create(pk=2, name='Mike') +>>> band.members.add(m1, m2) + +>>> rel = Band._meta.get_field('members').rel +>>> w = ManyToManyRawIdWidget(rel) +>>> print conditional_escape(w.render('test', [m1.pk, m2.pk], attrs={})) + Lookup +>>> w._has_changed(None, None) +False +>>> w._has_changed([], None) +False +>>> w._has_changed(None, [u'1']) +True +>>> w._has_changed([1, 2], [u'1', u'2']) +False +>>> w._has_changed([1, 2], [u'1']) +True +>>> w._has_changed([1, 2], [u'1', u'3']) +True + +""" % { + 'ADMIN_MEDIA_PREFIX': settings.ADMIN_MEDIA_PREFIX, + 'MEDIA_URL': settings.MEDIA_URL, +}} -- cgit v1.3