labelsadmin.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from django.contrib import messages
  2. from django.utils.translation import ugettext_lazy as _
  3. from misago.admin.views import generic
  4. from misago.core import cachebuster
  5. from misago.threads.models import Label
  6. from misago.threads.forms.admin import LabelForm
  7. class LabelsAdmin(generic.AdminBaseMixin):
  8. root_link = 'misago:admin:forums:labels:index'
  9. Model = Label
  10. Form = LabelForm
  11. templates_dir = 'misago/admin/labels'
  12. message_404 = _("Requested thread label does not exist.")
  13. def handle_form(self, form, request, target):
  14. target.save()
  15. target.forums.clear()
  16. if form.cleaned_data.get('forums'):
  17. target.forums.add(*[f for f in form.cleaned_data.get('forums')])
  18. Label.objects.clear_cache()
  19. if self.message_submit:
  20. messages.success(
  21. request, self.message_submit % {'name': target.name})
  22. class LabelsList(LabelsAdmin, generic.ListView):
  23. ordering = (('name', None),)
  24. class NewLabel(LabelsAdmin, generic.ModelFormView):
  25. message_submit = _('New label "%(name)s" has been saved.')
  26. class EditLabel(LabelsAdmin, generic.ModelFormView):
  27. message_submit = _('Label "%(name)s" has been edited.')
  28. class DeleteLabel(LabelsAdmin, generic.ButtonView):
  29. def button_action(self, request, target):
  30. target.delete()
  31. message = _('Label "%(name)s" has been deleted.')
  32. messages.success(request, message % {'name': target.name})