Ticket #5520: 01-admin-saveas.diff

File 01-admin-saveas.diff, 5.8 KB (added by Petr Marhoun <petr.marhoun@…>, 8 years ago)
  • django/contrib/admin/options.py

    === modified file 'django/contrib/admin/options.py'
     
    457457        request.user.message_set.create(message=msg)
    458458        return HttpResponseRedirect(redirect_url)
    459459
    460     def render_change_form(self, model, context, add=False, change=False, form_url=''):
     460    def render_change_form(self, request, context, add=False, change=False):
     461        model = self.model
    461462        opts = model._meta
    462463        app_label = opts.app_label
    463464        ordered_objects = opts.get_ordered_objects()
     
    469470            'has_file_field': True, # FIXME - this should check if form or formsets have a FileField,
    470471            'has_absolute_url': hasattr(model, 'get_absolute_url'),
    471472            'ordered_objects': ordered_objects,
    472             'form_url': form_url,
    473473            'opts': opts,
    474474            'content_type_id': ContentType.objects.get_for_model(model).id,
    475475            'save_on_top': self.save_on_top,
     476            'save_as': self.save_as,
     477            'is_save_as': request.POST.has_key('_saveasnew'),
    476478        }
    477479        context.update(extra_context)
    478480        return render_to_response([
     
    480482            "admin/%s/change_form.html" % app_label,
    481483            "admin/change_form.html"], context_instance=context)
    482484
    483     def add_view(self, request, form_url=''):
     485    def add_view(self, request):
    484486        "The 'add' admin view for this model."
    485487        model = self.model
    486488        opts = model._meta
     
    525527            'media': media,
    526528            'inline_admin_formsets': inline_admin_formsets,
    527529        })
    528         return self.render_change_form(model, c, add=True)
     530        return self.render_change_form(request, c, add=True)
    529531   
    530532    def change_view(self, request, object_id):
    531533        "The 'change' admin view for this model."
     
    547549        if obj is None:
    548550            raise Http404('%s object with primary key %r does not exist.' % (opts.verbose_name, escape(object_id)))
    549551
    550         if request.POST and request.POST.has_key("_saveasnew"):
    551             return self.add_view(request, form_url='../../add/')
     552        if request.POST and request.POST.has_key('_saveasnew'):
     553            return self.add_view(request)
    552554
    553555        ModelForm = self.form_change(request, obj)
    554556        inline_formsets = []
     
    602604            'media': media,
    603605            'inline_admin_formsets': inline_admin_formsets,
    604606        })
    605         return self.render_change_form(model, c, change=True)
     607        return self.render_change_form(request, c, change=True)
    606608
    607609    def changelist_view(self, request):
    608610        "The 'change list' admin view for this model."
  • django/contrib/admin/templates/admin/change_form.html

    === modified file 'django/contrib/admin/templates/admin/change_form.html'
     
    3030  </ul>
    3131{% endif %}{% endif %}
    3232{% endblock %}
    33 <form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.module_name }}_form">{% block form_top %}{% endblock %}
     33<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="." method="post" id="{{ opts.module_name }}_form">{% block form_top %}{% endblock %}
    3434<div>
    3535{% if is_popup %}<input type="hidden" name="_popup" value="1" />{% endif %}
    3636{% if save_on_top %}{% submit_row %}{% endif %}
  • django/contrib/admin/templatetags/admin_modify.py

    === modified file 'django/contrib/admin/templatetags/admin_modify.py'
     
    1818
    1919def submit_row(context):
    2020    opts = context['opts']
     21    add = context['add']
    2122    change = context['change']
    2223    is_popup = context['is_popup']
    23     # TODO: Fix this hack.
    24     # save_as = opts.admin.save_as
    25     save_as = False
     24    save_as = context['save_as']
     25    is_save_as = context['is_save_as']
    2626    return {
    2727        'onclick_attrib': (opts.get_ordered_objects() and change
    2828                            and 'onclick="submitOrderForm();"' or ''),
    2929        'show_delete_link': (not is_popup and context['has_delete_permission']
    3030                              and (change or context['show_delete'])),
    31         'show_save_as_new': not is_popup and change and save_as,
    32         'show_save_and_add_another': not is_popup and (not save_as or context['add']),
    33         'show_save_and_continue': not is_popup and context['has_change_permission'],
    34         'show_save': True
     31        'show_save_as_new': not is_popup and save_as and (is_save_as or change),
     32        'show_save_and_add_another': not is_popup and not is_save_as and (add or not save_as),
     33        'show_save_and_continue': not is_popup and not is_save_as and context['has_change_permission'],
     34        'show_save':  not is_save_as,
    3535    }
    3636submit_row = register.inclusion_tag('admin/submit_line.html', takes_context=True)(submit_row)
    3737
  • django/contrib/admin/views/auth.py

    === modified file 'django/contrib/admin/views/auth.py'
     
    4040        'auto_populated_fields': (),
    4141        'opts': User._meta,
    4242        'username_help_text': User._meta.get_field('username').help_text,
     43        'save_as': False,
     44        'is_save_as': False,
    4345    }, context_instance=template.RequestContext(request))
    4446user_add_stage = staff_member_required(user_add_stage)
    4547
     
    7173        'opts': User._meta,
    7274        'original': user,
    7375        'show_save': True,
     76        'save_as': False,
     77        'is_save_as': False,
    7478    }, context_instance=template.RequestContext(request))
    7579user_change_password = staff_member_required(user_change_password)
Back to Top