Sifrovacka Sifry Jako Text #93
					 4 changed files with 45 additions and 12 deletions
				
			
		|  | @ -13,8 +13,8 @@ class SifrovackaForm(ModelForm): | ||||||
| 
 | 
 | ||||||
| 	def clean_sifra(self): | 	def clean_sifra(self): | ||||||
| 		sifra = self.cleaned_data.get('sifra') | 		sifra = self.cleaned_data.get('sifra') | ||||||
| 		if SpravnaOdpoved.objects.filter(sifra=sifra).count() == 0: | 		if SpravnaOdpoved.objects.filter(sifra__iexact=sifra).count() == 0: | ||||||
| 			raise ValidationError("Tohle číslo šifry v databázi nemáme. Zkontrolujte si ho prosím.") | 			raise ValidationError("Tuhle šifru v databázi nemáme. Zkontrolujte si, že jste zadali název správně.") | ||||||
| 		return sifra | 		return sifra | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -25,6 +25,6 @@ class NapovedaForm(ModelForm): | ||||||
| 
 | 
 | ||||||
| 	def clean_sifra(self): | 	def clean_sifra(self): | ||||||
| 		sifra = self.cleaned_data.get('sifra') | 		sifra = self.cleaned_data.get('sifra') | ||||||
| 		if Napoveda.objects.filter(sifra=sifra).count() == 0: | 		if Napoveda.objects.filter(sifra__iexact=sifra).count() == 0: | ||||||
| 			raise ValidationError("K tomuto číslu šifry nemáme nápovědu. Zkontrolujte si ho prosím.") | 			raise ValidationError("K této šifře nemáme nápovědu. Zkontrolujte si, že jste zadali název správně.") | ||||||
| 		return sifra | 		return sifra | ||||||
|  |  | ||||||
							
								
								
									
										33
									
								
								sifrovacka/migrations/0007_alter_napoveda_sifra_and_more.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								sifrovacka/migrations/0007_alter_napoveda_sifra_and_more.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -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), | ||||||
|  |         ), | ||||||
|  |     ] | ||||||
|  | @ -10,14 +10,14 @@ class OdpovedUcastnika(models.Model): | ||||||
| 
 | 
 | ||||||
| 	resitel = models.ForeignKey(Resitel, blank=False, null=False, on_delete=models.CASCADE) | 	resitel = models.ForeignKey(Resitel, blank=False, null=False, on_delete=models.CASCADE) | ||||||
| 	odpoved = models.TextField("Tajenka bez diakritiky", blank=False, null=False,) | 	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) | 	timestamp = models.DateTimeField("Timestamp", blank=False, null=False, default=timezone.now) | ||||||
| 	uspech = models.BooleanField("Úspěch", blank=False, null=False, default=False) | 	uspech = models.BooleanField("Úspěch", blank=False, null=False, default=False) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class SpravnaOdpoved(models.Model): | class SpravnaOdpoved(models.Model): | ||||||
| 	odpoved = models.TextField(blank=False, null=False,) | 	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,) | 	skryty_text = models.TextField(blank=False, null=False,) | ||||||
| 
 | 
 | ||||||
| 	def __str__(self): | 	def __str__(self): | ||||||
|  | @ -29,13 +29,13 @@ class NapovezenoUcastnikovi(models.Model): | ||||||
| 		ordering = ["-timestamp"] | 		ordering = ["-timestamp"] | ||||||
| 
 | 
 | ||||||
| 	resitel = models.ForeignKey(Resitel, blank=False, null=False, on_delete=models.CASCADE) | 	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) | 	timestamp = models.DateTimeField("Timestamp", blank=False, null=False, default=timezone.now) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class Napoveda(models.Model): | class Napoveda(models.Model): | ||||||
| 	text = models.TextField(blank=False, null=False,) | 	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): | 	def __str__(self): | ||||||
| 		return f"{self.sifra}: {self.text}" | 		return f"{self.sifra}: {self.text}" | ||||||
|  |  | ||||||
|  | @ -16,7 +16,7 @@ class SifrovackaView(FormView): | ||||||
| 		resitel = Resitel.objects.get(osoba__user=self.request.user) | 		resitel = Resitel.objects.get(osoba__user=self.request.user) | ||||||
| 		instance.resitel = resitel | 		instance.resitel = resitel | ||||||
| 		instance.save() | 		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: | 		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>') | 			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) | 		resitel = Resitel.objects.get(osoba__user=self.request.user) | ||||||
| 		instance.resitel = resitel | 		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() | 			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>') | 		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) | 		resitel = Resitel.objects.get(osoba__user=self.request.user) | ||||||
| 		instance.resitel = resitel | 		instance.resitel = resitel | ||||||
| 		instance.save() | 		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>') | 		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>') | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue