diff options
Diffstat (limited to 'parts/django/tests/regressiontests/admin_widgets')
6 files changed, 0 insertions, 464 deletions
diff --git a/parts/django/tests/regressiontests/admin_widgets/__init__.py b/parts/django/tests/regressiontests/admin_widgets/__init__.py deleted file mode 100644 index e69de29..0000000 --- a/parts/django/tests/regressiontests/admin_widgets/__init__.py +++ /dev/null diff --git a/parts/django/tests/regressiontests/admin_widgets/fixtures/admin-widgets-users.xml b/parts/django/tests/regressiontests/admin_widgets/fixtures/admin-widgets-users.xml deleted file mode 100644 index b851562..0000000 --- a/parts/django/tests/regressiontests/admin_widgets/fixtures/admin-widgets-users.xml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<django-objects version="1.0"> - <object pk="100" model="auth.user"> - <field type="CharField" name="username">super</field> - <field type="CharField" name="first_name">Super</field> - <field type="CharField" name="last_name">User</field> - <field type="CharField" name="email">super@example.com</field> - <field type="CharField" name="password">sha1$995a3$6011485ea3834267d719b4c801409b8b1ddd0158</field> - <field type="BooleanField" name="is_staff">True</field> - <field type="BooleanField" name="is_active">True</field> - <field type="BooleanField" name="is_superuser">True</field> - <field type="DateTimeField" name="last_login">2007-05-30 13:20:10</field> - <field type="DateTimeField" name="date_joined">2007-05-30 13:20:10</field> - <field to="auth.group" name="groups" rel="ManyToManyRel"></field> - <field to="auth.permission" name="user_permissions" rel="ManyToManyRel"></field> - </object> - <object pk="101" model="auth.user"> - <field type="CharField" name="username">testser</field> - <field type="CharField" name="first_name">Add</field> - <field type="CharField" name="last_name">User</field> - <field type="CharField" name="email">auser@example.com</field> - <field type="CharField" name="password">sha1$995a3$6011485ea3834267d719b4c801409b8b1ddd0158</field> - <field type="BooleanField" name="is_staff">True</field> - <field type="BooleanField" name="is_active">True</field> - <field type="BooleanField" name="is_superuser">False</field> - <field type="DateTimeField" name="last_login">2007-05-30 13:20:10</field> - <field type="DateTimeField" name="date_joined">2007-05-30 13:20:10</field> - <field to="auth.group" name="groups" rel="ManyToManyRel"></field> - <field to="auth.permission" name="user_permissions" rel="ManyToManyRel"></field> - </object> - - <object pk="1" model="admin_widgets.car"> - <field to="auth.user" name="owner" rel="ManyToOneRel">100</field> - <field type="CharField" name="make">Volkswagon</field> - <field type="CharField" name="model">Passat</field> - </object> - <object pk="2" model="admin_widgets.car"> - <field to="auth.user" name="owner" rel="ManyToOneRel">101</field> - <field type="CharField" name="make">BMW</field> - <field type="CharField" name="model">M3</field> - </object> - -</django-objects>
\ No newline at end of file diff --git a/parts/django/tests/regressiontests/admin_widgets/models.py b/parts/django/tests/regressiontests/admin_widgets/models.py deleted file mode 100644 index 450c3e6..0000000 --- a/parts/django/tests/regressiontests/admin_widgets/models.py +++ /dev/null @@ -1,68 +0,0 @@ -from django.db import models -from django.contrib.auth.models import User - -class MyFileField(models.FileField): - pass - -class Member(models.Model): - name = models.CharField(max_length=100) - birthdate = models.DateTimeField(blank=True, null=True) - gender = models.CharField(max_length=1, blank=True, choices=[('M','Male'), ('F', 'Female')]) - - 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) - cover_art = models.FileField(upload_to='albums') - backside_art = MyFileField(upload_to='albums_back', null=True) - - def __unicode__(self): - return self.name - -class HiddenInventoryManager(models.Manager): - def get_query_set(self): - return super(HiddenInventoryManager, self).get_query_set().filter(hidden=False) - -class Inventory(models.Model): - barcode = models.PositiveIntegerField(unique=True) - parent = models.ForeignKey('self', to_field='barcode', blank=True, null=True) - name = models.CharField(blank=False, max_length=20) - hidden = models.BooleanField(default=False) - - # see #9258 - default_manager = models.Manager() - objects = HiddenInventoryManager() - - def __unicode__(self): - return self.name - -class Event(models.Model): - band = models.ForeignKey(Band, limit_choices_to=models.Q(pk__gt=0)) - start_date = models.DateField(blank=True, null=True) - start_time = models.TimeField(blank=True, null=True) - description = models.TextField(blank=True) - link = models.URLField(blank=True) - min_age = models.IntegerField(blank=True, null=True) - -class Car(models.Model): - owner = models.ForeignKey(User) - make = models.CharField(max_length=30) - model = models.CharField(max_length=30) - - def __unicode__(self): - return u"%s %s" % (self.make, self.model) - -class CarTire(models.Model): - """ - A single car tire. This to test that a user can only select their own cars. - """ - car = models.ForeignKey(Car) diff --git a/parts/django/tests/regressiontests/admin_widgets/tests.py b/parts/django/tests/regressiontests/admin_widgets/tests.py deleted file mode 100644 index 51d883f..0000000 --- a/parts/django/tests/regressiontests/admin_widgets/tests.py +++ /dev/null @@ -1,316 +0,0 @@ -# encoding: utf-8 - -from datetime import datetime -from unittest import TestCase - -from django import forms -from django.conf import settings -from django.contrib import admin -from django.contrib.admin import widgets -from django.contrib.admin.widgets import FilteredSelectMultiple, AdminSplitDateTime -from django.contrib.admin.widgets import (AdminFileWidget, ForeignKeyRawIdWidget, - ManyToManyRawIdWidget) -from django.core.files.storage import default_storage -from django.core.files.uploadedfile import SimpleUploadedFile -from django.db.models import DateField -from django.test import TestCase as DjangoTestCase -from django.utils.html import conditional_escape -from django.utils.translation import activate, deactivate - -import models - - -class AdminFormfieldForDBFieldTests(TestCase): - """ - Tests for correct behavior of ModelAdmin.formfield_for_dbfield - """ - - def assertFormfield(self, model, fieldname, widgetclass, **admin_overrides): - """ - Helper to call formfield_for_dbfield for a given model and field name - and verify that the returned formfield is appropriate. - """ - # Override any settings on the model admin - class MyModelAdmin(admin.ModelAdmin): pass - for k in admin_overrides: - setattr(MyModelAdmin, k, admin_overrides[k]) - - # Construct the admin, and ask it for a formfield - ma = MyModelAdmin(model, admin.site) - ff = ma.formfield_for_dbfield(model._meta.get_field(fieldname), request=None) - - # "unwrap" the widget wrapper, if needed - if isinstance(ff.widget, widgets.RelatedFieldWidgetWrapper): - widget = ff.widget.widget - else: - widget = ff.widget - - # Check that we got a field of the right type - self.assert_( - isinstance(widget, widgetclass), - "Wrong widget for %s.%s: expected %s, got %s" % \ - (model.__class__.__name__, fieldname, widgetclass, type(widget)) - ) - - # Return the formfield so that other tests can continue - return ff - - def testDateField(self): - self.assertFormfield(models.Event, 'start_date', widgets.AdminDateWidget) - - def testDateTimeField(self): - self.assertFormfield(models.Member, 'birthdate', widgets.AdminSplitDateTime) - - def testTimeField(self): - self.assertFormfield(models.Event, 'start_time', widgets.AdminTimeWidget) - - def testTextField(self): - self.assertFormfield(models.Event, 'description', widgets.AdminTextareaWidget) - - def testURLField(self): - self.assertFormfield(models.Event, 'link', widgets.AdminURLFieldWidget) - - def testIntegerField(self): - self.assertFormfield(models.Event, 'min_age', widgets.AdminIntegerFieldWidget) - - def testCharField(self): - self.assertFormfield(models.Member, 'name', widgets.AdminTextInputWidget) - - def testFileField(self): - self.assertFormfield(models.Album, 'cover_art', widgets.AdminFileWidget) - - def testForeignKey(self): - self.assertFormfield(models.Event, 'band', forms.Select) - - def testRawIDForeignKey(self): - self.assertFormfield(models.Event, 'band', widgets.ForeignKeyRawIdWidget, - raw_id_fields=['band']) - - def testRadioFieldsForeignKey(self): - ff = self.assertFormfield(models.Event, 'band', widgets.AdminRadioSelect, - radio_fields={'band':admin.VERTICAL}) - self.assertEqual(ff.empty_label, None) - - def testManyToMany(self): - self.assertFormfield(models.Band, 'members', forms.SelectMultiple) - - def testRawIDManyTOMany(self): - self.assertFormfield(models.Band, 'members', widgets.ManyToManyRawIdWidget, - raw_id_fields=['members']) - - def testFilteredManyToMany(self): - self.assertFormfield(models.Band, 'members', widgets.FilteredSelectMultiple, - filter_vertical=['members']) - - def testFormfieldOverrides(self): - self.assertFormfield(models.Event, 'start_date', forms.TextInput, - formfield_overrides={DateField: {'widget': forms.TextInput}}) - - def testFieldWithChoices(self): - self.assertFormfield(models.Member, 'gender', forms.Select) - - def testChoicesWithRadioFields(self): - self.assertFormfield(models.Member, 'gender', widgets.AdminRadioSelect, - radio_fields={'gender':admin.VERTICAL}) - - def testInheritance(self): - self.assertFormfield(models.Album, 'backside_art', widgets.AdminFileWidget) - - -class AdminFormfieldForDBFieldWithRequestTests(DjangoTestCase): - fixtures = ["admin-widgets-users.xml"] - - def testFilterChoicesByRequestUser(self): - """ - Ensure the user can only see their own cars in the foreign key dropdown. - """ - self.client.login(username="super", password="secret") - response = self.client.get("/widget_admin/admin_widgets/cartire/add/") - self.assert_("BMW M3" not in response.content) - self.assert_("Volkswagon Passat" in response.content) - - -class AdminForeignKeyWidgetChangeList(DjangoTestCase): - fixtures = ["admin-widgets-users.xml"] - admin_root = '/widget_admin' - - def setUp(self): - self.client.login(username="super", password="secret") - - def tearDown(self): - self.client.logout() - - def test_changelist_foreignkey(self): - response = self.client.get('%s/admin_widgets/car/' % self.admin_root) - self.assertTrue('%s/auth/user/add/' % self.admin_root in response.content) - - -class AdminForeignKeyRawIdWidget(DjangoTestCase): - fixtures = ["admin-widgets-users.xml"] - admin_root = '/widget_admin' - - def setUp(self): - self.client.login(username="super", password="secret") - - def tearDown(self): - self.client.logout() - - def test_nonexistent_target_id(self): - band = models.Band.objects.create(name='Bogey Blues') - pk = band.pk - band.delete() - post_data = { - "band": u'%s' % pk, - } - # Try posting with a non-existent pk in a raw id field: this - # should result in an error message, not a server exception. - response = self.client.post('%s/admin_widgets/event/add/' % self.admin_root, - post_data) - self.assertContains(response, - 'Select a valid choice. That choice is not one of the available choices.') - - def test_invalid_target_id(self): - - for test_str in ('Iñtërnâtiônàlizætiøn', "1234'", -1234): - # This should result in an error message, not a server exception. - response = self.client.post('%s/admin_widgets/event/add/' % self.admin_root, - {"band": test_str}) - - self.assertContains(response, - 'Select a valid choice. That choice is not one of the available choices.') - - -class FilteredSelectMultipleWidgetTest(TestCase): - def test_render(self): - w = FilteredSelectMultiple('test', False) - self.assertEqual( - conditional_escape(w.render('test', 'test')), - '<select multiple="multiple" name="test" class="selectfilter">\n</select><script type="text/javascript">addEvent(window, "load", function(e) {SelectFilter.init("id_test", "test", 0, "%(ADMIN_MEDIA_PREFIX)s"); });</script>\n' % {"ADMIN_MEDIA_PREFIX": settings.ADMIN_MEDIA_PREFIX} - ) - - def test_stacked_render(self): - w = FilteredSelectMultiple('test', True) - self.assertEqual( - conditional_escape(w.render('test', 'test')), - '<select multiple="multiple" name="test" class="selectfilterstacked">\n</select><script type="text/javascript">addEvent(window, "load", function(e) {SelectFilter.init("id_test", "test", 1, "%(ADMIN_MEDIA_PREFIX)s"); });</script>\n' % {"ADMIN_MEDIA_PREFIX": settings.ADMIN_MEDIA_PREFIX} - ) - - -class AdminSplitDateTimeWidgetTest(TestCase): - def test_render(self): - w = AdminSplitDateTime() - self.assertEqual( - conditional_escape(w.render('test', datetime(2007, 12, 1, 9, 30))), - '<p class="datetime">Date: <input value="2007-12-01" type="text" class="vDateField" name="test_0" size="10" /><br />Time: <input value="09:30:00" type="text" class="vTimeField" name="test_1" size="8" /></p>', - ) - - def test_localization(self): - w = AdminSplitDateTime() - - activate('de-at') - old_USE_L10N = settings.USE_L10N - settings.USE_L10N = True - w.is_localized = True - self.assertEqual( - conditional_escape(w.render('test', datetime(2007, 12, 1, 9, 30))), - '<p class="datetime">Datum: <input value="01.12.2007" type="text" class="vDateField" name="test_0" size="10" /><br />Zeit: <input value="09:30:00" type="text" class="vTimeField" name="test_1" size="8" /></p>', - ) - deactivate() - settings.USE_L10N = old_USE_L10N - - -class AdminFileWidgetTest(DjangoTestCase): - def test_render(self): - band = models.Band.objects.create(name='Linkin Park') - album = band.album_set.create( - name='Hybrid Theory', cover_art=r'albums\hybrid_theory.jpg' - ) - - w = AdminFileWidget() - self.assertEqual( - conditional_escape(w.render('test', album.cover_art)), - 'Currently: <a target="_blank" href="%(STORAGE_URL)salbums/hybrid_theory.jpg">albums\hybrid_theory.jpg</a> <br />Change: <input type="file" name="test" />' % {'STORAGE_URL': default_storage.url('')}, - ) - - self.assertEqual( - conditional_escape(w.render('test', SimpleUploadedFile('test', 'content'))), - '<input type="file" name="test" />', - ) - - -class ForeignKeyRawIdWidgetTest(DjangoTestCase): - def test_render(self): - band = models.Band.objects.create(name='Linkin Park') - band.album_set.create( - name='Hybrid Theory', cover_art=r'albums\hybrid_theory.jpg' - ) - rel = models.Album._meta.get_field('band').rel - - w = ForeignKeyRawIdWidget(rel) - self.assertEqual( - conditional_escape(w.render('test', band.pk, attrs={})), - '<input type="text" name="test" value="%(bandpk)s" class="vForeignKeyRawIdAdminField" /><a href="../../../admin_widgets/band/?t=id" class="related-lookup" id="lookup_id_test" onclick="return showRelatedObjectLookupPopup(this);"> <img src="%(ADMIN_MEDIA_PREFIX)simg/admin/selector-search.gif" width="16" height="16" alt="Lookup" /></a> <strong>Linkin Park</strong>' % {"ADMIN_MEDIA_PREFIX": settings.ADMIN_MEDIA_PREFIX, "bandpk": band.pk}, - ) - - def test_relations_to_non_primary_key(self): - # Check that ForeignKeyRawIdWidget works with fields which aren't - # related to the model's primary key. - apple = models.Inventory.objects.create(barcode=86, name='Apple') - models.Inventory.objects.create(barcode=22, name='Pear') - core = models.Inventory.objects.create( - barcode=87, name='Core', parent=apple - ) - rel = models.Inventory._meta.get_field('parent').rel - w = ForeignKeyRawIdWidget(rel) - self.assertEqual( - w.render('test', core.parent_id, attrs={}), - '<input type="text" name="test" value="86" class="vForeignKeyRawIdAdminField" /><a href="../../../admin_widgets/inventory/?t=barcode" class="related-lookup" id="lookup_id_test" onclick="return showRelatedObjectLookupPopup(this);"> <img src="%(ADMIN_MEDIA_PREFIX)simg/admin/selector-search.gif" width="16" height="16" alt="Lookup" /></a> <strong>Apple</strong>' % {"ADMIN_MEDIA_PREFIX": settings.ADMIN_MEDIA_PREFIX}, - ) - - - def test_proper_manager_for_label_lookup(self): - # see #9258 - rel = models.Inventory._meta.get_field('parent').rel - w = ForeignKeyRawIdWidget(rel) - - hidden = models.Inventory.objects.create( - barcode=93, name='Hidden', hidden=True - ) - child_of_hidden = models.Inventory.objects.create( - barcode=94, name='Child of hidden', parent=hidden - ) - self.assertEqual( - w.render('test', child_of_hidden.parent_id, attrs={}), - '<input type="text" name="test" value="93" class="vForeignKeyRawIdAdminField" /><a href="../../../admin_widgets/inventory/?t=barcode" class="related-lookup" id="lookup_id_test" onclick="return showRelatedObjectLookupPopup(this);"> <img src="%(ADMIN_MEDIA_PREFIX)simg/admin/selector-search.gif" width="16" height="16" alt="Lookup" /></a> <strong>Hidden</strong>' % {"ADMIN_MEDIA_PREFIX": settings.ADMIN_MEDIA_PREFIX}, - ) - - -class ManyToManyRawIdWidgetTest(DjangoTestCase): - def test_render(self): - band = models.Band.objects.create(name='Linkin Park') - band.album_set.create( - name='Hybrid Theory', cover_art=r'albums\hybrid_theory.jpg' - ) - - m1 = models.Member.objects.create(name='Chester') - m2 = models.Member.objects.create(name='Mike') - band.members.add(m1, m2) - rel = models.Band._meta.get_field('members').rel - - w = ManyToManyRawIdWidget(rel) - self.assertEqual( - conditional_escape(w.render('test', [m1.pk, m2.pk], attrs={})), - '<input type="text" name="test" value="%(m1pk)s,%(m2pk)s" class="vManyToManyRawIdAdminField" /><a href="../../../admin_widgets/member/" class="related-lookup" id="lookup_id_test" onclick="return showRelatedObjectLookupPopup(this);"> <img src="%(ADMIN_MEDIA_PREFIX)simg/admin/selector-search.gif" width="16" height="16" alt="Lookup" /></a>' % {"ADMIN_MEDIA_PREFIX": settings.ADMIN_MEDIA_PREFIX, "m1pk": m1.pk, "m2pk": m2.pk}, - ) - - self.assertEqual( - conditional_escape(w.render('test', [m1.pk])), - '<input type="text" name="test" value="%(m1pk)s" class="vManyToManyRawIdAdminField" /><a href="../../../admin_widgets/member/" class="related-lookup" id="lookup_id_test" onclick="return showRelatedObjectLookupPopup(this);"> <img src="%(ADMIN_MEDIA_PREFIX)simg/admin/selector-search.gif" width="16" height="16" alt="Lookup" /></a>' % {"ADMIN_MEDIA_PREFIX": settings.ADMIN_MEDIA_PREFIX, "m1pk": m1.pk}, - ) - - self.assertEqual(w._has_changed(None, None), False) - self.assertEqual(w._has_changed([], None), False) - self.assertEqual(w._has_changed(None, [u'1']), True) - self.assertEqual(w._has_changed([1, 2], [u'1', u'2']), False) - self.assertEqual(w._has_changed([1, 2], [u'1']), True) - self.assertEqual(w._has_changed([1, 2], [u'1', u'3']), True) diff --git a/parts/django/tests/regressiontests/admin_widgets/urls.py b/parts/django/tests/regressiontests/admin_widgets/urls.py deleted file mode 100644 index af73d53..0000000 --- a/parts/django/tests/regressiontests/admin_widgets/urls.py +++ /dev/null @@ -1,7 +0,0 @@ - -from django.conf.urls.defaults import * -import widgetadmin - -urlpatterns = patterns('', - (r'^', include(widgetadmin.site.urls)), -) diff --git a/parts/django/tests/regressiontests/admin_widgets/widgetadmin.py b/parts/django/tests/regressiontests/admin_widgets/widgetadmin.py deleted file mode 100644 index 6f15d92..0000000 --- a/parts/django/tests/regressiontests/admin_widgets/widgetadmin.py +++ /dev/null @@ -1,30 +0,0 @@ -""" - -""" -from django.contrib import admin - -import models - -class WidgetAdmin(admin.AdminSite): - pass - -class CarAdmin(admin.ModelAdmin): - list_display = ['make', 'model', 'owner'] - list_editable = ['owner'] - -class CarTireAdmin(admin.ModelAdmin): - def formfield_for_foreignkey(self, db_field, request, **kwargs): - if db_field.name == "car": - kwargs["queryset"] = models.Car.objects.filter(owner=request.user) - return db_field.formfield(**kwargs) - return super(CarTireAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) - -class EventAdmin(admin.ModelAdmin): - raw_id_fields = ['band'] - -site = WidgetAdmin(name='widget-admin') - -site.register(models.User) -site.register(models.Car, CarAdmin) -site.register(models.CarTire, CarTireAdmin) -site.register(models.Event, EventAdmin) |