Compare commits

..

No commits in common. "d5e3a35056a9f63f3d15567a66ebbf42af57d76c" and "2d7efeaf099a9b46e236a5301dd9cadc38a34a50" have entirely different histories.

5 changed files with 14 additions and 47 deletions

View File

@ -1 +1 @@
__version__ = "2025.4.0" __version__ = "2025.3.0"

View File

@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pretalx-musicrate 0.9.0\n" "Project-Id-Version: pretalx-musicrate 0.9.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-09 22:22+0100\n" "POT-Creation-Date: 2024-11-02 19:23+0100\n"
"PO-Revision-Date: 2024-12-09 22:23+0100\n" "PO-Revision-Date: 2024-02-14 22:30+0100\n"
"Last-Translator: Luca <Luca@hackerspace-bamberg.de>\n" "Last-Translator: Luca <Luca@hackerspace-bamberg.de>\n"
"Language-Team: Luca <Luca@hackerspace-bamberg.de>\n" "Language-Team: Luca <Luca@hackerspace-bamberg.de>\n"
"Language: de_DE\n" "Language: de_DE\n"
@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.4.2\n" "X-Generator: Poedit 3.4.1\n"
#: pretalx_musicrate/apps.py:12 pretalx_musicrate/signals.py:59 #: pretalx_musicrate/apps.py:12 pretalx_musicrate/signals.py:59
msgid "pretalx-musicrate" msgid "pretalx-musicrate"
@ -194,35 +194,31 @@ msgstr "pretalx-musicrate-Einstellungen"
msgid "Export ratings" msgid "Export ratings"
msgstr "Bewertungen exportieren" msgstr "Bewertungen exportieren"
#: pretalx_musicrate/templates/pretalx_musicrate/settings.html:16 #: pretalx_musicrate/templates/pretalx_musicrate/submission_base.html:29
msgid "Export scores"
msgstr "Auswertung exportieren"
#: pretalx_musicrate/templates/pretalx_musicrate/submission_base.html:34
msgid "(not specified)" msgid "(not specified)"
msgstr "(nicht angegeben)" msgstr "(nicht angegeben)"
#: pretalx_musicrate/templates/pretalx_musicrate/submission_base.html:47 #: pretalx_musicrate/templates/pretalx_musicrate/submission_base.html:42
msgid "Previous" msgid "Previous"
msgstr "Zurück" msgstr "Zurück"
#: pretalx_musicrate/templates/pretalx_musicrate/submission_base.html:55 #: pretalx_musicrate/templates/pretalx_musicrate/submission_base.html:50
msgid "Next" msgid "Next"
msgstr "Weiter" msgstr "Weiter"
#: pretalx_musicrate/views.py:66 #: pretalx_musicrate/views.py:48
msgid "Invalid token" msgid "Invalid token"
msgstr "Ungültiges Token" msgstr "Ungültiges Token"
#: pretalx_musicrate/views.py:133 #: pretalx_musicrate/views.py:123
msgid "The pretalx-musicrate settings were updated." msgid "The pretalx-musicrate settings were updated."
msgstr "Die pretalx-musicrate-Einstellungen wurden gespeichert." msgstr "Die pretalx-musicrate-Einstellungen wurden gespeichert."
#: pretalx_musicrate/views.py:289 pretalx_musicrate/views.py:482 #: pretalx_musicrate/views.py:282 pretalx_musicrate/views.py:469
msgid "Saved!" msgid "Saved!"
msgstr "Gespeichert!" msgstr "Gespeichert!"
#: pretalx_musicrate/views.py:398 #: pretalx_musicrate/views.py:386
#, python-format #, python-format
msgid "%(num_ratings)d of %(num_jurors)d has rated this submission" msgid "%(num_ratings)d of %(num_jurors)d has rated this submission"
msgid_plural "%(num_ratings)d of %(num_jurors)d have rated this submission" msgid_plural "%(num_ratings)d of %(num_jurors)d have rated this submission"

View File

@ -11,8 +11,4 @@
<i class="fa fa-download"></i> <i class="fa fa-download"></i>
{% translate "Export ratings" %} {% translate "Export ratings" %}
</a> </a>
<a class="btn btn-success btn-lg btn-block" href="{% url "plugins:pretalx_musicrate:scores" event=request.event.slug %}">
<i class="fa fa-download"></i>
{% translate "Export scores" %}
</a>
{% endblock %} {% endblock %}

View File

@ -11,7 +11,6 @@ from .views import (
PresenterView, PresenterView,
QRCodeView, QRCodeView,
RatingView, RatingView,
ScoreExportView,
) )
urlpatterns = [ urlpatterns = [
@ -34,7 +33,6 @@ urlpatterns = [
EnhancedSubmissionList.as_view(), EnhancedSubmissionList.as_view(),
name="enhanced_list", name="enhanced_list",
), ),
path("scores/", ScoreExportView.as_view(), name="scores"),
path("<code>/", AssigneeView.as_view(), name="assignee"), path("<code>/", AssigneeView.as_view(), name="assignee"),
] ]
), ),

View File

@ -4,7 +4,7 @@ from hmac import compare_digest
from urllib.parse import parse_qs, urlparse from urllib.parse import parse_qs, urlparse
from django.contrib import messages from django.contrib import messages
from django.db.models import Case, F, FilteredRelation, Q, Value, When from django.db.models import Case, FilteredRelation, Q, Value, When
from django.http import HttpResponse, JsonResponse from django.http import HttpResponse, JsonResponse
from django.shortcuts import get_object_or_404, redirect from django.shortcuts import get_object_or_404, redirect
from django.urls import reverse from django.urls import reverse
@ -422,7 +422,8 @@ class ExportView(EventPermissionRequired, View):
request.event.submissions.prefetch_related("answers") request.event.submissions.prefetch_related("answers")
.select_related("submission_type") .select_related("submission_type")
.filter( .filter(
submission_type__in=request.event.pretalx_musicrate_settings.submission_types.all() submission_type__in=request.event.pretalx_musicrate_settings.submission_types.all(),
state=SubmissionStates.SUBMITTED,
) )
.only("title", "submission_type__name") .only("title", "submission_type__name")
.order_by("created") .order_by("created")
@ -513,27 +514,3 @@ class EnhancedSubmissionList(SubmissionList):
if not self.filter_form.is_valid(): if not self.filter_form.is_valid():
return qs return qs
return self.filter_form.filter_queryset(qs) return self.filter_form.filter_queryset(qs)
class ScoreExportView(EventPermissionRequired, View):
permission_required = "orga.view_submissions"
def get(self, request, *args, **kwargs):
response = HttpResponse(
content_type="text/csv",
headers={
"Content-Disposition": f'attachment; filename="{request.event.slug}.csv"'
},
)
csv.writer(response).writerows(
request.event.submissions.select_related("score", "submission_type")
.filter(
submission_type__in=request.event.pretalx_musicrate_settings.submission_types.all()
)
.exclude(state__in=(SubmissionStates.CANCELED, SubmissionStates.WITHDRAWN))
.order_by(F("score__value").desc(nulls_last=True))
.values_list("score__value", "title")
)
return response