Django

Code

Changeset 8385

Show
Ignore:
Timestamp:
08/15/08 12:38:39 (4 months ago)
Author:
brosner
Message:

Fixed #957 -- prepopulated_fields now works correctly on inlines.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/contrib/admin/options.py

    r8384 r8385  
    823823        if self.verbose_name_plural is None: 
    824824            self.verbose_name_plural = self.model._meta.verbose_name_plural 
     825     
     826    def _media(self): 
     827        from django.conf import settings 
     828        js = [] 
     829        if self.prepopulated_fields: 
     830            js.append('js/urlify.js') 
     831        return forms.Media(js=['%s%s' % (settings.ADMIN_MEDIA_PREFIX, url) for url in js]) 
     832    media = property(_media) 
    825833 
    826834    def get_formset(self, request, obj=None): 
     
    867875 
    868876    def _media(self): 
    869         media = self.formset.media 
     877        media = self.opts.media + self.formset.media 
    870878        for fs in self: 
    871879            media = media + fs.media 
  • django/trunk/django/contrib/admin/templates/admin/change_form.html

    r7967 r8385  
    5959 
    6060{# JavaScript for prepopulated fields #} 
    61  
    62 {% if add %} 
    63 <script type="text/javascript"> 
    64 {% for field in adminform.prepopulated_fields %} 
    65     document.getElementById("{{ field.field.auto_id }}").onchange = function() { this._changed = true; }; 
    66     {% for dependency in field.dependencies %} 
    67     document.getElementById("{{ dependency.auto_id }}").onkeyup = function() { 
    68         var e = document.getElementById("{{ field.field.auto_id }}"); 
    69         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 }}); } 
    70     } 
    71     {% endfor %} 
    72 {% endfor %} 
    73 </script> 
    74 {% endif %} 
     61{% prepopulated_fields_js %} 
    7562 
    7663</div> 
  • django/trunk/django/contrib/admin/templatetags/admin_modify.py

    r7967 r8385  
    22 
    33register = template.Library() 
     4 
     5def prepopulated_fields_js(context): 
     6    """ 
     7    Creates a list of prepopulated_fields that should render Javascript for 
     8    the prepopulated fields for both the admin form and inlines. 
     9    """ 
     10    prepopulated_fields = [] 
     11    if context["add"]: 
     12        prepopulated_fields.extend(context["adminform"].prepopulated_fields) 
     13    for inline_admin_formset in context['inline_admin_formsets']: 
     14        for inline_admin_form in inline_admin_formset: 
     15            if inline_admin_form.original is None: 
     16                prepopulated_fields.extend(inline_admin_form.prepopulated_fields) 
     17    context.update({"prepopulated_fields": prepopulated_fields}) 
     18    return context 
     19prepopulated_fields_js = register.inclusion_tag('admin/prepopulated_fields_js.html', takes_context=True)(prepopulated_fields_js) 
    420 
    521def submit_row(context):