Compare commits
No commits in common. "10c6f4be1626095f824011e19a3d7ce13a9d17a3" and "aff9a39262d5ab0acce386084ae4fba4da1ad1c2" have entirely different histories.
10c6f4be16
...
aff9a39262
14 changed files with 0 additions and 237 deletions
|
@ -154,7 +154,6 @@ INSTALLED_APPS = (
|
||||||
'soustredeni',
|
'soustredeni',
|
||||||
'treenode',
|
'treenode',
|
||||||
'vyroci',
|
'vyroci',
|
||||||
'sifrovacka',
|
|
||||||
|
|
||||||
# Admin upravy:
|
# Admin upravy:
|
||||||
|
|
||||||
|
|
|
@ -71,8 +71,6 @@ urlpatterns = [
|
||||||
# Výroční sraz
|
# Výroční sraz
|
||||||
path('sraz/30-let/', include('vyroci.urls')),
|
path('sraz/30-let/', include('vyroci.urls')),
|
||||||
|
|
||||||
# Miniapka na šifrovačku
|
|
||||||
path('sifrovacka/', include('sifrovacka.urls')),
|
|
||||||
]
|
]
|
||||||
|
|
||||||
# This is only needed when using runserver.
|
# This is only needed when using runserver.
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
from django.contrib import admin
|
|
||||||
|
|
||||||
from .models import OdpovedUcastnika, SpravnaOdpoved
|
|
||||||
|
|
||||||
# Register your models here.
|
|
||||||
|
|
||||||
admin.site.register(OdpovedUcastnika)
|
|
||||||
admin.site.register(SpravnaOdpoved)
|
|
|
@ -1,5 +0,0 @@
|
||||||
from django.apps import AppConfig
|
|
||||||
|
|
||||||
|
|
||||||
class SifrovackaConfig(AppConfig):
|
|
||||||
name = 'sifrovacka'
|
|
|
@ -1,18 +0,0 @@
|
||||||
from django.core.exceptions import ValidationError
|
|
||||||
from django.forms import ModelForm, Textarea
|
|
||||||
from .models import OdpovedUcastnika, SpravnaOdpoved
|
|
||||||
|
|
||||||
|
|
||||||
class SifrovackaForm(ModelForm):
|
|
||||||
class Meta:
|
|
||||||
model = OdpovedUcastnika
|
|
||||||
fields = ["sifra", "odpoved", ]
|
|
||||||
widgets = {
|
|
||||||
"odpoved": Textarea(attrs={'rows': 1, 'cols': 30}),
|
|
||||||
}
|
|
||||||
|
|
||||||
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.")
|
|
||||||
return sifra
|
|
|
@ -1,34 +0,0 @@
|
||||||
# Generated by Django 3.2.22 on 2023-10-14 09:20
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
initial = True
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('seminar', '0113_resitel_zasilat_cislo_papirove'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='SpravnaOdpoved',
|
|
||||||
fields=[
|
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
||||||
('odpoved', models.TextField()),
|
|
||||||
('sifra', models.IntegerField()),
|
|
||||||
('skryty_text', models.TextField()),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='OdpovedUcastnika',
|
|
||||||
fields=[
|
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
||||||
('odpoved', models.TextField(verbose_name='Tajenka')),
|
|
||||||
('sifra', models.IntegerField(verbose_name='Číslo šifry')),
|
|
||||||
('resitel', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='seminar.resitel')),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -1,28 +0,0 @@
|
||||||
# Generated by Django 3.2.22 on 2023-10-15 17:44
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.utils.timezone
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('sifrovacka', '0001_initial'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterModelOptions(
|
|
||||||
name='odpoveducastnika',
|
|
||||||
options={'ordering': ['-timestamp']},
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='odpoveducastnika',
|
|
||||||
name='timestamp',
|
|
||||||
field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='Timestamp'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='odpoveducastnika',
|
|
||||||
name='odpoved',
|
|
||||||
field=models.TextField(verbose_name='Tajenka bez diakritiky'),
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -1,23 +0,0 @@
|
||||||
from django.db import models
|
|
||||||
from django.utils import timezone
|
|
||||||
|
|
||||||
from seminar.models.personalni import Resitel
|
|
||||||
|
|
||||||
|
|
||||||
# Create your models here.
|
|
||||||
|
|
||||||
|
|
||||||
class OdpovedUcastnika(models.Model):
|
|
||||||
class Meta:
|
|
||||||
ordering = ["-timestamp"]
|
|
||||||
|
|
||||||
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,)
|
|
||||||
timestamp = models.DateTimeField("Timestamp", blank=False, null=False, default=timezone.now)
|
|
||||||
|
|
||||||
|
|
||||||
class SpravnaOdpoved(models.Model):
|
|
||||||
odpoved = models.TextField(blank=False, null=False,)
|
|
||||||
sifra = models.IntegerField(blank=False, null=False,)
|
|
||||||
skryty_text = models.TextField(blank=False, null=False,)
|
|
|
@ -1,25 +0,0 @@
|
||||||
{% extends "base.html" %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
|
|
||||||
<h1>{% block nadpis1a %}Šifrovačka odpovědi{% endblock nadpis1a %}</h1>
|
|
||||||
|
|
||||||
<table class="dosla_reseni">
|
|
||||||
<tr>
|
|
||||||
<th>Timestamp</th>
|
|
||||||
<th>Řešitel</th>
|
|
||||||
<th>Šifra</th>
|
|
||||||
<th>Odpověď</th>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
{% for u in object_list %}
|
|
||||||
<tr>
|
|
||||||
<td>{{ u.timestamp }}</td>
|
|
||||||
<td>{{ u.resitel }}</td>
|
|
||||||
<td>{{ u.sifra }}</td>
|
|
||||||
<td>{{ u.odpoved }}</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</table>
|
|
||||||
|
|
||||||
{% endblock content %}
|
|
|
@ -1,46 +0,0 @@
|
||||||
{% extends "base.html" %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<h1>{% block nadpis1a %}M&Mí šifrovačka{% endblock nadpis1a %}</h1>
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<h2>Zadat tajenku šifry:</h2>
|
|
||||||
|
|
||||||
<form action="{% url 'sifrovacka' %}" method="post">
|
|
||||||
<table class="form">
|
|
||||||
{{form.non_field_errors}}
|
|
||||||
{% for field in form %}
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label class="field-label{% if field.field.required %} field-required{% endif %}" for="{{ field.id_for_label }}">
|
|
||||||
{{ field.label }}
|
|
||||||
</label>
|
|
||||||
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<td {% if field.help_text %} class="field-with-comment"{% endif %}>
|
|
||||||
{{ field }}
|
|
||||||
<span class="field-comment">{{ field.help_text|safe }}</span>
|
|
||||||
</td>
|
|
||||||
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
|
|
||||||
{% if field.errors %}
|
|
||||||
<tr>
|
|
||||||
<td colspan="2"><span class="field-error">{{ field.errors }}</span></td>
|
|
||||||
</tr>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
</table>
|
|
||||||
|
|
||||||
{% csrf_token %}
|
|
||||||
|
|
||||||
<input type="submit" value="Tak pravím!">
|
|
||||||
</form>
|
|
||||||
|
|
||||||
{% endblock content %}
|
|
|
@ -1,17 +0,0 @@
|
||||||
from django.urls import path
|
|
||||||
|
|
||||||
from seminar.utils import org_required, resitel_or_org_required
|
|
||||||
from .views import SifrovackaView, SifrovackaListView
|
|
||||||
|
|
||||||
urlpatterns = [
|
|
||||||
path(
|
|
||||||
'',
|
|
||||||
resitel_or_org_required(SifrovackaView.as_view()),
|
|
||||||
name='sifrovacka'
|
|
||||||
),
|
|
||||||
path(
|
|
||||||
'odpovedi/',
|
|
||||||
org_required(SifrovackaListView.as_view()),
|
|
||||||
name='sifrovacka_odpovedi'
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -1,30 +0,0 @@
|
||||||
from django.urls import reverse
|
|
||||||
from django.views.generic import FormView, ListView
|
|
||||||
|
|
||||||
from seminar.views import formularOKView
|
|
||||||
from .forms import SifrovackaForm
|
|
||||||
from .models import OdpovedUcastnika, SpravnaOdpoved
|
|
||||||
from seminar.models.personalni import Resitel
|
|
||||||
|
|
||||||
|
|
||||||
# Create your views here.
|
|
||||||
|
|
||||||
class SifrovackaView(FormView):
|
|
||||||
template_name = 'sifrovacka/sifrovacka.html'
|
|
||||||
form_class = SifrovackaForm
|
|
||||||
|
|
||||||
def form_valid(self, form):
|
|
||||||
instance = form.save(commit=False)
|
|
||||||
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()
|
|
||||||
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>{sifra.skryty_text}</h1> <p><a href="{reverse("sifrovacka")}">Odevzdat další.</a></p><br><br><br>')
|
|
||||||
|
|
||||||
|
|
||||||
class SifrovackaListView(ListView):
|
|
||||||
template_name = 'sifrovacka/odpovedi_list.html'
|
|
||||||
model = OdpovedUcastnika
|
|
Loading…
Reference in a new issue