Výroční sraz M&M
This commit is contained in:
parent
4b6e82120d
commit
32141d457f
12 changed files with 196 additions and 0 deletions
|
@ -150,6 +150,7 @@ INSTALLED_APPS = (
|
||||||
'personalni',
|
'personalni',
|
||||||
'soustredeni',
|
'soustredeni',
|
||||||
'treenode',
|
'treenode',
|
||||||
|
'vyroci',
|
||||||
|
|
||||||
# Admin upravy:
|
# Admin upravy:
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,9 @@ urlpatterns = [
|
||||||
# REST API
|
# REST API
|
||||||
# path('api/', include(router.urls)),
|
# path('api/', include(router.urls)),
|
||||||
|
|
||||||
|
# Výroční sraz
|
||||||
|
path('', include('vyroci.urls')),
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
# This is only needed when using runserver.
|
# This is only needed when using runserver.
|
||||||
|
|
0
vyroci/__init__.py
Normal file
0
vyroci/__init__.py
Normal file
7
vyroci/admin.py
Normal file
7
vyroci/admin.py
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
from django.contrib import admin
|
||||||
|
|
||||||
|
from .models import UcastnikVyroci
|
||||||
|
|
||||||
|
# Register your models here.
|
||||||
|
|
||||||
|
admin.register(UcastnikVyroci)
|
5
vyroci/apps.py
Normal file
5
vyroci/apps.py
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
class VyrociConfig(AppConfig):
|
||||||
|
name = 'vyroci'
|
14
vyroci/forms.py
Normal file
14
vyroci/forms.py
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
from django.forms import ModelForm
|
||||||
|
from .models import UcastnikVyroci
|
||||||
|
|
||||||
|
|
||||||
|
class UcastnikVyrociForm(ModelForm):
|
||||||
|
class Meta:
|
||||||
|
model = UcastnikVyroci
|
||||||
|
fields = "__all__"
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
for field in ["kdy", "cojemam", "cislo", "dodat"]:
|
||||||
|
self.fields[field].widget.attrs['rows'] = 2
|
||||||
|
self.fields[field].widget.attrs['cols'] = 22
|
27
vyroci/migrations/0001_initial.py
Normal file
27
vyroci/migrations/0001_initial.py
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
# Generated by Django 2.2.28 on 2023-06-02 18:55
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
initial = True
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='UcastnikVyroci',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('jmeno', models.CharField(help_text='Občanská identifikace účastníka víkendovky', max_length=256, verbose_name='Jméno a přijmení')),
|
||||||
|
('prezdivka', models.CharField(help_text='Veřejná identifikace účastníka víkendovky', max_length=256, verbose_name='Přezdívka')),
|
||||||
|
('email', models.EmailField(help_text='Kontakt na účastníka víkendovky', max_length=256, verbose_name='E-mail')),
|
||||||
|
('kdy', models.TextField(max_length=256, verbose_name='Řešil nebo organizoval jsi M&M? Kdy?')),
|
||||||
|
('cojemam', models.TextField(max_length=256, verbose_name='Co znamená M&M (a proč)?')),
|
||||||
|
('cislo', models.TextField(max_length=256, verbose_name='Co v M&Mí historii značí číslo 265252859812191058636308480000000?')),
|
||||||
|
('dodat', models.TextField(blank=True, max_length=256, null=True, verbose_name='Co chci ještě dodat?')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
0
vyroci/migrations/__init__.py
Normal file
0
vyroci/migrations/__init__.py
Normal file
40
vyroci/models.py
Normal file
40
vyroci/models.py
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
# Create your models here.
|
||||||
|
|
||||||
|
|
||||||
|
class UcastnikVyroci(models.Model):
|
||||||
|
|
||||||
|
jmeno = models.CharField(
|
||||||
|
"Jméno a přijmení", max_length=256, blank=False, null=False,
|
||||||
|
help_text="Občanská identifikace účastníka víkendovky"
|
||||||
|
)
|
||||||
|
|
||||||
|
prezdivka = models.CharField(
|
||||||
|
"Přezdívka", max_length=256, blank=False, null=False,
|
||||||
|
help_text="Veřejná identifikace účastníka víkendovky"
|
||||||
|
)
|
||||||
|
|
||||||
|
email = models.EmailField(
|
||||||
|
"E-mail", max_length=256, blank=False, null=False,
|
||||||
|
help_text="Kontakt na účastníka víkendovky"
|
||||||
|
)
|
||||||
|
|
||||||
|
kdy = models.TextField(
|
||||||
|
"Řešil nebo organizoval jsi M&M? Kdy?", max_length=256, blank=False,
|
||||||
|
null=False,
|
||||||
|
)
|
||||||
|
|
||||||
|
cojemam = models.TextField(
|
||||||
|
"Co znamená M&M (a proč)?", max_length=256, blank=False, null=False,
|
||||||
|
)
|
||||||
|
|
||||||
|
cislo = models.TextField(
|
||||||
|
"Co v M&Mí historii značí číslo 265252859812191058636308480000000?",
|
||||||
|
max_length=256, blank=False, null=False,
|
||||||
|
)
|
||||||
|
|
||||||
|
dodat = models.TextField(
|
||||||
|
"Co chci ještě dodat?", max_length=256, blank=True, null=True,
|
||||||
|
)
|
||||||
|
|
56
vyroci/templates/vyroci/vyroci.html
Normal file
56
vyroci/templates/vyroci/vyroci.html
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<h1>{% block nadpis1a %}M&Mí 30!*{% endblock nadpis1a %}</h1>
|
||||||
|
|
||||||
|
<h4>*plným názvem M&Mí 265252859812191058636308480000000.</h4>
|
||||||
|
|
||||||
|
<p>Rádi bychom Tě pozvali na plánovaný M&Mí sraz, kde nalezneš možnost se setkat se současnými organizátory a účastníky, minulými organizátory a účastníky, předminulými organizátory a účastníky, předpředminulými organizátory a účastníky a jinými M&Mími legendami.</p>
|
||||||
|
|
||||||
|
<p>Těšit se můžeš na zábavnou akci pro všechny věkové kategorie. Pokud máš chuť se zúčastnit, tak neváhej a vyplň přihlašovací formulář níže (pokud plánuješ přijet jen na část víkendu, nebo s sebou někoho vzít – třeba děti, tak to napiš do poznámky). Podrobnější informace o akci budeme rozesílat přibližně dva týdny před akci.</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li> Kdy: pátek 22. – neděle 24. 9. 2023 </li>
|
||||||
|
<li> Kde: <a href="https://borovice.cz/inzerat/2587-zakladna-pratel-prirody-upirci-2">Klubovna Upírků v Libčicích n.V.</a></li>
|
||||||
|
<li> Kdo jede: Káťa, (R)adim{% for ucastnik in ucastnici %}, {{ ucastnik.prezdivka }}{% endfor %}</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Přihlašovací formulář</h2>
|
||||||
|
|
||||||
|
<p><b>Tučně</b> popsaná pole jsou povinná.</p>
|
||||||
|
|
||||||
|
<form action="{% url 'vyrocni_sraz' %}" method="post">
|
||||||
|
<table class="form">
|
||||||
|
{% 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 %}
|
||||||
|
{{form.non_field_errors}}
|
||||||
|
|
||||||
|
<input type="submit" value="Přihlásit se!">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% endblock content %}
|
11
vyroci/urls.py
Normal file
11
vyroci/urls.py
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
from django.urls import path
|
||||||
|
|
||||||
|
from .views import VyrociView
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
path(
|
||||||
|
'sraz/',
|
||||||
|
VyrociView.as_view(),
|
||||||
|
name='vyrocni_sraz'
|
||||||
|
),
|
||||||
|
]
|
32
vyroci/views.py
Normal file
32
vyroci/views.py
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
from django.views.generic import FormView
|
||||||
|
|
||||||
|
from seminar.models import Osoba
|
||||||
|
from seminar.views import formularOKView
|
||||||
|
from .forms import UcastnikVyrociForm
|
||||||
|
from .models import UcastnikVyroci
|
||||||
|
|
||||||
|
|
||||||
|
# Create your views here.
|
||||||
|
|
||||||
|
class VyrociView(FormView):
|
||||||
|
""" Zobrazí organizátorský rozcestník."""
|
||||||
|
template_name = 'vyroci/vyroci.html'
|
||||||
|
form_class = UcastnikVyrociForm
|
||||||
|
|
||||||
|
def get_context_data(self, **kwargs):
|
||||||
|
context = super().get_context_data(**kwargs)
|
||||||
|
context['ucastnici'] = UcastnikVyroci.objects.all()
|
||||||
|
return context
|
||||||
|
|
||||||
|
def form_valid(self, form):
|
||||||
|
form.save()
|
||||||
|
|
||||||
|
return formularOKView(self.request, "Úspěšně jsi se přihlásil na víkendovku")
|
||||||
|
def get_initial(self):
|
||||||
|
initial = super().get_initial()
|
||||||
|
if self.request.user.is_authenticated:
|
||||||
|
osoba = Osoba.objects.filter(user=self.request.user).first()
|
||||||
|
if osoba is not None:
|
||||||
|
initial["jmeno"] = osoba.plne_jmeno()
|
||||||
|
initial["email"] = osoba.email
|
||||||
|
return initial
|
Loading…
Reference in a new issue