Compare commits
5 Commits
Author | SHA1 | Date |
---|---|---|
|
d319559272 | |
|
1b264054fc | |
|
c5b39e1890 | |
|
97a1dbf33a | |
|
27e0b1e2c5 |
|
@ -1 +1 @@
|
||||||
__version__ = "2025.4.1"
|
__version__ = "2025.6.1"
|
||||||
|
|
|
@ -20,6 +20,9 @@ class Command(BaseCommand):
|
||||||
help = "Compute submission scores from ratings"
|
help = "Compute submission scores from ratings"
|
||||||
|
|
||||||
def add_arguments(self, parser):
|
def add_arguments(self, parser):
|
||||||
|
parser.add_argument(
|
||||||
|
"-a", "--all", action="store_true", help="include frozen jurors"
|
||||||
|
)
|
||||||
parser.add_argument("event")
|
parser.add_argument("event")
|
||||||
|
|
||||||
def handle(self, *args, **kwargs):
|
def handle(self, *args, **kwargs):
|
||||||
|
@ -31,9 +34,15 @@ class Command(BaseCommand):
|
||||||
with scope(event=event):
|
with scope(event=event):
|
||||||
submissions = {}
|
submissions = {}
|
||||||
|
|
||||||
for juror in event.jurors.prefetch_related("ratings__submission").order_by(
|
jurors = event.jurors.prefetch_related("ratings__submission").order_by(
|
||||||
"token"
|
"token"
|
||||||
):
|
)
|
||||||
|
if not kwargs["all"]:
|
||||||
|
jurors = jurors.filter(frozen=False)
|
||||||
|
|
||||||
|
self.stderr.write(f"computing scores from {jurors.count()} jurors")
|
||||||
|
|
||||||
|
for juror in jurors:
|
||||||
ratings = list(
|
ratings = list(
|
||||||
juror.ratings.exclude(rating="").order_by("submission__created")
|
juror.ratings.exclude(rating="").order_by("submission__created")
|
||||||
)
|
)
|
||||||
|
|
|
@ -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),
|
||||||
|
),
|
||||||
|
]
|
|
@ -78,6 +78,7 @@ class Juror(models.Model):
|
||||||
related_name="jurors",
|
related_name="jurors",
|
||||||
null=True,
|
null=True,
|
||||||
)
|
)
|
||||||
|
frozen = models.BooleanField(default=False)
|
||||||
|
|
||||||
|
|
||||||
class Rating(models.Model):
|
class Rating(models.Model):
|
||||||
|
|
|
@ -54,7 +54,7 @@ class JoinView(TemplateView):
|
||||||
|
|
||||||
def validate_token(self, token):
|
def validate_token(self, token):
|
||||||
try:
|
try:
|
||||||
self.juror = Juror.objects.get(token=token)
|
self.juror = Juror.objects.get(token=token, frozen=False)
|
||||||
return True
|
return True
|
||||||
except Juror.DoesNotExist:
|
except Juror.DoesNotExist:
|
||||||
self.juror = None
|
self.juror = None
|
||||||
|
@ -256,7 +256,7 @@ class RatingView(FormView, SubmissionMixin):
|
||||||
@cached_property
|
@cached_property
|
||||||
def juror(self):
|
def juror(self):
|
||||||
return get_object_or_404(
|
return get_object_or_404(
|
||||||
Juror, token=self.request.resolver_match.kwargs["token"]
|
Juror, token=self.request.resolver_match.kwargs["token"], frozen=False
|
||||||
)
|
)
|
||||||
|
|
||||||
@context
|
@context
|
||||||
|
@ -384,8 +384,8 @@ class MayAdvanceView(EventPermissionRequired, SubmissionMixin, View):
|
||||||
permission_required = "orga.view_submissions"
|
permission_required = "orga.view_submissions"
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
num_ratings = self.submission.ratings.count()
|
num_ratings = self.submission.ratings.filter(juror__frozen=False).count()
|
||||||
num_jurors = self.request.event.jurors.count()
|
num_jurors = self.request.event.jurors.filter(frozen=False).count()
|
||||||
return JsonResponse(
|
return JsonResponse(
|
||||||
{
|
{
|
||||||
"mayAdvance": num_ratings
|
"mayAdvance": num_ratings
|
||||||
|
@ -417,7 +417,7 @@ class ExportView(EventPermissionRequired, View):
|
||||||
writer = csv.writer(response)
|
writer = csv.writer(response)
|
||||||
genre_question = request.event.pretalx_musicrate_settings.genre_question
|
genre_question = request.event.pretalx_musicrate_settings.genre_question
|
||||||
origin_question = request.event.pretalx_musicrate_settings.origin_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 (
|
for submission in (
|
||||||
request.event.submissions.prefetch_related("answers")
|
request.event.submissions.prefetch_related("answers")
|
||||||
.select_related("submission_type")
|
.select_related("submission_type")
|
||||||
|
|
Loading…
Reference in New Issue