Merge remote-tracking branch 'origin/master' into vylepseni_odevzdavatka
# Conflicts: # odevzdavatko/templates/odevzdavatko/detail.html
This commit is contained in:
		
						commit
						ec0174dcdd
					
				
					 8 changed files with 51 additions and 17 deletions
				
			
		|  | @ -6,4 +6,4 @@ set -exuo pipefail | |||
| ensure_web_installed | ||||
| 
 | ||||
| trap - ERR # Testy nejspíš selžou, ale nechceme kolem toho dělat další chybovou hlášku. | ||||
| ./manage.py test -v2 | ||||
| ./manage.py test -v2 --keepdb "$@" | ||||
|  |  | |||
|  | @ -40,7 +40,10 @@ DATABASES = { | |||
| 	'default': { | ||||
| 		'ENGINE': 'django.db.backends.sqlite3', | ||||
| 		'NAME': os.path.join(BASE_DIR, 'db-local.sqlite3'), | ||||
| 	} | ||||
| 		'TEST': { | ||||
| 			'NAME': os.path.join(BASE_DIR, 'db-test.sqlite3'), | ||||
| 			}, | ||||
| 	}, | ||||
| } | ||||
| #DATABASES = { | ||||
| #    'default': { | ||||
|  |  | |||
|  | @ -82,6 +82,13 @@ class NahrajReseniForm(forms.ModelForm): | |||
| 				) | ||||
| 		} | ||||
| 
 | ||||
| 	def __init__(self, *args, **kwargs): | ||||
| 		super().__init__(*args, **kwargs) | ||||
| 		# FIXME Z nějakého důvodu se do této třídy dostaneme i bez resitele | ||||
| 		if 'resitele' in self.fields: | ||||
| 			# FIXME Mnohem hezčí by to bylo u definice resitele výše, ale nepodařilo se mi to. | ||||
| 			self.fields['resitele'].required = False | ||||
| 
 | ||||
| ReseniSPrilohamiFormSet = inlineformset_factory(m.Reseni,m.PrilohaReseni,  | ||||
| 		form = NahrajReseniForm, | ||||
| 		fields = ('soubor','res_poznamka'), | ||||
|  |  | |||
|  | @ -108,7 +108,7 @@ | |||
| 		<td class="bodovani">{{ h.body_celkem }}</td> | ||||
| 		<td class="bodovani teamovaCast">{{ h.body_neprepocitane }}</td> | ||||
| 		<td class="bodovani teamovaCast">{{ h.body_neprepocitane_celkem }}</td> | ||||
| 		<td>{{ h.feedback }}</td> | ||||
| 		<td>{{ h.feedback | linebreaks }}</td> | ||||
| 	</tr> | ||||
| {% endfor %} | ||||
| </table> | ||||
|  |  | |||
|  | @ -160,7 +160,7 @@ def resitelEditView(request): | |||
| 
 | ||||
| 			if resitel_edit: | ||||
| 				## Změny v řešiteli | ||||
| 				resitel_edit.prezdivka_resitele = fcd['prezdivka_resitele'] | ||||
| 				resitel_edit.prezdivka_resitele = fcd['prezdivka_resitele'] if fcd['prezdivka_resitele'] != '' else None | ||||
| 				resitel_edit.skola = fcd['skola'] | ||||
| 				resitel_edit.rok_maturity = fcd['rok_maturity'] | ||||
| 				resitel_edit.zasilat = fcd['zasilat'] | ||||
|  |  | |||
							
								
								
									
										18
									
								
								seminar/migrations/0111_nikam2nezasilat_papirove.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								seminar/migrations/0111_nikam2nezasilat_papirove.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,18 @@ | |||
| # Generated by Django 2.2.28 on 2023-01-30 19:14 | ||||
| 
 | ||||
| from django.db import migrations, models | ||||
| 
 | ||||
| 
 | ||||
| class Migration(migrations.Migration): | ||||
| 
 | ||||
|     dependencies = [ | ||||
|         ('seminar', '0110_resitel_prezdivka'), | ||||
|     ] | ||||
| 
 | ||||
|     operations = [ | ||||
|         migrations.AlterField( | ||||
|             model_name='resitel', | ||||
|             name='zasilat', | ||||
|             field=models.CharField(choices=[('domu', 'Domů'), ('do_skoly', 'Do školy'), ('nikam', 'Nezasílat papírově')], default='domu', max_length=32, verbose_name='kam zasílat'), | ||||
|         ), | ||||
|     ] | ||||
|  | @ -229,7 +229,7 @@ class Resitel(SeminarModelBase): | |||
| 	ZASILAT_CHOICES = [ | ||||
| 		(ZASILAT_DOMU, 'Domů'), | ||||
| 		(ZASILAT_DO_SKOLY, 'Do školy'), | ||||
| 		(ZASILAT_NIKAM, 'Nikam'), | ||||
| 		(ZASILAT_NIKAM, 'Nezasílat papírově'), | ||||
| 		] | ||||
| 
 | ||||
| 	zasilat = models.CharField('kam zasílat', max_length=32, choices=ZASILAT_CHOICES, blank=False, default=ZASILAT_DOMU) | ||||
|  |  | |||
|  | @ -270,15 +270,17 @@ class Cislo(SeminarModelBase): | |||
| 			   'Vaše M&M\n'.format(odkaz) | ||||
| 
 | ||||
| 		# Prijemci e-mailu | ||||
| 		emaily = map(lambda r: r.osoba.email, filter(lambda r: r.zasilat_cislo_emailem, aktivniResitele(self))) | ||||
| 		resitele_vsichni = aktivniResitele(self).filter(zasilat_cislo_emailem=True) | ||||
| 
 | ||||
| 		def posli(text, resitele): | ||||
| 			emaily = map(lambda resitel: resitel.osoba.email, resitele) | ||||
| 			if not settings.POSLI_MAILOVOU_NOTIFIKACI: | ||||
| 				print("Poslal bych upozornění na tyto adresy: ", " ".join(emaily)) | ||||
| 				return | ||||
| 
 | ||||
| 			email = EmailMessage( | ||||
| 				subject=predmet, | ||||
| 			body=text_mailu, | ||||
| 				body=text, | ||||
| 				from_email=poslat_z_mailu, | ||||
| 				bcc=list(emaily) | ||||
| 				#bcc = příjemci skryté kopie | ||||
|  | @ -286,6 +288,10 @@ class Cislo(SeminarModelBase): | |||
| 
 | ||||
| 			email.send() | ||||
| 
 | ||||
| 		posli(text_mailu, resitele_vsichni.filter(zasilat=pm.Resitel.ZASILAT_NIKAM)) | ||||
| 		posli(text_mailu + 'P. S. Také by vám brzy měla přijít papírová verze. Připomínáme, že pokud papírovou verzi čísla nevyužijete, můžete v https://mam.mff.cuni.cz/resitel/osobni-udaje/ zaškrtnout, abychom vám ji neposílali. Děkujeme. (Čísla vždy můžete nalézt v našem archivu a dál vám budou chodit e-mailem.)\n', | ||||
| 			  resitele_vsichni.exclude(zasilat=pm.Resitel.ZASILAT_NIKAM)) | ||||
| 
 | ||||
| 	def save(self, *args, **kwargs): | ||||
| 		super().save(*args, **kwargs) | ||||
| 		self.vygeneruj_nahled() | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue