Merge pull request 'Výroční sraz M&M' (!32) from vyroci into master
Reviewed-on: #32
This commit is contained in:
		
						commit
						b14395f91a
					
				
					 13 changed files with 243 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('sraz/30-let/', 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.site.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říjmení')), | ||||||
|  |                 ('prezdivka', models.CharField(help_text='Zveřejňovaná identifikace účastníka víkendovky', max_length=256, verbose_name='Přezdívka (do seznamu účastníků, například Bětka N.)')), | ||||||
|  |                 ('email', models.EmailField(help_text='Kontakt na účastníka víkendovky', max_length=256, verbose_name='E-mail')), | ||||||
|  |                 ('kdy', models.TextField(verbose_name='Řešil nebo organizoval jsi M&M? Kdy?')), | ||||||
|  |                 ('cojemam', models.TextField(verbose_name='Co znamená M&M (a proč)?')), | ||||||
|  |                 ('cislo', models.TextField(verbose_name='Co v M&Mí historii značí číslo 265252859812191058636308480000000?')), | ||||||
|  |                 ('dodat', models.TextField(blank=True, 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říjmení", max_length=256, blank=False, null=False, | ||||||
|  | 		help_text="Občanská identifikace účastníka víkendovky" | ||||||
|  | 	) | ||||||
|  | 
 | ||||||
|  | 	prezdivka = models.CharField( | ||||||
|  | 		"Přezdívka (do seznamu účastníků, například Bětka N.)", max_length=256, blank=False, null=False, | ||||||
|  | 		help_text="Zveřejňovaná 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?", blank=False, | ||||||
|  | 		null=False, | ||||||
|  | 	) | ||||||
|  | 
 | ||||||
|  | 	cojemam = models.TextField( | ||||||
|  | 		"Co znamená M&M (a proč)?", blank=False, null=False, | ||||||
|  | 	) | ||||||
|  | 
 | ||||||
|  | 	cislo = models.TextField( | ||||||
|  | 		"Co v M&Mí historii značí číslo 265252859812191058636308480000000?", | ||||||
|  | 		blank=False, null=False, | ||||||
|  | 	) | ||||||
|  | 
 | ||||||
|  | 	dodat = models.TextField( | ||||||
|  | 		"Co chci ještě dodat?", blank=True, null=True, | ||||||
|  | 	) | ||||||
|  | 
 | ||||||
							
								
								
									
										62
									
								
								vyroci/templates/vyroci/vyroci.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								vyroci/templates/vyroci/vyroci.html
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,62 @@ | ||||||
|  | {% extends "base.html" %} | ||||||
|  | 
 | ||||||
|  | {% block content %} | ||||||
|  | 
 | ||||||
|  |   <br> | ||||||
|  | 
 | ||||||
|  |   <h1>{% block nadpis1a %}M&Mí 30!*{% endblock nadpis1a %}</h1> | ||||||
|  | 
 | ||||||
|  |   <br> | ||||||
|  | 
 | ||||||
|  |   <h4>*plným názvem M&Mí 265252859812191058636308480000000.</h4> | ||||||
|  | 
 | ||||||
|  |   <br> | ||||||
|  | 
 | ||||||
|  |   <p>Rádi bychom Tě pozvali na plánovaný M&Mí sraz, kde nalezneš možnost se setkat se současnými organizátory, 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 akcí.</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: {% for ucastnik in ucastnici %}{% if not forloop.first %}, {% endif %}{{ 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"> | ||||||
|  |       {{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="Přihlásit se!"> | ||||||
|  |   </form> | ||||||
|  | 
 | ||||||
|  | {% endblock content %} | ||||||
							
								
								
									
										31
									
								
								vyroci/templates/vyroci/vyroci_list.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								vyroci/templates/vyroci/vyroci_list.html
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,31 @@ | ||||||
|  | {% extends "base.html" %} | ||||||
|  | 
 | ||||||
|  | {% block content %} | ||||||
|  | 
 | ||||||
|  |   <h1>{% block nadpis1a %}M&Mí 30! odpovědi{% endblock nadpis1a %}</h1> | ||||||
|  | 
 | ||||||
|  |   <table class="dosla_reseni"> | ||||||
|  |     <tr> | ||||||
|  |       <th>Jméno</th> | ||||||
|  |       <th>Přezdívka</th> | ||||||
|  |       <th>E-mail</th> | ||||||
|  |       <th>Kdy účastník/org</th> | ||||||
|  |       <th>Co znamená M&M?</th> | ||||||
|  |       <th>Co znamená číslo?</th> | ||||||
|  |       <th>Něco dodat?</th> | ||||||
|  |     </tr> | ||||||
|  | 
 | ||||||
|  |     {% for u in object_list %} | ||||||
|  |       <tr> | ||||||
|  |         <td>{{ u.jmeno }}</td> | ||||||
|  |         <td>{{ u.prezdivka }}</td> | ||||||
|  |         <td>{{ u.email }}</td> | ||||||
|  |         <td style="word-break: break-all">{{ u.kdy }}</td> | ||||||
|  |         <td style="word-break: break-all">{{ u.cojemam }}</td> | ||||||
|  |         <td style="word-break: break-all">{{ u.cislo }}</td> | ||||||
|  |         <td style="word-break: break-all">{{ u.dodat }}</td> | ||||||
|  |       </tr> | ||||||
|  |     {% endfor %} | ||||||
|  |   </table> | ||||||
|  | 
 | ||||||
|  | {% endblock content %} | ||||||
							
								
								
									
										17
									
								
								vyroci/urls.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								vyroci/urls.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,17 @@ | ||||||
|  | from django.urls import path | ||||||
|  | 
 | ||||||
|  | from seminar.utils import org_required | ||||||
|  | from .views import VyrociView, VyrociListView | ||||||
|  | 
 | ||||||
|  | urlpatterns = [ | ||||||
|  | 	path( | ||||||
|  | 		'', | ||||||
|  | 		VyrociView.as_view(), | ||||||
|  | 		name='vyrocni_sraz' | ||||||
|  | 	), | ||||||
|  | 	path( | ||||||
|  | 		'ucastnici/', | ||||||
|  | 		org_required(VyrociListView.as_view()), | ||||||
|  | 		name='vyrocni_sraz_ucastnici' | ||||||
|  | 	), | ||||||
|  | ] | ||||||
							
								
								
									
										36
									
								
								vyroci/views.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								vyroci/views.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,36 @@ | ||||||
|  | from django.views.generic import FormView, ListView | ||||||
|  | 
 | ||||||
|  | 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): | ||||||
|  | 	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ě ses přihlásil na sraz") | ||||||
|  | 	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 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class VyrociListView(ListView): | ||||||
|  | 	template_name = 'vyroci/vyroci_list.html' | ||||||
|  | 	model = UcastnikVyroci | ||||||
		Loading…
	
		Reference in a new issue