Changeset 4446
- Timestamp:
- 01/28/07 19:03:55 (1 year ago)
- Files:
-
- django/branches/newforms-admin/django/contrib/admin/options.py (modified) (5 diffs)
- django/branches/newforms-admin/django/contrib/admin/templates/admin/change_form.html (modified) (1 diff)
- django/branches/newforms-admin/django/contrib/admin/views/main.py (modified) (2 diffs)
- django/branches/newforms-admin/django/core/management.py (modified) (2 diffs)
- django/branches/newforms-admin/django/db/models/fields/__init__.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/branches/newforms-admin/django/contrib/admin/options.py
r4444 r4446 34 34 35 35 class AdminForm(object): 36 def __init__(self, form, fieldsets ):36 def __init__(self, form, fieldsets, prepopulated_fields): 37 37 self.form, self.fieldsets = form, fieldsets 38 self.prepopulated_fields = [{'field': form[field_name], 'dependencies': [form[f] for f in dependencies]} for field_name, dependencies in prepopulated_fields.items()] 38 39 39 40 def __iter__(self): … … 110 111 fields = None 111 112 raw_id_fields = () 113 prepopulated_fields = {} 112 114 113 115 def __init__(self, model): … … 146 148 from django.conf import settings 147 149 js = ['js/core.js', 'js/admin/RelatedObjectLookups.js'] 148 # TODO: This. 149 #if auto_populated_fields: 150 #js.append('js/urlify.js') 150 if self.prepopulated_fields: 151 js.append('js/urlify.js') 151 152 if self.opts.has_field_type(models.DateTimeField) or self.opts.has_field_type(models.TimeField) or self.opts.has_field_type(models.DateField): 152 153 js.extend(['js/calendar.js', 'js/admin/DateTimeShortcuts.js']) … … 320 321 c = template.RequestContext(request, { 321 322 'title': _('Add %s') % opts.verbose_name, 322 'adminform': AdminForm(form, self.fieldsets_add(request) ),323 'adminform': AdminForm(form, self.fieldsets_add(request), self.prepopulated_fields), 323 324 'oldform': oldforms.FormWrapper(model.AddManipulator(), {}, {}), 324 325 'is_popup': request.REQUEST.has_key('_popup'), … … 411 412 c = template.RequestContext(request, { 412 413 'title': _('Change %s') % opts.verbose_name, 413 'adminform': AdminForm(form, self.fieldsets_change(request, object_id) ),414 'adminform': AdminForm(form, self.fieldsets_change(request, object_id), self.prepopulated_fields), 414 415 'oldform': oldforms.FormWrapper(model.ChangeManipulator(object_id), {}, {}), 415 416 'object_id': object_id, django/branches/newforms-admin/django/contrib/admin/templates/admin/change_form.html
r4444 r4446 84 84 {% endif %} 85 85 86 {% if auto_populated_fields %} 87 <script type="text/javascript"> 88 {% auto_populated_field_script auto_populated_fields change %} 89 </script> 86 {# JavaScript for prepopulated fields #} 87 88 {% if add %} 89 <script type="text/javascript"> 90 {% for field in adminform.prepopulated_fields %} 91 document.getElementById("{{ field.field.auto_id }}").onchange = function() { this._changed = true; }; 92 {% for dependency in field.dependencies %} 93 document.getElementById("{{ dependency.auto_id }}").onkeyup = function() { 94 var e = document.getElementById("{{ field.field.auto_id }}"); 95 if (!e._changed) { e.value = URLify({% for innerdep in field.dependencies %}document.getElementById("{{ innerdep.auto_id }}").value{% if not forloop.last %} + ' ' + {% endif %}{% endfor %}, {{ field.field.field.max_length }}); } 96 } 97 {% endfor %} 98 {% endfor %} 99 </script> 90 100 {% endif %} 91 101 django/branches/newforms-admin/django/contrib/admin/views/main.py
r4416 r4446 110 110 opts = model._meta 111 111 app_label = opts.app_label 112 auto_populated_fields = [f for f in opts.fields if f.prepopulate_from]113 112 original = getattr(manipulator, 'original_object', None) 114 113 ordered_objects = opts.get_ordered_objects() … … 121 120 'has_file_field': opts.has_field_type(models.FileField), 122 121 'has_absolute_url': hasattr(model, 'get_absolute_url'), 123 'auto_populated_fields': auto_populated_fields,124 122 'ordered_objects': ordered_objects, 125 123 'inline_related_objects': inline_related_objects, django/branches/newforms-admin/django/core/management.py
r4426 r4446 892 892 except ImportError: 893 893 e.add(opts, '"%s": To use ImageFields, you need to install the Python Imaging Library. Get it at http://www.pythonware.com/products/pil/ .' % f.name) 894 if f.prepopulate_from is not None and type(f.prepopulate_from) not in (list, tuple):895 e.add(opts, '"%s": prepopulate_from should be a list or tuple.' % f.name)896 894 if f.choices: 897 895 if not hasattr(f.choices, '__iter__'): … … 980 978 # Check admin attribute. 981 979 if opts.admin is not None: 980 # prepopulated_fields 981 if not isinstance(opts.admin.prepopulated_fields, dict): 982 e.add(opts, '"%s": prepopulated_fields should be a dictionary.' % f.name) 983 else: 984 for field_name, field_list in opts.admin.prepopulated_fields.items(): 985 if not isinstance(field_list, (list, tuple)): 986 e.add(opts, '"%s": prepopulated_fields "%s" value should be a list or tuple.' % (f.name, field_name)) 987 982 988 # list_display 983 989 if not isinstance(opts.admin.list_display, (list, tuple)): django/branches/newforms-admin/django/db/models/fields/__init__.py
r4444 r4446 69 69 maxlength=None, unique=False, blank=False, null=False, db_index=False, 70 70 core=False, rel=None, default=NOT_PROVIDED, editable=True, 71 prepopulate_from=None, unique_for_date=None, unique_for_month=None, 72 unique_for_year=None, validator_list=None, choices=None, radio_admin=None, 73 help_text='', db_column=None): 71 unique_for_date=None, unique_for_month=None, unique_for_year=None, 72 validator_list=None, choices=None, radio_admin=None, help_text='', db_column=None): 74 73 self.name = name 75 74 self.verbose_name = verbose_name … … 80 79 self.editable = editable 81 80 self.validator_list = validator_list or [] 82 self.prepopulate_from = prepopulate_from83 81 self.unique_for_date, self.unique_for_month = unique_for_date, unique_for_month 84 82 self.unique_for_year = unique_for_year
