diff options
author | ttt | 2017-05-13 00:29:47 +0530 |
---|---|---|
committer | ttt | 2017-05-13 00:29:47 +0530 |
commit | 4336f5f06f61de30ae3fa54650fce63a9d5ef5be (patch) | |
tree | 23b4ee9b8e8f24bf732acf2f7ad22ed50cdd5670 /lib/python2.7/site-packages/django/contrib/admin/actions.py | |
download | SBHS-2018-Rpi-4336f5f06f61de30ae3fa54650fce63a9d5ef5be.tar.gz SBHS-2018-Rpi-4336f5f06f61de30ae3fa54650fce63a9d5ef5be.tar.bz2 SBHS-2018-Rpi-4336f5f06f61de30ae3fa54650fce63a9d5ef5be.zip |
added all server files
Diffstat (limited to 'lib/python2.7/site-packages/django/contrib/admin/actions.py')
-rw-r--r-- | lib/python2.7/site-packages/django/contrib/admin/actions.py | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/lib/python2.7/site-packages/django/contrib/admin/actions.py b/lib/python2.7/site-packages/django/contrib/admin/actions.py new file mode 100644 index 0000000..a4c5828 --- /dev/null +++ b/lib/python2.7/site-packages/django/contrib/admin/actions.py @@ -0,0 +1,84 @@ +""" +Built-in, globally-available admin actions. +""" + +from django.core.exceptions import PermissionDenied +from django.contrib import messages +from django.contrib.admin import helpers +from django.contrib.admin.util import get_deleted_objects, model_ngettext +from django.db import router +from django.template.response import TemplateResponse +from django.utils.encoding import force_text +from django.utils.translation import ugettext_lazy, ugettext as _ + +def delete_selected(modeladmin, request, queryset): + """ + Default action which deletes the selected objects. + + This action first displays a confirmation page whichs shows all the + deleteable objects, or, if the user has no permission one of the related + childs (foreignkeys), a "permission denied" message. + + Next, it deletes all selected objects and redirects back to the change list. + """ + opts = modeladmin.model._meta + app_label = opts.app_label + + # Check that the user has delete permission for the actual model + if not modeladmin.has_delete_permission(request): + raise PermissionDenied + + using = router.db_for_write(modeladmin.model) + + # Populate deletable_objects, a data structure of all related objects that + # will also be deleted. + deletable_objects, perms_needed, protected = get_deleted_objects( + queryset, opts, request.user, modeladmin.admin_site, using) + + # The user has already confirmed the deletion. + # Do the deletion and return a None to display the change list view again. + if request.POST.get('post'): + if perms_needed: + raise PermissionDenied + n = queryset.count() + if n: + for obj in queryset: + obj_display = force_text(obj) + modeladmin.log_deletion(request, obj, obj_display) + queryset.delete() + modeladmin.message_user(request, _("Successfully deleted %(count)d %(items)s.") % { + "count": n, "items": model_ngettext(modeladmin.opts, n) + }, messages.SUCCESS) + # Return None to display the change list page again. + return None + + if len(queryset) == 1: + objects_name = force_text(opts.verbose_name) + else: + objects_name = force_text(opts.verbose_name_plural) + + if perms_needed or protected: + title = _("Cannot delete %(name)s") % {"name": objects_name} + else: + title = _("Are you sure?") + + context = { + "title": title, + "objects_name": objects_name, + "deletable_objects": [deletable_objects], + 'queryset': queryset, + "perms_lacking": perms_needed, + "protected": protected, + "opts": opts, + "app_label": app_label, + 'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME, + } + + # Display the confirmation page + return TemplateResponse(request, modeladmin.delete_selected_confirmation_template or [ + "admin/%s/%s/delete_selected_confirmation.html" % (app_label, opts.model_name), + "admin/%s/delete_selected_confirmation.html" % app_label, + "admin/delete_selected_confirmation.html" + ], context, current_app=modeladmin.admin_site.name) + +delete_selected.short_description = ugettext_lazy("Delete selected %(verbose_name_plural)s") |