diff --git a/sifrovacka/forms.py b/sifrovacka/forms.py index 3ae75cc1..1267848b 100644 --- a/sifrovacka/forms.py +++ b/sifrovacka/forms.py @@ -13,8 +13,8 @@ class SifrovackaForm(ModelForm): def clean_sifra(self): sifra = self.cleaned_data.get('sifra') - if SpravnaOdpoved.objects.filter(sifra=sifra).count() == 0: - raise ValidationError("Tohle číslo šifry v databázi nemáme. Zkontrolujte si ho prosím.") + if SpravnaOdpoved.objects.filter(sifra__iexact=sifra).count() == 0: + raise ValidationError("Tuhle šifru v databázi nemáme. Zkontrolujte si, že jste zadali název správně.") return sifra @@ -25,6 +25,6 @@ class NapovedaForm(ModelForm): def clean_sifra(self): sifra = self.cleaned_data.get('sifra') - if Napoveda.objects.filter(sifra=sifra).count() == 0: - raise ValidationError("K tomuto číslu šifry nemáme nápovědu. Zkontrolujte si ho prosím.") + if Napoveda.objects.filter(sifra__iexact=sifra).count() == 0: + raise ValidationError("K této šifře nemáme nápovědu. Zkontrolujte si, že jste zadali název správně.") return sifra diff --git a/sifrovacka/migrations/0007_alter_napoveda_sifra_and_more.py b/sifrovacka/migrations/0007_alter_napoveda_sifra_and_more.py new file mode 100644 index 00000000..0212e3c4 --- /dev/null +++ b/sifrovacka/migrations/0007_alter_napoveda_sifra_and_more.py @@ -0,0 +1,33 @@ +# Generated by Django 4.2.18 on 2025-03-19 20:12 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sifrovacka', '0006_personalni_post_migrate'), + ] + + operations = [ + migrations.AlterField( + model_name='napoveda', + name='sifra', + field=models.CharField(max_length=255), + ), + migrations.AlterField( + model_name='napovezenoucastnikovi', + name='sifra', + field=models.CharField(max_length=255, verbose_name='Šifra'), + ), + migrations.AlterField( + model_name='odpoveducastnika', + name='sifra', + field=models.CharField(max_length=255, verbose_name='Šifra'), + ), + migrations.AlterField( + model_name='spravnaodpoved', + name='sifra', + field=models.CharField(max_length=255), + ), + ] diff --git a/sifrovacka/models.py b/sifrovacka/models.py index cd71fd15..5745dd8f 100644 --- a/sifrovacka/models.py +++ b/sifrovacka/models.py @@ -10,14 +10,14 @@ class OdpovedUcastnika(models.Model): resitel = models.ForeignKey(Resitel, blank=False, null=False, on_delete=models.CASCADE) odpoved = models.TextField("Tajenka bez diakritiky", blank=False, null=False,) - sifra = models.IntegerField("Číslo šifry", blank=False, null=False,) + sifra = models.CharField("Šifra", max_length=255, blank=False, null=False,) timestamp = models.DateTimeField("Timestamp", blank=False, null=False, default=timezone.now) uspech = models.BooleanField("Úspěch", blank=False, null=False, default=False) class SpravnaOdpoved(models.Model): odpoved = models.TextField(blank=False, null=False,) - sifra = models.IntegerField(blank=False, null=False,) + sifra = models.CharField(max_length=255, blank=False, null=False,) skryty_text = models.TextField(blank=False, null=False,) def __str__(self): @@ -29,13 +29,13 @@ class NapovezenoUcastnikovi(models.Model): ordering = ["-timestamp"] resitel = models.ForeignKey(Resitel, blank=False, null=False, on_delete=models.CASCADE) - sifra = models.IntegerField("Číslo šifry", blank=False, null=False,) + sifra = models.CharField("Šifra", max_length=255, blank=False, null=False,) timestamp = models.DateTimeField("Timestamp", blank=False, null=False, default=timezone.now) class Napoveda(models.Model): text = models.TextField(blank=False, null=False,) - sifra = models.IntegerField(blank=False, null=False,) + sifra = models.CharField(max_length=255, blank=False, null=False,) def __str__(self): return f"{self.sifra}: {self.text}" diff --git a/sifrovacka/views.py b/sifrovacka/views.py index 2a111faf..40838dac 100644 --- a/sifrovacka/views.py +++ b/sifrovacka/views.py @@ -16,7 +16,7 @@ class SifrovackaView(FormView): resitel = Resitel.objects.get(osoba__user=self.request.user) instance.resitel = resitel instance.save() - sifra = SpravnaOdpoved.objects.filter(sifra=instance.sifra, odpoved__iexact=instance.odpoved.strip()).first() + sifra = SpravnaOdpoved.objects.filter(sifra__iexact=instance.sifra, odpoved__iexact=instance.odpoved.strip()).first() if sifra is None: return formularOKView(self.request, f'<h1>Bohužel vám hvězdy nebyly nakloněny. Rozumějte <i>máte to blbě</i>.</h1> <p><a href="{reverse("sifrovacka")}">Zkusit znovu.</a></p><br><br><br>') @@ -40,10 +40,10 @@ class NapovedaView(FormView): resitel = Resitel.objects.get(osoba__user=self.request.user) instance.resitel = resitel - if NapovezenoUcastnikovi.objects.filter(resitel=resitel, sifra=instance.sifra).first() is None: + if NapovezenoUcastnikovi.objects.filter(resitel=resitel, sifra__iexact=instance.sifra).first() is None: instance.save() - napoveda = Napoveda.objects.filter(sifra=instance.sifra).first() + napoveda = Napoveda.objects.filter(sifra__iexact=instance.sifra).first() return formularOKView(self.request, f'<h1>Nápověda k šifře číslo {instance.sifra} je:</h1><p>{napoveda.text}</p> <p><a href="{reverse("sifrovacka")}">Odevzdat řešení.</a></p><br><br><br>') @@ -63,6 +63,6 @@ class PreskoceniView(FormView): resitel = Resitel.objects.get(osoba__user=self.request.user) instance.resitel = resitel instance.save() - sifra = SpravnaOdpoved.objects.filter(sifra=instance.sifra).first() # FIXME co když je více "správných" odpovědí? + sifra = SpravnaOdpoved.objects.filter(sifra__iexact=instance.sifra).first() # FIXME co když je více "správných" odpovědí? return formularOKView(self.request, f'<h1>{sifra.skryty_text}</h1> <p><a href="{reverse("sifrovacka")}">Zpět na odevzdávátko.</a></p><br><br><br>')