Ticket #5520: 00-admin-saveas.diff

File 00-admin-saveas.diff, 5.7 KB (added by Petr Marhoun <petr.marhoun@…>, 7 years ago)

This version fixes permission for save as and remove context parameter show_delete which is not necessary for this functionality

  • django/contrib/admin/options.py

    === modified file 'django/contrib/admin/options.py'
     
    452452            request.user.message_set.create(message=msg)
    453453            return HttpResponseRedirect("../")
    454454
    455     def render_change_form(self, request, model, context, add=False, change=False, form_url='', obj=None):
     455    def render_change_form(self, request, model, context, add=False, change=False, obj=None):
    456456        opts = model._meta
    457457        app_label = opts.app_label
    458458        ordered_objects = opts.get_ordered_objects()
     
    465465            'has_file_field': True, # FIXME - this should check if form or formsets have a FileField,
    466466            'has_absolute_url': hasattr(model, 'get_absolute_url'),
    467467            'ordered_objects': ordered_objects,
    468             'form_url': mark_safe(form_url),
    469468            'opts': opts,
    470469            'content_type_id': ContentType.objects.get_for_model(model).id,
    471470            'save_on_top': self.save_on_top,
     471            'save_as': self.save_as,
     472            'is_save_as': request.POST.has_key('_saveasnew'),
    472473        }
    473474        context.update(extra_context)
    474475        return render_to_response([
     
    476477            "admin/%s/change_form.html" % app_label,
    477478            "admin/change_form.html"], context_instance=context)
    478479
    479     def add_view(self, request, form_url=''):
     480    def add_view(self, request):
    480481        "The 'add' admin view for this model."
    481482        model = self.model
    482483        opts = model._meta
     
    523524            'title': _('Add %s') % opts.verbose_name,
    524525            'adminform': adminForm,
    525526            'is_popup': request.REQUEST.has_key('_popup'),
    526             'show_delete': False,
    527527            'media': mark_safe(media),
    528528            'inline_admin_formsets': inline_admin_formsets,
    529529        })
     
    549549        if obj is None:
    550550            raise Http404('%s object with primary key %r does not exist.' % (opts.verbose_name, escape(object_id)))
    551551
    552         if request.POST and request.POST.has_key("_saveasnew"):
    553             return self.add_view(request, form_url='../../add/')
     552        if request.POST and request.POST.has_key('_saveasnew'):
     553            return self.add_view(request)
    554554
    555555        ModelForm = self.form_change(request, obj)
    556556        inline_formsets = []
  • 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 ''),
    29         'show_delete_link': (not is_popup and context['has_delete_permission']
    30                               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': context['has_add_permission'] and
    33                             not is_popup and (not save_as or context['add']),
    34         'show_save_and_continue': not is_popup and context['has_change_permission'],
    35         'show_save': True
     29        'show_delete_link': change and context['has_delete_permission'] and not is_popup and not is_save_as,
     30        'show_save_as_new': save_as and (is_save_as or change) and context['has_add_permission'] and not is_popup,
     31        'show_save_and_add_another': (add or not save_as) and context['has_add_permission'] and not is_popup and not is_save_as,
     32        'show_save_and_continue': context['has_change_permission'] and not is_popup and not is_save_as,
     33        'show_save': not is_save_as,
    3634    }
    3735submit_row = register.inclusion_tag('admin/submit_line.html', takes_context=True)(submit_row)
    3836
  • django/contrib/auth/admin.py

    === modified file 'django/contrib/auth/admin.py'
     
    5757            'auto_populated_fields': (),
    5858            'opts': User._meta,
    5959            'username_help_text': User._meta.get_field('username').help_text,
     60            'save_as': False,
     61            'is_save_as': False,
    6062        }, context_instance=template.RequestContext(request))
    6163
    6264admin.site.register(Group, GroupAdmin)
  • django/contrib/auth/views.py

    === modified file 'django/contrib/auth/views.py'
     
    129129        'opts': User._meta,
    130130        'original': user,
    131131        'show_save': True,
     132        'save_as': False,
     133        'is_save_as': False,
    132134    }, context_instance=RequestContext(request))
Back to Top