# Generated by Django 5.2.7 on 2025-10-29 01:32 import django.db.models.deletion import submissions.models import uuid from django.conf import settings from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ ("submissions", "0003_steamapikey"), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name="Submission", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ( "notes", models.TextField( blank=True, help_text="Optional notes about the submission" ), ), ( "is_validated", models.BooleanField( default=False, help_text="Whether this submission has been manually validated", ), ), ( "validated_at", models.DateTimeField( blank=True, help_text="When this submission was validated", null=True, ), ), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ( "user", models.ForeignKey( blank=True, help_text="User who made the submission (null for anonymous)", null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, ), ), ( "validated_by", models.ForeignKey( blank=True, help_text="Admin user who validated this submission", null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="validated_submissions", to=settings.AUTH_USER_MODEL, ), ), ], options={ "verbose_name": "Submission", "verbose_name_plural": "Submissions", "ordering": ["-created_at"], }, ), migrations.CreateModel( name="PuzzleResponse", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "puzzle_name", models.CharField( help_text="Puzzle name as detected by OCR", max_length=255 ), ), ( "cost", models.CharField( blank=True, help_text="Cost value from OCR", max_length=20 ), ), ( "cycles", models.CharField( blank=True, help_text="Cycles value from OCR", max_length=20 ), ), ( "area", models.CharField( blank=True, help_text="Area value from OCR", max_length=20 ), ), ( "needs_manual_validation", models.BooleanField( default=False, help_text="Whether OCR failed and manual validation is needed", ), ), ( "ocr_confidence_score", models.FloatField( blank=True, help_text="OCR confidence score (0.0 to 1.0)", null=True, ), ), ( "validated_cost", models.CharField( blank=True, help_text="Manually validated cost value", max_length=20, ), ), ( "validated_cycles", models.CharField( blank=True, help_text="Manually validated cycles value", max_length=20, ), ), ( "validated_area", models.CharField( blank=True, help_text="Manually validated area value", max_length=20, ), ), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ( "puzzle", models.ForeignKey( help_text="The puzzle this response is for", on_delete=django.db.models.deletion.CASCADE, related_name="responses", to="submissions.steamcollectionitem", ), ), ( "submission", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="responses", to="submissions.submission", ), ), ], options={ "verbose_name": "Puzzle Response", "verbose_name_plural": "Puzzle Responses", "ordering": ["submission", "puzzle__order_index"], "unique_together": {("submission", "puzzle")}, }, ), migrations.CreateModel( name="SubmissionFile", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "file", models.FileField( help_text="Uploaded file (image/gif)", upload_to=submissions.models.submission_file_upload_path, ), ), ( "original_filename", models.CharField( help_text="Original filename as uploaded by user", max_length=255, ), ), ( "file_size", models.PositiveIntegerField(help_text="File size in bytes"), ), ( "content_type", models.CharField(help_text="MIME type of the file", max_length=100), ), ( "ocr_processed", models.BooleanField( default=False, help_text="Whether OCR has been processed for this file", ), ), ( "ocr_raw_data", models.JSONField( blank=True, help_text="Raw OCR data as JSON", null=True ), ), ( "ocr_error", models.TextField( blank=True, help_text="OCR processing error message" ), ), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ( "response", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="files", to="submissions.puzzleresponse", ), ), ], options={ "verbose_name": "Submission File", "verbose_name_plural": "Submission Files", "ordering": ["response", "created_at"], }, ), ]