DB views pro body za vsechny rocniky, prepis views na citelnejsi
This commit is contained in:
		
							parent
							
								
									c347e75d38
								
							
						
					
					
						commit
						a35c9671cd
					
				
					 2 changed files with 89 additions and 12 deletions
				
			
		
							
								
								
									
										75
									
								
								seminar/migrations/0028_add_body_celkem_views.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								seminar/migrations/0028_add_body_celkem_views.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,75 @@ | |||
| # -*- coding: utf-8 -*- | ||||
| from __future__ import unicode_literals | ||||
| 
 | ||||
| from django.db import models, migrations | ||||
| import django_countries.fields | ||||
| import seminar.models | ||||
| import django.utils.timezone | ||||
| from django.conf import settings | ||||
| 
 | ||||
| CREATE_VIEWS=""" | ||||
| drop view seminar_body_k_cislu; | ||||
| drop view seminar_body_za_cislo; | ||||
| 
 | ||||
| create view seminar_body_za_cislo as | ||||
|   select | ||||
|     seminar_reseni.cislo_body_id || '-' || seminar_reseni.resitel_id as id, | ||||
|     seminar_reseni.cislo_body_id as cislo_id, | ||||
|     seminar_reseni.resitel_id as resitel_id, | ||||
|     seminar_cisla.cislo as cislo, | ||||
|     seminar_cisla.rocnik_id as rocnik_id, | ||||
|     seminar_rocniky.rocnik as rocnik, | ||||
|     seminar_cisla.verejna_vysledkovka as verejna_vysledkovka, | ||||
|     sum(seminar_reseni.body) as body | ||||
|   from | ||||
|     seminar_reseni | ||||
|     inner join seminar_cisla on seminar_reseni.cislo_body_id = seminar_cisla.id | ||||
|     inner join seminar_rocniky on seminar_cisla.rocnik_id = seminar_rocniky.id | ||||
|   group by seminar_reseni.cislo_body_id, seminar_reseni.resitel_id, seminar_cisla.cislo, | ||||
|     seminar_cisla.rocnik_id, seminar_rocniky.rocnik, seminar_cisla.verejna_vysledkovka | ||||
|   order by body desc; | ||||
| 
 | ||||
| create view seminar_body_k_cislu_rocnik as | ||||
|   select | ||||
|     akt_body.id as id, | ||||
|     akt_body.cislo_id as cislo_id, | ||||
|     akt_body.resitel_id as resitel_id, | ||||
|     akt_body.body as body, | ||||
|     sum(min_body.body) as body_celkem | ||||
|   from | ||||
|     seminar_body_za_cislo as akt_body | ||||
|     inner join seminar_body_za_cislo as min_body on | ||||
|       (akt_body.resitel_id = min_body.resitel_id and | ||||
|         (akt_body.rocnik = min_body.rocnik and akt_body.cislo >= min_body.cislo) | ||||
|       ) | ||||
|   group by akt_body.id, akt_body.cislo_id, akt_body.resitel_id, akt_body.body | ||||
|   order by body_celkem desc; | ||||
| 
 | ||||
| create view seminar_body_k_cislu_odjakziva as | ||||
|   select | ||||
|     akt_body.id as id, | ||||
|     akt_body.cislo_id as cislo_id, | ||||
|     akt_body.resitel_id as resitel_id, | ||||
|     akt_body.body as body, | ||||
|     sum(min_body.body) as body_celkem | ||||
|   from | ||||
|     seminar_body_za_cislo as akt_body | ||||
|     inner join seminar_body_za_cislo as min_body on | ||||
|       (akt_body.resitel_id = min_body.resitel_id and | ||||
|         ((akt_body.rocnik = min_body.rocnik and akt_body.cislo >= min_body.cislo) or | ||||
|          (akt_body.rocnik < min_body.rocnik) | ||||
|         ) | ||||
|       ) | ||||
|   group by akt_body.id, akt_body.cislo_id, akt_body.resitel_id, akt_body.body | ||||
|   order by body_celkem desc; | ||||
| 
 | ||||
| """ | ||||
| 
 | ||||
| class Migration(migrations.Migration): | ||||
| 
 | ||||
|     dependencies = [("seminar", "0027_export_flag_a_typ_akce")] | ||||
| 
 | ||||
|     operations = [ | ||||
|         migrations.RunSQL(sql=CREATE_VIEWS) | ||||
|         ] | ||||
| 
 | ||||
|  | @ -650,9 +650,9 @@ class VysledkyBase(SeminarModelBase): | |||
| 
 | ||||
|     def __str__(self): | ||||
|         return force_unicode(u"%s: %sb (%s)" % (self.resitel.plne_jmeno(), self.body, str(self.cislo))) | ||||
|         # NOTE: DB HOG (ale nepouzivany) | ||||
|         # NOTE: DB zatez pri vypisu (ale nepouzivany) | ||||
| 
 | ||||
| 
 | ||||
| @python_2_unicode_compatible | ||||
| class VysledkyZaCislo(VysledkyBase): | ||||
| 
 | ||||
|     class Meta: | ||||
|  | @ -660,25 +660,27 @@ class VysledkyZaCislo(VysledkyBase): | |||
|         abstract = False | ||||
|         managed = False | ||||
| 
 | ||||
|     def __str__(self): | ||||
|         # NOTE: DB HOG (ale nepouzivany) | ||||
|         return force_unicode(u"%s: %sb (za %s)" % (self.resitel.plne_jmeno(), self.body, str(self.cislo))) | ||||
| 
 | ||||
| 
 | ||||
| @python_2_unicode_compatible | ||||
| class VysledkyKCislu(VysledkyBase): | ||||
| 
 | ||||
|     class Meta: | ||||
|         db_table = 'seminar_body_k_cislu' | ||||
|         db_table = 'seminar_body_k_cislu_rocnik' | ||||
|         abstract = False | ||||
|         managed = False | ||||
| 
 | ||||
|     body_celkem = models.DecimalField(max_digits=8, decimal_places=1, db_column='body_celkem', | ||||
|             verbose_name=u'body celkem do čísla') | ||||
|             verbose_name=u'body celkem do čísla (za ročník)') | ||||
| 
 | ||||
|     def __str__(self): | ||||
|         # NOTE: DB HOG (ale nepouzivany) | ||||
|         return force_unicode(u"%s: %sb / %sb (do %s)" % (self.resitel.plne_jmeno(), self.body, self.body_celkem, str(self.cislo))) | ||||
| 
 | ||||
| class VysledkyKCisluOdjakziva(VysledkyBase): | ||||
| 
 | ||||
|     class Meta: | ||||
|         db_table = 'seminar_body_k_cislu_odjakziva' | ||||
|         abstract = False | ||||
|         managed = False | ||||
| 
 | ||||
|     body_celkem = models.DecimalField(max_digits=8, decimal_places=1, db_column='body_celkem', | ||||
|             verbose_name=u'body celkem do čísla (i minulé ročníky)') | ||||
| 
 | ||||
| 
 | ||||
| @reversion.register(ignore_duplicate_revisions=True) | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Tomas Gavenciak
						Tomas Gavenciak