web/lib/django/contrib/admin/actions.py
changeset 29 cc9b7e14412b
parent 0 0d40e90630ef
equal deleted inserted replaced
28:b758351d191f 29:cc9b7e14412b
    10 from django.utils.encoding import force_unicode
    10 from django.utils.encoding import force_unicode
    11 from django.utils.html import escape
    11 from django.utils.html import escape
    12 from django.utils.safestring import mark_safe
    12 from django.utils.safestring import mark_safe
    13 from django.utils.text import capfirst
    13 from django.utils.text import capfirst
    14 from django.utils.translation import ugettext_lazy, ugettext as _
    14 from django.utils.translation import ugettext_lazy, ugettext as _
    15 try:
       
    16     set
       
    17 except NameError:
       
    18     from sets import Set as set     # Python 2.3 fallback
       
    19 
    15 
    20 def delete_selected(modeladmin, request, queryset):
    16 def delete_selected(modeladmin, request, queryset):
    21     """
    17     """
    22     Default action which deletes the selected objects.
    18     Default action which deletes the selected objects.
    23 
    19 
    34     if not modeladmin.has_delete_permission(request):
    30     if not modeladmin.has_delete_permission(request):
    35         raise PermissionDenied
    31         raise PermissionDenied
    36 
    32 
    37     # Populate deletable_objects, a data structure of all related objects that
    33     # Populate deletable_objects, a data structure of all related objects that
    38     # will also be deleted.
    34     # will also be deleted.
    39 
    35     deletable_objects, perms_needed = get_deleted_objects(queryset, opts, request.user, modeladmin.admin_site, levels_to_root=2)
    40     # deletable_objects must be a list if we want to use '|unordered_list' in the template
       
    41     deletable_objects = []
       
    42     perms_needed = set()
       
    43     i = 0
       
    44     for obj in queryset:
       
    45         deletable_objects.append([mark_safe(u'%s: <a href="%s/">%s</a>' % (escape(force_unicode(capfirst(opts.verbose_name))), obj.pk, escape(obj))), []])
       
    46         get_deleted_objects(deletable_objects[i], perms_needed, request.user, obj, opts, 1, modeladmin.admin_site, levels_to_root=2)
       
    47         i=i+1
       
    48 
    36 
    49     # The user has already confirmed the deletion.
    37     # The user has already confirmed the deletion.
    50     # Do the deletion and return a None to display the change list view again.
    38     # Do the deletion and return a None to display the change list view again.
    51     if request.POST.get('post'):
    39     if request.POST.get('post'):
    52         if perms_needed:
    40         if perms_needed:
    64         return None
    52         return None
    65 
    53 
    66     context = {
    54     context = {
    67         "title": _("Are you sure?"),
    55         "title": _("Are you sure?"),
    68         "object_name": force_unicode(opts.verbose_name),
    56         "object_name": force_unicode(opts.verbose_name),
    69         "deletable_objects": deletable_objects,
    57         "deletable_objects": [deletable_objects],
    70         'queryset': queryset,
    58         'queryset': queryset,
    71         "perms_lacking": perms_needed,
    59         "perms_lacking": perms_needed,
    72         "opts": opts,
    60         "opts": opts,
    73         "root_path": modeladmin.admin_site.root_path,
    61         "root_path": modeladmin.admin_site.root_path,
    74         "app_label": app_label,
    62         "app_label": app_label,
    75         'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME,
    63         'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME,
    76     }
    64     }
    77 
    65 
    78     # Display the confirmation page
    66     # Display the confirmation page
    79     return render_to_response(modeladmin.delete_confirmation_template or [
    67     return render_to_response(modeladmin.delete_selected_confirmation_template or [
    80         "admin/%s/%s/delete_selected_confirmation.html" % (app_label, opts.object_name.lower()),
    68         "admin/%s/%s/delete_selected_confirmation.html" % (app_label, opts.object_name.lower()),
    81         "admin/%s/delete_selected_confirmation.html" % app_label,
    69         "admin/%s/delete_selected_confirmation.html" % app_label,
    82         "admin/delete_selected_confirmation.html"
    70         "admin/delete_selected_confirmation.html"
    83     ], context, context_instance=template.RequestContext(request))
    71     ], context, context_instance=template.RequestContext(request))
    84 
    72