Skip to content
Snippets Groups Projects
Commit f4de84d3 authored by Benjamin Hättasch's avatar Benjamin Hättasch
Browse files

Implement admin actions for AKs

Add two admin actions to reset interest and interest counter of AKs -- each including a preview/confirmation step
This implements #153
parent 7536ac88
No related branches found
No related tags found
No related merge requests found
......@@ -18,7 +18,8 @@ from AKModel.availability.models import Availability
from AKModel.models import Event, AKOwner, AKCategory, AKTrack, AKTag, AKRequirement, AK, AKSlot, Room, AKOrgaMessage, \
ConstraintViolation
from AKModel.urls import get_admin_urls_event_wizard, get_admin_urls_event
from AKModel.views import CVMarkResolvedView, CVSetLevelViolationView, CVSetLevelWarningView
from AKModel.views import CVMarkResolvedView, CVSetLevelViolationView, CVSetLevelWarningView, AKResetInterestView, \
AKResetInterestCounterView
class EventRelatedFieldListFilter(RelatedFieldListFilter):
......@@ -175,7 +176,7 @@ class AKAdmin(SimpleHistoryAdmin):
list_filter = ['event', WishFilter, ('category', EventRelatedFieldListFilter), ('requirements', EventRelatedFieldListFilter)]
list_editable = ['short_name', 'track', 'interest_counter']
ordering = ['pk']
actions = ['wiki_export']
actions = ['wiki_export', 'reset_interest', 'reset_interest_counter']
form = AKAdminForm
def is_wish(self, obj):
......@@ -193,6 +194,24 @@ class AKAdmin(SimpleHistoryAdmin):
kwargs['initial'] = Event.get_next_active()
return super(AKAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
def get_urls(self):
urls = [
path('reset-interest/', AKResetInterestView.as_view(), name="ak-reset-interest"),
path('reset-interest-counter/', AKResetInterestCounterView.as_view(), name="ak-reset-interest-counter"),
]
urls.extend(super().get_urls())
return urls
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")
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):
class Meta:
......
......@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-09-28 01:20+0200\n"
"POT-Creation-Date: 2022-10-02 15:00+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......@@ -11,7 +11,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: .\AKModel\admin.py:58 .\AKModel\admin.py:60
#: .\AKModel\admin.py:59 .\AKModel\admin.py:61
#: .\AKModel\templates\admin\AKModel\event_wizard\activate.html:32
#: .\AKModel\templates\admin\AKModel\event_wizard\created_prepare_import.html:48
#: .\AKModel\templates\admin\AKModel\event_wizard\finish.html:21
......@@ -21,35 +21,43 @@ msgstr ""
msgid "Status"
msgstr "Status"
#: .\AKModel\admin.py:134
#: .\AKModel\admin.py:135
msgid "Wish"
msgstr "AK-Wunsch"
#: .\AKModel\admin.py:140
#: .\AKModel\admin.py:141
msgid "Is wish"
msgstr "Ist ein Wunsch"
#: .\AKModel\admin.py:141
#: .\AKModel\admin.py:142
msgid "Is not a wish"
msgstr "Ist kein Wunsch"
#: .\AKModel\admin.py:187
#: .\AKModel\admin.py:188
msgid "Export to wiki syntax"
msgstr "In Wiki-Syntax exportieren"
#: .\AKModel\admin.py:281
#: .\AKModel\admin.py:208 .\AKModel\views.py:442
msgid "Reset interest in AKs"
msgstr "Interesse an AKs zurücksetzen"
#: .\AKModel\admin.py:213 .\AKModel\views.py:452
msgid "Reset AKs' interest counters"
msgstr "Interessenszähler der AKs zurücksetzen"
#: .\AKModel\admin.py:300
msgid "AK Details"
msgstr "AK-Details"
#: .\AKModel\admin.py:336 .\AKModel\views.py:412
#: .\AKModel\admin.py:355 .\AKModel\views.py:412
msgid "Mark Constraint Violations as manually resolved"
msgstr "Markiere Constraintverletzungen manuell als behoben"
#: .\AKModel\admin.py:341
#: .\AKModel\admin.py:360
msgid "Set to Constraint Violations to level \"violation\""
msgstr "Constraintverletzungen auf Level \"Violation\" setzen"
#: .\AKModel\admin.py:346 .\AKModel\views.py:432
#: .\AKModel\admin.py:365 .\AKModel\views.py:432
msgid "Set Constraint Violations to level \"warning\""
msgstr "Constraintverletzungen auf Level \"Warning\" setzen"
......@@ -1141,6 +1149,22 @@ msgstr ""
msgid "Constraint Violations set to level 'warning'"
msgstr "Constraintverletzungen auf Level \"Warning\" gesetzt"
#: .\AKModel\views.py:444
msgid "Interest of the following AKs will be set to not filled (-1):"
msgstr "Interesse an den folgenden AKs wird auf nicht ausgefüllt (-1) gesetzt:"
#: .\AKModel\views.py:445
msgid "Reset of interest in AKs successful."
msgstr "Zurücksetzen des Interesses an den AKs erfolgreich."
#: .\AKModel\views.py:454
msgid "Interest counter of the following AKs will be set to 0:"
msgstr "Interessensbekundungszähler der folgenden AKs wird auf 0 gesetzt:"
#: .\AKModel\views.py:455
msgid "AKs' interest counters set back to 0."
msgstr "Interessensbekundungszähler der AKs auf 0 gesetzt."
#, fuzzy
#~| msgid "Export AK Slides"
#~ msgid "Export Slides"
......
......@@ -436,3 +436,23 @@ class CVSetLevelWarningView(IntermediateAdminActionView):
def perform_action(self, entity):
entity.level = ConstraintViolation.ViolationLevel.WARNING
class AKResetInterestView(IntermediateAdminActionView):
title = _("Reset interest in AKs")
model = AK
confirmation_message = _("Interest of the following AKs will be set to not filled (-1):")
success_message = _("Reset of interest in AKs successful.")
def perform_action(self, entity):
entity.interest = -1
class AKResetInterestCounterView(IntermediateAdminActionView):
title = _("Reset AKs' interest counters")
model = AK
confirmation_message = _("Interest counter of the following AKs will be set to 0:")
success_message = _("AKs' interest counters set back to 0.")
def perform_action(self, entity):
entity.interest_counter = 0
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment