From 165088c0b193e17630662b224e5dfcc91135ffd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20H=C3=A4ttasch?= <benjamin.haettasch@fachschaft.informatik.tu-darmstadt.de> Date: Sun, 23 Oct 2022 23:06:36 +0200 Subject: [PATCH] Use action and display decorators Leverage the decorators introduced in django 3.2 for methods that do not use them already --- AKModel/admin.py | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/AKModel/admin.py b/AKModel/admin.py index 2168b93a..3bfa7af5 100644 --- a/AKModel/admin.py +++ b/AKModel/admin.py @@ -1,7 +1,7 @@ from django import forms from django.apps import apps from django.contrib import admin, messages -from django.contrib.admin import SimpleListFilter, RelatedFieldListFilter, action +from django.contrib.admin import SimpleListFilter, RelatedFieldListFilter, action, display from django.db.models import Count, F from django.db.models.functions import Now from django.http import HttpResponseRedirect @@ -56,12 +56,11 @@ class EventAdmin(admin.ModelAdmin): urls.extend(super().get_urls()) return urls + @display(description=_("Status")) def status_url(self, obj): return format_html("<a href='{url}'>{text}</a>", url=reverse_lazy('admin:event_status', kwargs={'slug': obj.slug}), text=_("Status")) - status_url.short_description = _("Status") - def get_form(self, request, obj=None, change=False, **kwargs): # Use timezone of event timezone.activate(obj.timezone) @@ -191,16 +190,14 @@ class AKAdmin(SimpleHistoryAdmin): actions = ['wiki_export', 'reset_interest', 'reset_interest_counter'] form = AKAdminForm + @display(boolean=True) def is_wish(self, obj): return obj.wish + @action(description=_("Export to wiki syntax")) def wiki_export(self, request, queryset): return render(request, 'admin/AKModel/wiki_export.html', context={"AKs": queryset}) - wiki_export.short_description = _("Export to wiki syntax") - - is_wish.boolean = True - def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'event': kwargs['initial'] = Event.get_next_active() @@ -214,15 +211,15 @@ class AKAdmin(SimpleHistoryAdmin): urls.extend(super().get_urls()) return urls + @action(description=_("Reset interest in AKs")) def reset_interest(self, request, queryset): selected = queryset.values_list('pk', flat=True) return HttpResponseRedirect(f"{reverse_lazy('admin:ak-reset-interest')}?pks={','.join(str(pk) for pk in selected)}") - reset_interest.short_description = _("Reset interest in AKs") + @action(description=_("Reset AKs' interest counters")) def reset_interest_counter(self, request, queryset): selected = queryset.values_list('pk', flat=True) return HttpResponseRedirect(f"{reverse_lazy('admin:ak-reset-interest-counter')}?pks={','.join(str(pk) for pk in selected)}") - reset_interest_counter.short_description = _("Reset AKs' interest counters") class RoomForm(AvailabilitiesFormMixin, forms.ModelForm): @@ -303,14 +300,13 @@ class AKSlotAdmin(admin.ModelAdmin): kwargs['initial'] = Event.get_next_active() return super(AKSlotAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) + @display(description=_('AK Details')) def ak_details_link(self, akslot): if apps.is_installed("AKSubmission") and akslot.ak is not None: link = f"<a href={reverse('submit:ak_detail', args=[akslot.event.slug, akslot.ak.pk])}>{str(akslot.ak)}</a>" return mark_safe(link) return "-" - ak_details_link.short_description = _('AK Details') - @admin.register(Availability) class AvailabilityAdmin(admin.ModelAdmin): @@ -361,17 +357,17 @@ class ConstraintViolationAdmin(admin.ModelAdmin): urls.extend(super().get_urls()) return urls + @action(description=_("Mark Constraint Violations as manually resolved")) def mark_resolved(self, request, queryset): selected = queryset.values_list('pk', flat=True) return HttpResponseRedirect(f"{reverse_lazy('admin:cv-mark-resolved')}?pks={','.join(str(pk) for pk in selected)}") - mark_resolved.short_description = _("Mark Constraint Violations as manually resolved") + @action(description=_('Set Constraint Violations to level "violation"')) def set_violation(self, request, queryset): selected = queryset.values_list('pk', flat=True) return HttpResponseRedirect(f"{reverse_lazy('admin:cv-set-violation')}?pks={','.join(str(pk) for pk in selected)}") - set_violation.short_description = _('Set Constraint Violations to level "violation"') + @action(description=_('Set Constraint Violations to level "warning"')) def set_warning(self, request, queryset): selected = queryset.values_list('pk', flat=True) return HttpResponseRedirect(f"{reverse_lazy('admin:cv-set-warning')}?pks={','.join(str(pk) for pk in selected)}") - set_warning.short_description = _('Set Constraint Violations to level "warning"') -- GitLab