Fix: 0.5 · #1237
This commit is contained in:
		
							parent
							
								
									c17afece9d
								
							
						
					
					
						commit
						0d17b45011
					
				
					 7 changed files with 50 additions and 1 deletions
				
			
		|  | @ -32,6 +32,7 @@ class PrihlaskaForm(PasswordResetForm): | ||||||
| 			help_text='Tímto jménem se následně budeš přihlašovat pro odevzdání řešení a další činnosti v semináři') | 			help_text='Tímto jménem se následně budeš přihlašovat pro odevzdání řešení a další činnosti v semináři') | ||||||
| 
 | 
 | ||||||
| 	jmeno = forms.CharField(label='Jméno', max_length=256, required=True) | 	jmeno = forms.CharField(label='Jméno', max_length=256, required=True) | ||||||
|  | 	prezdivka_resitele = forms.CharField(label='Přezdívka (veřejná)', max_length=256, required=False) | ||||||
| 	prijmeni = forms.CharField(label='Příjmení', max_length=256, required=True) | 	prijmeni = forms.CharField(label='Příjmení', max_length=256, required=True) | ||||||
| 	pohlavi_muz = forms.ChoiceField(label='Pohlaví', | 	pohlavi_muz = forms.ChoiceField(label='Pohlaví', | ||||||
| 			choices = ((True,'muž'),(False,'žena')), required=True) | 			choices = ((True,'muž'),(False,'žena')), required=True) | ||||||
|  | @ -105,6 +106,17 @@ class PrihlaskaForm(PasswordResetForm): | ||||||
| 			pass | 			pass | ||||||
| 		return email | 		return email | ||||||
| 
 | 
 | ||||||
|  | 	def clean_prezdivka_resitele(self): | ||||||
|  | 		prezdivka_resitele = self.cleaned_data.get('prezdivka_resitele') | ||||||
|  | 		if prezdivka_resitele == '': | ||||||
|  | 			return prezdivka_resitele | ||||||
|  | 		try: | ||||||
|  | 			Resitel.objects.get(prezdivka_resitele=prezdivka_resitele) | ||||||
|  | 			raise forms.ValidationError('Přezdívka je již použita') | ||||||
|  | 		except ObjectDoesNotExist: | ||||||
|  | 			pass | ||||||
|  | 		return prezdivka_resitele | ||||||
|  | 
 | ||||||
| 	def clean_zasilat(self): | 	def clean_zasilat(self): | ||||||
| 		zasilat = self.cleaned_data.get('zasilat') | 		zasilat = self.cleaned_data.get('zasilat') | ||||||
| 		ulice = self.cleaned_data.get('ulice') | 		ulice = self.cleaned_data.get('ulice') | ||||||
|  | @ -138,6 +150,7 @@ class ProfileEditForm(forms.Form): | ||||||
| 			disabled=True) | 			disabled=True) | ||||||
| 
 | 
 | ||||||
| 	jmeno = forms.CharField(label='Jméno', max_length=256, required=True) | 	jmeno = forms.CharField(label='Jméno', max_length=256, required=True) | ||||||
|  | 	prezdivka_resitele = forms.CharField(label='Přezdívka (veřejná)', max_length=256, required=False) | ||||||
| 	prijmeni = forms.CharField(label='Příjmení', max_length=256, required=True) | 	prijmeni = forms.CharField(label='Příjmení', max_length=256, required=True) | ||||||
| 	pohlavi_muz = forms.ChoiceField(label='Pohlaví', | 	pohlavi_muz = forms.ChoiceField(label='Pohlaví', | ||||||
| 			choices = ((True,'muž'),(False,'žena')), required=True) | 			choices = ((True,'muž'),(False,'žena')), required=True) | ||||||
|  | @ -190,6 +203,18 @@ class ProfileEditForm(forms.Form): | ||||||
| #			pass | #			pass | ||||||
| #		return username | #		return username | ||||||
| # | # | ||||||
|  | 
 | ||||||
|  | 	def clean_prezdivka_resitele(self): | ||||||
|  | 		prezdivka_resitele = self.cleaned_data.get('prezdivka_resitele') | ||||||
|  | 		if prezdivka_resitele == '': | ||||||
|  | 			return prezdivka_resitele | ||||||
|  | 		try: | ||||||
|  | 			Resitel.objects.get(prezdivka_resitele=prezdivka_resitele) | ||||||
|  | 			raise forms.ValidationError('Přezdívka je již použita') | ||||||
|  | 		except ObjectDoesNotExist: | ||||||
|  | 			pass | ||||||
|  | 		return prezdivka_resitele | ||||||
|  | 
 | ||||||
