django-admin2/example/blog/actions.py
2020-11-21 22:16:43 +06:00

71 lines
2 KiB
Python

from django.contrib import messages
from django.utils.translation import gettext_lazy, pgettext_lazy
from djadmin2 import permissions
from djadmin2.actions import BaseListAction
class CustomPublishAction(BaseListAction):
permission_classes = BaseListAction.permission_classes + (
permissions.ModelChangePermission,
)
description = gettext_lazy('Publish selected items')
success_message = pgettext_lazy(
'singular form',
'Successfully published %(count)s %(items)s')
success_message_plural = pgettext_lazy(
'plural form',
'Successfully published %(count)s %(items)s')
default_template_name = "actions/publish_selected_items.html"
def process_queryset(self):
self.get_queryset().update(published=True)
class PublishAllItemsAction(BaseListAction):
permission_classes = BaseListAction.permission_classes + (
permissions.ModelChangePermission,
)
description = gettext_lazy('Publish all items')
success_message = pgettext_lazy(
'singular form',
'Successfully published %(count)s %(items)s',
)
success_message_plural = pgettext_lazy(
'plural form',
'Successfully published %(count)s %(items)s',
)
default_template_name = "model_list.html"
only_selected = False
def process_queryset(self):
self.get_queryset().update(published=True)
def unpublish_items(request, queryset):
queryset.update(published=False)
messages.add_message(request, messages.INFO,
gettext_lazy(u'Items unpublished'))
# Translators : action description
unpublish_items.description = gettext_lazy('Unpublish selected items')
def unpublish_all_items(request, queryset):
queryset.update(published=False)
messages.add_message(
request,
messages.INFO,
gettext_lazy('Items unpublished'),
)
unpublish_all_items.description = gettext_lazy('Unpublish all items')
unpublish_all_items.only_selected = False