123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- from django.contrib import messages
- from django.utils.translation import gettext_lazy as _
- from ...admin.views import generic
- from ..models import MenuLink
- from ..cache import clear_menus_cache
- from .forms import MenuLinkForm
- from .ordering import get_next_free_order
- class MenuLinkAdmin(generic.AdminBaseMixin):
- root_link = "misago:admin:settings:links:index"
- model = MenuLink
- form_class = MenuLinkForm
- templates_dir = "misago/admin/menulinks"
- message_404 = _("Requested MenuLink does not exist.")
- def handle_form(self, form, request, target):
- form.save()
- if self.message_submit:
- messages.success(request, self.message_submit % {"title": target.title})
- class MenuLinksList(MenuLinkAdmin, generic.ListView):
- ordering = (("order", None),)
- selection_label = _("With MenuLinks: 0")
- empty_selection_label = _("Select MenuLinks")
- mass_actions = [
- {
- "action": "delete",
- "name": _("Delete MenuLinks"),
- "confirmation": _("Are you sure you want to delete those MenuLinks?"),
- }
- ]
- def action_delete(self, request, items):
- items.delete()
- clear_menus_cache()
- messages.success(request, _("Selected MenuLinks have been deleted."))
- class NewMenuLink(MenuLinkAdmin, generic.ModelFormView):
- message_submit = _('New MenuLink "%(title)s" has been saved.')
- def handle_form(self, form, request, target):
- super().handle_form(form, request, target)
- form.instance.order = get_next_free_order()
- form.instance.save()
- clear_menus_cache()
- class EditMenuLink(MenuLinkAdmin, generic.ModelFormView):
- message_submit = _('MenuLink "%(title)s" has been edited.')
- def handle_form(self, form, request, target):
- super().handle_form(form, request, target)
- form.instance.save()
- clear_menus_cache()
- class DeleteMenuLink(MenuLinkAdmin, generic.ButtonView):
- def button_action(self, request, target):
- target.delete()
- clear_menus_cache()
- message = _('MenuLink "%(title)s" has been deleted.')
- messages.success(request, message % {"title": target.title})
- class MoveDownMenuLink(MenuLinkAdmin, generic.ButtonView):
- def button_action(self, request, target):
- try:
- other_target = MenuLink.objects.filter(order__gt=target.order)
- other_target = other_target.earliest("order")
- except MenuLink.DoesNotExist:
- other_target = None
- if other_target:
- other_target.order, target.order = target.order, other_target.order
- other_target.save(update_fields=["order"])
- target.save(update_fields=["order"])
- clear_menus_cache()
- message = _("Menu link to %(link)s has been moved after %(other)s.")
- targets_names = {"link": target, "other": other_target}
- messages.success(request, message % targets_names)
- class MoveUpMenuLink(MenuLinkAdmin, generic.ButtonView):
- def button_action(self, request, target):
- try:
- other_target = MenuLink.objects.filter(order__lt=target.order)
- other_target = other_target.latest("order")
- except MenuLink.DoesNotExist:
- other_target = None
- if other_target:
- other_target.order, target.order = target.order, other_target.order
- other_target.save(update_fields=["order"])
- target.save(update_fields=["order"])
- clear_menus_cache()
- message = _("Menu link to %(link)s has been moved before %(other)s.")
- targets_names = {"link": target, "other": other_target}
- messages.success(request, message % targets_names)
|