| 	def clean_email(self): | 	def clean_email(self): | ||||||
| 		err_logger = logging.getLogger('seminar.prihlaska.problem') | 		err_logger = logging.getLogger('seminar.prihlaska.problem') | ||||||
| 		email = self.cleaned_data.get('email') | 		email = self.cleaned_data.get('email') | ||||||
|  |  | ||||||
|  | @ -44,6 +44,7 @@ | ||||||
|     </h4> |     </h4> | ||||||
|       <table class="form"> |       <table class="form"> | ||||||
|        {% include "personalni/udaje/prihlaska_field.html" with field=form.jmeno %} |        {% include "personalni/udaje/prihlaska_field.html" with field=form.jmeno %} | ||||||
|  |        {% include "personalni/udaje/prihlaska_field.html" with field=form.prezdivka_resitele %} | ||||||
|        {% include "personalni/udaje/prihlaska_field.html" with field=form.prijmeni %} |        {% include "personalni/udaje/prihlaska_field.html" with field=form.prijmeni %} | ||||||
|        {% include "personalni/udaje/prihlaska_field.html" with field=form.pohlavi_muz%} |        {% include "personalni/udaje/prihlaska_field.html" with field=form.pohlavi_muz%} | ||||||
|        {% include "personalni/udaje/prihlaska_field.html" with field=form.email %} |        {% include "personalni/udaje/prihlaska_field.html" with field=form.email %} | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ Získáváme od Tebe údaje vyplněné v přihlášce do semináře (jméno, př | ||||||
| Slibujeme Ti, že Tvá osobní data nezneužijeme k ničemu, co by nesouviselo s M&M nebo s dalšími aktivitami Matfyzu, a nikdy je nepředáme nikomu cizímu. Údaje využíváme k zajištění chodu semináře a také je sdílíme s ostatními propagačními akcemi Matfyzu, abychom mohli vyhodnocovat úspěšnost akcí. Pokud budeš mít zájem, budeme Ti také posílat zajímavé zprávy a novinky týkajíci se Matfyzu. | Slibujeme Ti, že Tvá osobní data nezneužijeme k ničemu, co by nesouviselo s M&M nebo s dalšími aktivitami Matfyzu, a nikdy je nepředáme nikomu cizímu. Údaje využíváme k zajištění chodu semináře a také je sdílíme s ostatními propagačními akcemi Matfyzu, abychom mohli vyhodnocovat úspěšnost akcí. Pokud budeš mít zájem, budeme Ti také posílat zajímavé zprávy a novinky týkajíci se Matfyzu. | ||||||
| </p> | </p> | ||||||
| <p class="gdpr"> | <p class="gdpr"> | ||||||
| Veřejně vystavujeme pouze výsledkové listiny, které také uchováváme pro archivní účely. Pokud ale z nějakého důvodu nebudeš chtít mít své jméno či školu uvedené ve výsledkové listině, není problém to zařídit, napiš nám. Z tištěných materiálů samozřejmě údaje už odstranit nemůžeme. | Veřejně vystavujeme pouze seznam přezdívek (pro výběr spoluřešitelů k řešení) a výsledkové listiny, které také uchováváme pro archivní účely. Pokud ale z nějakého důvodu nebudeš chtít mít své jméno či školu uvedené ve výsledkové listině, není problém to zařídit, napiš nám. Z tištěných materiálů samozřejmě údaje už odstranit nemůžeme. | ||||||
| </p> | </p> | ||||||
| <p class="gdpr"> | <p class="gdpr"> | ||||||
| Na soustředěních a dalších akcích semináře navíc pořizujeme fotografie a videozáznamy a používáme je ke zpravodajským a propagačním účelům. Pro propagační účely si od Tebe vyžádáme samostatný souhlas na začátku akce. | Na soustředěních a dalších akcích semináře navíc pořizujeme fotografie a videozáznamy a používáme je ke zpravodajským a propagačním účelům. Pro propagační účely si od Tebe vyžádáme samostatný souhlas na začátku akce. | ||||||
|  |  | ||||||
|  | @ -46,6 +46,7 @@ | ||||||
|         </h4> |         </h4> | ||||||
|           <table class="form"> |           <table class="form"> | ||||||
|             {% include "personalni/udaje/prihlaska_field.html" with field=form.jmeno %} |             {% include "personalni/udaje/prihlaska_field.html" with field=form.jmeno %} | ||||||
|  |             {% include "personalni/udaje/prihlaska_field.html" with field=form.prezdivka_resitele %} | ||||||
|             {% include "personalni/udaje/prihlaska_field.html" with field=form.prijmeni %} |             {% include "personalni/udaje/prihlaska_field.html" with field=form.prijmeni %} | ||||||
|             {% include "personalni/udaje/prihlaska_field.html" with field=form.pohlavi_muz%} |             {% include "personalni/udaje/prihlaska_field.html" with field=form.pohlavi_muz%} | ||||||
|             {% include "personalni/udaje/prihlaska_field.html" with field=form.email %} |             {% include "personalni/udaje/prihlaska_field.html" with field=form.email %} | ||||||
|  |  | ||||||
|  | @ -160,6 +160,7 @@ def resitelEditView(request): | ||||||
| 
 | 
 | ||||||
| 			if resitel_edit: | 			if resitel_edit: | ||||||
| 				## Změny v řešiteli | 				## Změny v řešiteli | ||||||
|  | 				resitel_edit.prezdivka_resitele = fcd['prezdivka_resitele'] | ||||||
| 				resitel_edit.skola = fcd['skola'] | 				resitel_edit.skola = fcd['skola'] | ||||||
| 				resitel_edit.rok_maturity = fcd['rok_maturity'] | 				resitel_edit.rok_maturity = fcd['rok_maturity'] | ||||||
| 				resitel_edit.zasilat = fcd['zasilat'] | 				resitel_edit.zasilat = fcd['zasilat'] | ||||||
|  | @ -263,6 +264,7 @@ def prihlaskaView(request): | ||||||
| 					err_logger.warning(f'Zaregistrovala se osoba s kolizním jménem. ID osob: {[o.id for o in kolize]}') | 					err_logger.warning(f'Zaregistrovala se osoba s kolizním jménem. ID osob: {[o.id for o in kolize]}') | ||||||
| 
 | 
 | ||||||
| 				r = s.Resitel( | 				r = s.Resitel( | ||||||
|  | 					prezdivka_resitele=fcd['prezdivka_resitele'], | ||||||
| 					rok_maturity = fcd['rok_maturity'], | 					rok_maturity = fcd['rok_maturity'], | ||||||
| 					zasilat = fcd['zasilat'], | 					zasilat = fcd['zasilat'], | ||||||
| 					zasilat_cislo_emailem = fcd['zasilat_cislo_emailem'] | 					zasilat_cislo_emailem = fcd['zasilat_cislo_emailem'] | ||||||
|  |  | ||||||
							
								
								
									
										18
									
								
								seminar/migrations/0110_resitel_prezdivka.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								seminar/migrations/0110_resitel_prezdivka.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,18 @@ | ||||||
|  | # Generated by Django 2.2.28 on 2022-11-21 22:07 | ||||||
|  | 
 | ||||||
|  | from django.db import migrations, models | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class Migration(migrations.Migration): | ||||||
|  | 
 | ||||||
|  |     dependencies = [ | ||||||
|  |         ('seminar', '0109_hodnoceni_feedback'), | ||||||
|  |     ] | ||||||
|  | 
 | ||||||
|  |     operations = [ | ||||||
|  |         migrations.AddField( | ||||||
|  |             model_name='resitel', | ||||||
|  |             name='prezdivka_resitele', | ||||||
|  |             field=models.CharField(blank=True, max_length=256, null=True, unique=True, verbose_name='přezdívka řešitele'), | ||||||
|  |         ), | ||||||
|  |     ] | ||||||
|  | @ -211,6 +211,8 @@ class Resitel(SeminarModelBase): | ||||||
| 	# Interní ID | 	# Interní ID | ||||||
| 	id = models.AutoField(primary_key = True) | 	id = models.AutoField(primary_key = True) | ||||||
| 
 | 
 | ||||||
|  | 	prezdivka_resitele = models.CharField('přezdívka řešitele', blank=True, null=True, max_length=256, unique=True) | ||||||
|  | 
 | ||||||
| 	osoba = models.OneToOneField(Osoba, blank=False, null=False, verbose_name='osoba', | 	osoba = models.OneToOneField(Osoba, blank=False, null=False, verbose_name='osoba', | ||||||
| 		on_delete=models.PROTECT) | 		on_delete=models.PROTECT) | ||||||
| 	 | 	 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue