| 73 | | }} |
|---|
| | 88 | }, 'HOOK_TESTS': """ |
|---|
| | 89 | >>> from django.db import models |
|---|
| | 90 | >>> from django.contrib.admin.options import BaseModelAdmin |
|---|
| | 91 | |
|---|
| | 92 | Make sure that the formfield_for_dbfield in the BaseModelAdmin hooks the right admin widgets to admin fields. |
|---|
| | 93 | |
|---|
| | 94 | >>> bma = BaseModelAdmin() |
|---|
| | 95 | |
|---|
| | 96 | Check widget for fields that are not hooked, should return normal widget |
|---|
| | 97 | |
|---|
| | 98 | >>> unhooked_fields = [ |
|---|
| | 99 | ... models.AutoField(primary_key=True), |
|---|
| | 100 | ... models.CharField(), |
|---|
| | 101 | ... models.CommaSeparatedIntegerField(), |
|---|
| | 102 | ... models.DecimalField(), |
|---|
| | 103 | ... models.EmailField(), |
|---|
| | 104 | ... models.FilePathField(), |
|---|
| | 105 | ... models.FloatField(), |
|---|
| | 106 | ... models.IntegerField(), |
|---|
| | 107 | ... models.IPAddressField(), |
|---|
| | 108 | ... models.NullBooleanField(), |
|---|
| | 109 | ... models.PhoneNumberField(), |
|---|
| | 110 | ... models.PositiveIntegerField(), |
|---|
| | 111 | ... models.PositiveSmallIntegerField(), |
|---|
| | 112 | ... models.SlugField(), |
|---|
| | 113 | ... models.SmallIntegerField(), |
|---|
| | 114 | ... models.TextField(), |
|---|
| | 115 | ... models.TimeField(), |
|---|
| | 116 | ... models.URLField(), |
|---|
| | 117 | ... models.USStateField(), |
|---|
| | 118 | ... models.XMLField() |
|---|
| | 119 | ... ] |
|---|
| | 120 | |
|---|
| | 121 | >>> for model_field in unhooked_fields: |
|---|
| | 122 | ... field = bma.formfield_for_dbfield(model_field) |
|---|
| | 123 | ... field |
|---|
| | 124 | <django.newforms.fields.CharField object at ...> |
|---|
| | 125 | <django.newforms.fields.CharField object at ...> |
|---|
| | 126 | <django.newforms.fields.DecimalField object at ...> |
|---|
| | 127 | <django.newforms.fields.EmailField object at ...> |
|---|
| | 128 | <django.newforms.fields.CharField object at ...> |
|---|
| | 129 | <django.newforms.fields.FloatField object at ...> |
|---|
| | 130 | <django.newforms.fields.IntegerField object at ...> |
|---|
| | 131 | <django.newforms.fields.IPAddressField object at ...> |
|---|
| | 132 | <django.newforms.fields.NullBooleanField object at ...> |
|---|
| | 133 | <django.contrib.localflavor.us.forms.USPhoneNumberField object at ...> |
|---|
| | 134 | <django.newforms.fields.IntegerField object at ...> |
|---|
| | 135 | <django.newforms.fields.IntegerField object at ...> |
|---|
| | 136 | <django.newforms.fields.CharField object at ...> |
|---|
| | 137 | <django.newforms.fields.IntegerField object at ...> |
|---|
| | 138 | <django.newforms.fields.CharField object at ...> |
|---|
| | 139 | <django.newforms.fields.TimeField object at ...> |
|---|
| | 140 | <django.newforms.fields.URLField object at ...> |
|---|
| | 141 | <django.newforms.fields.CharField object at ...> |
|---|
| | 142 | <django.newforms.fields.CharField object at ...> |
|---|
| | 143 | |
|---|
| | 144 | Check widget for fields that are hooked, should return special admin widgets. |
|---|
| | 145 | |
|---|
| | 146 | >>> field = bma.formfield_for_dbfield(models.DateTimeField()) |
|---|
| | 147 | >>> field.widget |
|---|
| | 148 | <django.contrib.admin.widgets.AdminSplitDateTime object at ...> |
|---|
| | 149 | |
|---|
| | 150 | >>> field = bma.formfield_for_dbfield(models.DateField()) |
|---|
| | 151 | >>> field.widget |
|---|
| | 152 | <django.contrib.admin.widgets.AdminDateWidget object at ...> |
|---|
| | 153 | |
|---|
| | 154 | >>> field = bma.formfield_for_dbfield(models.TimeField()) |
|---|
| | 155 | >>> field.widget |
|---|
| | 156 | <django.contrib.admin.widgets.AdminTimeWidget object at ...> |
|---|
| | 157 | |
|---|
| | 158 | >>> field = bma.formfield_for_dbfield(models.BooleanField()) |
|---|
| | 159 | >>> field.widget |
|---|
| | 160 | <django.contrib.admin.widgets.AdminBooleanSelectWidget object at ...> |
|---|
| | 161 | |
|---|
| | 162 | >>> field = bma.formfield_for_dbfield(models.ImageField()) |
|---|
| | 163 | >>> field.widget |
|---|
| | 164 | <django.contrib.admin.widgets.AdminFileWidget object at ...> |
|---|
| | 165 | |
|---|
| | 166 | >>> field = bma.formfield_for_dbfield(models.FileField()) |
|---|
| | 167 | >>> field.widget |
|---|
| | 168 | <django.contrib.admin.widgets.AdminFileWidget object at ...> |
|---|
| | 169 | |
|---|
| | 170 | Test ForeignKey and ManyToManyField widgets here, use the model defined |
|---|
| | 171 | above to retrieve the ForeignKey field, as to be able to traverse the relation. |
|---|
| | 172 | |
|---|
| | 173 | Make sure that ForeignKey field returns a raw id widget when the field is flagged as such. |
|---|
| | 174 | |
|---|
| | 175 | >>> bma.raw_id_fields = ('band', ) |
|---|
| | 176 | >>> field = bma.formfield_for_dbfield(Album._meta.get_field('band')) |
|---|
| | 177 | >>> field.widget |
|---|
| | 178 | <django.contrib.admin.widgets.ForeignKeyRawIdWidget object at ...> |
|---|
| | 179 | |
|---|
| | 180 | Check to see if normal widget is returned when no raw id is selected. |
|---|
| | 181 | |
|---|
| | 182 | >>> bma.raw_id_fields = () |
|---|
| | 183 | >>> bma.admin_site = 'admin site' |
|---|
| | 184 | >>> field = bma.formfield_for_dbfield(Album._meta.get_field('band')) |
|---|
| | 185 | >>> field.widget |
|---|
| | 186 | <django.newforms.widgets.Select object at ...> |
|---|
| | 187 | |
|---|
| | 188 | Do the same for ManyToManyField. |
|---|
| | 189 | |
|---|
| | 190 | >>> bma.raw_id_fields = ('members',) |
|---|
| | 191 | >>> field = bma.formfield_for_dbfield(Band._meta.get_field('members')) |
|---|
| | 192 | >>> field.widget |
|---|
| | 193 | <django.contrib.admin.widgets.ManyToManyRawIdWidget object at ...> |
|---|
| | 194 | |
|---|
| | 195 | Check for no raw id in. |
|---|
| | 196 | |
|---|
| | 197 | >>> bma.raw_id_fields = () |
|---|
| | 198 | >>> field = bma.formfield_for_dbfield(Band._meta.get_field('members')) |
|---|
| | 199 | >>> field.widget |
|---|
| | 200 | <django.newforms.widgets.SelectMultiple object at ...> |
|---|
| | 201 | |
|---|
| | 202 | >>> bma.filter_horizontal = ('members', ) |
|---|
| | 203 | >>> field = bma.formfield_for_dbfield(Band._meta.get_field('members')) |
|---|
| | 204 | >>> field.widget |
|---|
| | 205 | <django.contrib.admin.widgets.FilteredSelectMultiple object at ...> |
|---|
| | 206 | """} |