feat: add flag to Juror to disable them

This commit is contained in:
Luca 2025-02-23 14:40:52 +01:00
parent ec3acac3fc
commit 27e0b1e2c5
5 changed files with 29 additions and 8 deletions

View File

@ -1 +1 @@
__version__ = "2025.4.1"
__version__ = "2025.5.0.dev0"

View File

@ -31,8 +31,10 @@ class Command(BaseCommand):
with scope(event=event):
submissions = {}
for juror in event.jurors.prefetch_related("ratings__submission").order_by(
"token"
for juror in (
event.jurors.prefetch_related("ratings__submission")
.filter(frozen=False)
.order_by("token")
):
ratings = list(
juror.ratings.exclude(rating="").order_by("submission__created")

View File

@ -0,0 +1,18 @@
# Generated by Django 5.1.5 on 2025-02-23 13:27
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("pretalx_musicrate", "0009_score"),
]
operations = [
migrations.AddField(
model_name="juror",
name="frozen",
field=models.BooleanField(default=False),
),
]

View File

@ -78,6 +78,7 @@ class Juror(models.Model):
related_name="jurors",
null=True,
)
frozen = models.BooleanField(default=False)
class Rating(models.Model):

View File

@ -54,7 +54,7 @@ class JoinView(TemplateView):
def validate_token(self, token):
try:
self.juror = Juror.objects.get(token=token)
self.juror = Juror.objects.get(token=token, frozen=False)
return True
except Juror.DoesNotExist:
self.juror = None
@ -256,7 +256,7 @@ class RatingView(FormView, SubmissionMixin):
@cached_property
def juror(self):
return get_object_or_404(
Juror, token=self.request.resolver_match.kwargs["token"]
Juror, token=self.request.resolver_match.kwargs["token"], frozen=False
)
@context
@ -384,8 +384,8 @@ class MayAdvanceView(EventPermissionRequired, SubmissionMixin, View):
permission_required = "orga.view_submissions"
def get(self, request, *args, **kwargs):
num_ratings = self.submission.ratings.count()
num_jurors = self.request.event.jurors.count()
num_ratings = self.submission.ratings.filter(juror__frozen=False).count()
num_jurors = self.request.event.jurors.filter(frozen=False).count()
return JsonResponse(
{
"mayAdvance": num_ratings
@ -417,7 +417,7 @@ class ExportView(EventPermissionRequired, View):
writer = csv.writer(response)
genre_question = request.event.pretalx_musicrate_settings.genre_question
origin_question = request.event.pretalx_musicrate_settings.origin_question
jurors = request.event.jurors.order_by("token")
jurors = request.event.jurors.filter(frozen=False).order_by("token")
for submission in (
request.event.submissions.prefetch_related("answers")
.select_related("submission_type")