Code

Ticket #1125: admin_stages_extra_context.patch

File admin_stages_extra_context.patch, 3.0 KB (added by plisk, 8 years ago)
  • django/contrib/admin/views/main.py

     
    230233            lookup_params.update(opts.one_to_one_field.rel.limit_choices_to) 
    231234        self.lookup_params = lookup_params 
    232235 
    233 def change_list(request, app_label, module_name): 
     236def change_list(request, app_label, module_name, extra_context={}): 
    234237    try: 
    235238        cl = ChangeList(request, app_label, module_name) 
    236239    except IncorrectLookupParameters: 
     
    242245        'cl' : cl 
    243246    }) 
    244247    c.update({'has_add_permission': c['perms'][app_label][cl.opts.get_add_permission()]}), 
     248    for key, value in extra_context.items(): 
     249        if callable(value): 
     250            c[key] = value() 
     251        else: 
     252            c[key] = value 
     253             
    245254    return render_to_response(['admin/%s/%s/change_list' % (app_label, cl.opts.object_name.lower()), 
    246255                               'admin/%s/change_list' % app_label, 
    247256                               'admin/change_list'], context_instance=c) 
     
    392401    pk_value = getattr(new_object, opts.pk.attname) 
    393402    log.log_action(user.id, opts.get_content_type_id(), pk_value, str(new_object), log.ADDITION) 
    394403 
    395 def add_stage(request, app_label, module_name, show_delete=False, form_url='', post_url='../', post_url_continue='../%s/', object_id_override=None): 
     404def add_stage(request, app_label, module_name, show_delete=False, form_url='', post_url='../',  
     405        post_url_continue='../%s/', object_id_override=None, extra_context={}): 
    396406    mod, opts = _get_mod_opts(app_label, module_name) 
    397407    if not request.user.has_perm(app_label + '.' + opts.get_add_permission()): 
    398408        raise PermissionDenied 
     
    445455    }) 
    446456    if object_id_override is not None: 
    447457        c['object_id'] = object_id_override 
     458    for key, value in extra_context.items(): 
     459        if callable(value): 
     460            c[key] = value() 
     461        else: 
     462            c[key] = value 
    448463 
    449464    return render_change_form(opts, manipulator, app_label, c, add=True) 
    450465add_stage = staff_member_required(add_stage) 
     
    464479        change_message = _('No fields changed.') 
    465480    log.log_action(user.id, opts.get_content_type_id(), pk_value, str(new_object), log.CHANGE, change_message) 
    466481 
    467 def change_stage(request, app_label, module_name, object_id): 
     482def change_stage(request, app_label, module_name, object_id, extra_context={}): 
    468483    mod, opts = _get_mod_opts(app_label, module_name) 
    469484    if not request.user.has_perm(app_label + '.' + opts.get_change_permission()): 
    470485        raise PermissionDenied 
     
    539554        'original': manipulator.original_object, 
    540555        'is_popup' : request.REQUEST.has_key('_popup') 
    541556    }) 
     557    for key, value in extra_context.items(): 
     558        if callable(value): 
     559            c[key] = value() 
     560        else: 
     561            c[key] = value 
    542562 
    543563    return render_change_form(opts,manipulator, app_label, c, change=True) 
    544564