From f42649b888113b776e9bd56984ed0e248a764379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Gremaud?= Date: Fri, 23 Oct 2026 23:35:38 +0200 Subject: [PATCH] fix submittion null score --- polylan_submitter/opus_magnum/api.py | 12 ++++--- .../0020_puzzleresponse_ocr_nullable.py | 34 +++++++++++++++++++ polylan_submitter/opus_magnum/models.py | 6 ++-- .../polylan_submitter/settings.py | 14 ++++---- 4 files changed, 52 insertions(+), 14 deletions(-) create mode 100644 polylan_submitter/opus_magnum/migrations/0020_puzzleresponse_ocr_nullable.py diff --git a/polylan_submitter/opus_magnum/api.py b/polylan_submitter/opus_magnum/api.py index 1a613b3..a740027 100644 --- a/polylan_submitter/opus_magnum/api.py +++ b/polylan_submitter/opus_magnum/api.py @@ -122,13 +122,17 @@ def create_submission( for response_data in data.responses ) + # Non-admin submissions always go through manual validation + needs_validation = ( + data.manual_validation_requested or not request.user.is_staff + ) + # Create the submission submission = Submission.objects.create( event=request.event, user=request.user if request.user.is_authenticated else None, notes=data.notes, - manual_validation_requested=data.manual_validation_requested - or auto_request_validation, + manual_validation_requested=needs_validation or auto_request_validation, ) file_index = 0 @@ -148,7 +152,7 @@ def create_submission( cost=response_data.cost, cycles=response_data.cycles, area=response_data.area, - needs_manual_validation=data.manual_validation_requested, + needs_manual_validation=needs_validation, ocr_confidence_cost=response_data.ocr_confidence_cost, ocr_confidence_cycles=response_data.ocr_confidence_cycles, ocr_confidence_area=response_data.ocr_confidence_area, @@ -158,7 +162,7 @@ def create_submission( "validated_cycles": response_data.cycles, "validated_area": response_data.area, } - if not data.manual_validation_requested + if not needs_validation else {}, ) diff --git a/polylan_submitter/opus_magnum/migrations/0020_puzzleresponse_ocr_nullable.py b/polylan_submitter/opus_magnum/migrations/0020_puzzleresponse_ocr_nullable.py new file mode 100644 index 0000000..8dcfd15 --- /dev/null +++ b/polylan_submitter/opus_magnum/migrations/0020_puzzleresponse_ocr_nullable.py @@ -0,0 +1,34 @@ +# Generated by Django 6.0.5 on 2026-10-23 21:33 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("opus_magnum", "0019_reset_sequences"), + ] + + operations = [ + migrations.AlterField( + model_name="puzzleresponse", + name="area", + field=models.IntegerField( + blank=True, help_text="Area value from OCR", null=True + ), + ), + migrations.AlterField( + model_name="puzzleresponse", + name="cost", + field=models.IntegerField( + blank=True, help_text="Cost value from OCR", null=True + ), + ), + migrations.AlterField( + model_name="puzzleresponse", + name="cycles", + field=models.IntegerField( + blank=True, help_text="Cycles value from OCR", null=True + ), + ), + ] diff --git a/polylan_submitter/opus_magnum/models.py b/polylan_submitter/opus_magnum/models.py index af1c399..cdc45f0 100644 --- a/polylan_submitter/opus_magnum/models.py +++ b/polylan_submitter/opus_magnum/models.py @@ -400,9 +400,9 @@ class PuzzleResponse(models.Model): puzzle_name = models.CharField( max_length=255, help_text="Puzzle name as detected by OCR" ) - cost = models.IntegerField(blank=True, help_text="Cost value from OCR") - cycles = models.IntegerField(blank=True, help_text="Cycles value from OCR") - area = models.IntegerField(blank=True, help_text="Area value from OCR") + cost = models.IntegerField(null=True, blank=True, help_text="Cost value from OCR") + cycles = models.IntegerField(null=True, blank=True, help_text="Cycles value from OCR") + area = models.IntegerField(null=True, blank=True, help_text="Area value from OCR") # Validation flags needs_manual_validation = models.BooleanField( diff --git a/polylan_submitter/polylan_submitter/settings.py b/polylan_submitter/polylan_submitter/settings.py index 9a2bffb..1ff0485 100644 --- a/polylan_submitter/polylan_submitter/settings.py +++ b/polylan_submitter/polylan_submitter/settings.py @@ -398,10 +398,10 @@ SENTRY_DSN = ( import sentry_sdk # noqa -# sentry_sdk.init( -# dsn=SENTRY_DSN, -# # Set traces_sample_rate to 1.0 to capture 100% -# # of transactions for tracing. -# traces_sample_rate=1.0, -# environment=SENTRY_ENVIRONMENT, -# ) +sentry_sdk.init( + dsn=SENTRY_DSN, + # Set traces_sample_rate to 1.0 to capture 100% + # of transactions for tracing. + traces_sample_rate=0.1, + environment=SENTRY_ENVIRONMENT, +)