david / semanticdjango (http://semanticdjango.org/)
fork of django-trunk
The right time for a semantic contrib, that's my pony.
Clone this repository (size: 23.1 MB): HTTPS / SSH
$ hg clone http://code.welldev.org/semanticdjango
| commit 6475: | 97848c412391 |
| parent 6474: | 68ed098c52a6 |
| branch: | default |
Changed "date" column to "start_date"--Oracle won't name columns with reserved keywords.
19 months ago
Changed (Δ159 bytes):
raw changeset »
tests/regressiontests/admin_widgets/models.py (7 lines added, 7 lines removed)
tests/regressiontests/admin_widgets/tests.py (25 lines added, 25 lines removed)
Up to file-list tests/regressiontests/admin_widgets/models.py:
| … | … | @@ -29,24 +29,24 @@ class Album(models.Model): |
29 |
29 |
|
30 |
30 |
class HiddenInventoryManager(models.Manager): |
31 |
31 |
def get_query_set(self): |
32 |
return super(HiddenInventoryManager, self).get_query_set().filter(hidden=False) |
|
32 |
return super(HiddenInventoryManager, self).get_query_set().filter(hidden=False) |
|
33 |
33 |
|
34 |
34 |
class Inventory(models.Model): |
35 |
35 |
barcode = models.PositiveIntegerField(unique=True) |
36 |
36 |
parent = models.ForeignKey('self', to_field='barcode', blank=True, null=True) |
37 |
37 |
name = models.CharField(blank=False, max_length=20) |
38 |
38 |
hidden = models.BooleanField(default=False) |
39 |
||
39 |
||
40 |
40 |
# see #9258 |
41 |
41 |
default_manager = models.Manager() |
42 |
42 |
objects = HiddenInventoryManager() |
43 |
43 |
|
44 |
44 |
def __unicode__(self): |
45 |
45 |
return self.name |
46 |
||
46 |
||
47 |
47 |
class Event(models.Model): |
48 |
48 |
band = models.ForeignKey(Band) |
49 |
|
|
49 |
start_date = models.DateField(blank=True, null=True) |
|
50 |
50 |
start_time = models.TimeField(blank=True, null=True) |
51 |
51 |
description = models.TextField(blank=True) |
52 |
52 |
link = models.URLField(blank=True) |
| … | … | @@ -56,7 +56,7 @@ class Car(models.Model): |
56 |
56 |
owner = models.ForeignKey(User) |
57 |
57 |
make = models.CharField(max_length=30) |
58 |
58 |
model = models.CharField(max_length=30) |
59 |
||
59 |
||
60 |
60 |
def __unicode__(self): |
61 |
61 |
return u"%s %s" % (self.make, self.model) |
62 |
62 |
|
| … | … | @@ -137,9 +137,9 @@ True |
137 |
137 |
<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> |
138 |
138 |
|
139 |
139 |
# see #9258 |
140 |
>>> hidden = Inventory.objects.create(barcode=93, name='Hidden', hidden=True) |
|
140 |
>>> hidden = Inventory.objects.create(barcode=93, name='Hidden', hidden=True) |
|
141 |
141 |
>>> child_of_hidden = Inventory.objects.create(barcode=94, name='Child of hidden', parent=hidden) |
142 |
>>> print w.render('test', child_of_hidden.parent_id, attrs={}) |
|
142 |
>>> print w.render('test', child_of_hidden.parent_id, attrs={}) |
|
143 |
143 |
<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> |
144 |
144 |
""" % { |
145 |
145 |
'ADMIN_MEDIA_PREFIX': settings.ADMIN_MEDIA_PREFIX, |
Up to file-list tests/regressiontests/admin_widgets/tests.py:
| … | … | @@ -19,89 +19,89 @@ class AdminFormfieldForDBFieldTests(Test |
19 |
19 |
class MyModelAdmin(admin.ModelAdmin): pass |
20 |
20 |
for k in admin_overrides: |
21 |
21 |
setattr(MyModelAdmin, k, admin_overrides[k]) |
22 |
||
22 |
||
23 |
23 |
# Construct the admin, and ask it for a formfield |
24 |
24 |
ma = MyModelAdmin(model, admin.site) |
25 |
25 |
ff = ma.formfield_for_dbfield(model._meta.get_field(fieldname), request=None) |
26 |
||
26 |
||
27 |
27 |
# "unwrap" the widget wrapper, if needed |
28 |
28 |
if isinstance(ff.widget, widgets.RelatedFieldWidgetWrapper): |
29 |
29 |
widget = ff.widget.widget |
30 |
30 |
else: |
31 |
31 |
widget = ff.widget |
32 |
||
32 |
||
33 |
33 |
# Check that we got a field of the right type |
34 |
34 |
self.assert_( |
35 |
isinstance(widget, widgetclass), |
|
35 |
isinstance(widget, widgetclass), |
|
36 |
36 |
"Wrong widget for %s.%s: expected %s, got %s" % \ |
37 |
37 |
(model.__class__.__name__, fieldname, widgetclass, type(widget)) |
38 |
38 |
) |
39 |
||
39 |
||
40 |
40 |
# Return the formfield so that other tests can continue |
41 |
41 |
return ff |
42 |
||
42 |
||
43 |
43 |
def testDateField(self): |
44 |
self.assertFormfield(models.Event, 'date', widgets.AdminDateWidget) |
|
45 |
||
44 |
self.assertFormfield(models.Event, 'start_date', widgets.AdminDateWidget) |
|
45 |
||
46 |
46 |
def testDateTimeField(self): |
47 |
47 |
self.assertFormfield(models.Member, 'birthdate', widgets.AdminSplitDateTime) |
48 |
||
48 |
||
49 |
49 |
def testTimeField(self): |
50 |
50 |
self.assertFormfield(models.Event, 'start_time', widgets.AdminTimeWidget) |
51 |
51 |
|
52 |
52 |
def testTextField(self): |
53 |
53 |
self.assertFormfield(models.Event, 'description', widgets.AdminTextareaWidget) |
54 |
||
54 |
||
55 |
55 |
def testURLField(self): |
56 |
56 |
self.assertFormfield(models.Event, 'link', widgets.AdminURLFieldWidget) |
57 |
57 |
|
58 |
58 |
def testIntegerField(self): |
59 |
59 |
self.assertFormfield(models.Event, 'min_age', widgets.AdminIntegerFieldWidget) |
60 |
||
60 |
||
61 |
61 |
def testCharField(self): |
62 |
62 |
self.assertFormfield(models.Member, 'name', widgets.AdminTextInputWidget) |
63 |
||
63 |
||
64 |
64 |
def testFileField(self): |
65 |
65 |
self.assertFormfield(models.Album, 'cover_art', widgets.AdminFileWidget) |
66 |
||
66 |
||
67 |
67 |
def testForeignKey(self): |
68 |
68 |
self.assertFormfield(models.Event, 'band', forms.Select) |
69 |
||
69 |
||
70 |
70 |
def testRawIDForeignKey(self): |
71 |
71 |
self.assertFormfield(models.Event, 'band', widgets.ForeignKeyRawIdWidget, |
72 |
72 |
raw_id_fields=['band']) |
73 |
||
73 |
||
74 |
74 |
def testRadioFieldsForeignKey(self): |
75 |
ff = self.assertFormfield(models.Event, 'band', widgets.AdminRadioSelect, |
|
75 |
ff = self.assertFormfield(models.Event, 'band', widgets.AdminRadioSelect, |
|
76 |
76 |
radio_fields={'band':admin.VERTICAL}) |
77 |
77 |
self.assertEqual(ff.empty_label, None) |
78 |
||
78 |
||
79 |
79 |
def testManyToMany(self): |
80 |
80 |
self.assertFormfield(models.Band, 'members', forms.SelectMultiple) |
81 |
||
81 |
||
82 |
82 |
def testRawIDManyTOMany(self): |
83 |
83 |
self.assertFormfield(models.Band, 'members', widgets.ManyToManyRawIdWidget, |
84 |
84 |
raw_id_fields=['members']) |
85 |
||
85 |
||
86 |
86 |
def testFilteredManyToMany(self): |
87 |
87 |
self.assertFormfield(models.Band, 'members', widgets.FilteredSelectMultiple, |
88 |
88 |
filter_vertical=['members']) |
89 |
||
89 |
||
90 |
90 |
def testFormfieldOverrides(self): |
91 |
self.assertFormfield(models.Event, ' |
|
91 |
self.assertFormfield(models.Event, 'start_date', forms.TextInput, |
|
92 |
92 |
formfield_overrides={'widget': forms.TextInput}) |
93 |
||
93 |
||
94 |
94 |
def testFieldWithChoices(self): |
95 |
95 |
self.assertFormfield(models.Member, 'gender', forms.Select) |
96 |
||
96 |
||
97 |
97 |
def testChoicesWithRadioFields(self): |
98 |
self.assertFormfield(models.Member, 'gender', widgets.AdminRadioSelect, |
|
98 |
self.assertFormfield(models.Member, 'gender', widgets.AdminRadioSelect, |
|
99 |
99 |
radio_fields={'gender':admin.VERTICAL}) |
100 |
100 |
|
101 |
101 |
|
102 |
102 |
class AdminFormfieldForDBFieldWithRequestTests(DjangoTestCase): |
103 |
103 |
fixtures = ["admin-widgets-users.xml"] |
104 |
||
104 |
||
105 |
105 |
def testFilterChoicesByRequestUser(self): |
106 |
106 |
""" |
107 |
107 |
Ensure the user can only see their own cars in the foreign key dropdown. |
