Přidáno číslo ke článku
This commit is contained in:
		
							parent
							
								
									1855eac801
								
							
						
					
					
						commit
						67e107a9ec
					
				
					 2 changed files with 47 additions and 1 deletions
				
			
		
							
								
								
									
										43
									
								
								seminar/migrations/0084_clanek_cislo.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								seminar/migrations/0084_clanek_cislo.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,43 @@ | |||
| # Generated by Django 2.2.13 on 2020-06-17 19:06 | ||||
| 
 | ||||
| from django.db import migrations, models | ||||
| import django.db.models.deletion | ||||
| from seminar.treelib import get_parent | ||||
| 
 | ||||
| def najdi_cislo(apps, schema_editor): | ||||
| 	# | ||||
| 	Clanek = apps.get_model('seminar', 'Clanek') | ||||
| 	Hodnoceni = apps.get_model('seminar', 'Hodnoceni') | ||||
| 	Reseni = apps.get_model('seminar', 'Reseni') | ||||
| 	ReseniNode = apps.get_model('seminar', 'ReseniNode') | ||||
| 	CisloNode = apps.get_model('seminar', 'CisloNode') | ||||
| 	 | ||||
| 	for c in Clanek.objects.all(): | ||||
| 		reseni = c.reseni_set | ||||
| 		if (len(reseni) != 1): | ||||
| 			raise ValueError("Článek k sobě má nejedno řešení!") | ||||
| 		r = reseni[0] | ||||
| 		aktualniNode = r.reseninode | ||||
| 		while aktualniNode is not None: | ||||
| 			if isinstance(aktualniNode, CisloNode): | ||||
| 				c.cislo = aktualniNode.cislo | ||||
| 				c.save() | ||||
| 				break | ||||
| 			aktualniNode = get_parent() | ||||
| 		 | ||||
| 
 | ||||
| 
 | ||||
| class Migration(migrations.Migration): | ||||
| 
 | ||||
|     dependencies = [ | ||||
|         ('seminar', '0083_auto_20200506_1952'), | ||||
|     ] | ||||
| 
 | ||||
|     operations = [ | ||||
|         migrations.AddField( | ||||
|             model_name='clanek', | ||||
|             name='cislo', | ||||
|             field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='vydane_clanky', to='seminar.Cislo', verbose_name='číslo vydání'), | ||||
|         ), | ||||
| 	migrations.RunPython(najdi_cislo), | ||||
|     ] | ||||
|  | @ -733,7 +733,7 @@ class Problem(SeminarModelBase,PolymorphicModel): | |||
| 		# FIXME: Tohle se liší podle typu problému, má se udělat polymorfně. | ||||
| 		# Zatím je tu jen dummy fail-safe default: nic není veřejné. | ||||
| 		return False | ||||
|                 # FIXME: Tohle je blbost | ||||
| 		# FIXME: Tohle je blbost | ||||
| 		return (self.cislo_zadani and self.cislo_zadani.verejne()) | ||||
| 	verejne.boolean = True | ||||
| 
 | ||||
|  | @ -795,6 +795,9 @@ class Clanek(Problem): | |||
| 		verbose_name = 'Článek' | ||||
| 		verbose_name_plural = 'Články' | ||||
| 	 | ||||
| 	cislo = models.ForeignKey(Cislo, blank=True, null=True, on_delete=models.PROTECT, | ||||
| 		verbose_name='číslo vydání', related_name='vydane_clanky') | ||||
| 
 | ||||
| 	def kod_v_rocniku(self): | ||||
| 		if self.stav == 'zadany': | ||||
| # Nemělo by být potřeba | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 M&M testovací uživatel na Pavlově notebooku
						M&M testovací uživatel na Pavlově notebooku