Cache a zrychleni na rocniky (hodne) a tez soustredeni_resitele
This commit is contained in:
		
							parent
							
								
									a1505485a1
								
							
						
					
					
						commit
						93b66fe0ec
					
				
					 2 changed files with 24 additions and 10 deletions
				
			
		|  | @ -90,6 +90,9 @@ class Soustredeni_UcastniciInline(admin.TabularInline): | |||
|     fields = ['resitel', 'poznamka', ] | ||||
|     extra = 0 | ||||
| 
 | ||||
|     def get_queryset(self, request): | ||||
|         qs = super(Soustredeni_UcastniciInline, self).get_queryset(request) | ||||
|         return qs.select_related('resitel', 'soustredeni') | ||||
| 
 | ||||
| ### Resitel | ||||
| 
 | ||||
|  |  | |||
|  | @ -10,6 +10,8 @@ from django.utils.encoding import python_2_unicode_compatible | |||
| from django.utils.encoding import force_unicode | ||||
| from django.utils.text import slugify | ||||
| from django.core.urlresolvers import reverse | ||||
| from django.core.cache import cache | ||||
| 
 | ||||
| 
 | ||||
| from django_countries.fields import CountryField | ||||
| from solo.models import SingletonModel | ||||
|  | @ -19,7 +21,6 @@ import reversion | |||
| 
 | ||||
| from seminar.utils import roman | ||||
| 
 | ||||
| # TODO společná báze (admin url, url, veřejné, ...) | ||||
| class SeminarModelBase(models.Model): | ||||
| 
 | ||||
|     class Meta: | ||||
|  | @ -230,6 +231,16 @@ class Rocnik(SeminarModelBase): | |||
|     def verejne_url(self): | ||||
|         return reverse('seminar_rocnik', kwargs={'pk': self.id}) | ||||
| 
 | ||||
|     @classmethod | ||||
|     def cached_rocnik(cls, r_id): | ||||
|         name = 'rocnik_%s' % (r_id, ) | ||||
|         c = cache.get(name) | ||||
|         if c is None: | ||||
|             c = cls.objects.get(id=r_id) | ||||
|             cache.set(name, c, 300) | ||||
|         return c | ||||
|          | ||||
| 
 | ||||
| 
 | ||||
| @reversion.register(ignore_duplicate_revisions=True) | ||||
| @python_2_unicode_compatible | ||||
|  | @ -239,7 +250,7 @@ class Cislo(SeminarModelBase): | |||
|         db_table = 'seminar_cisla' | ||||
|         verbose_name = u'Číslo' | ||||
|         verbose_name_plural = u'Čísla' | ||||
|         ordering = ['rocnik_id', 'cislo'] | ||||
|         ordering = ['rocnik__rocnik', 'cislo'] | ||||
| 
 | ||||
|     # Interní ID | ||||
|     id = models.AutoField(primary_key = True) | ||||
|  | @ -265,9 +276,9 @@ class Cislo(SeminarModelBase): | |||
|     kod.short_description = u'Kód čísla' | ||||
| 
 | ||||
|     def __str__(self): | ||||
|         #TODO: DB HOG | ||||
|         #return force_unicode(u'%s' % (self.kod(),)) | ||||
|         return force_unicode(u'%s' % (self.cislo,)) | ||||
|         # Potenciální DB HOG, pokud by se ročník neckešoval | ||||
|         r = Rocnik.cached_rocnik(self.rocnik_id) | ||||
|         return force_unicode(u'%s.%s' % (r.rocnik, self.cislo, )) | ||||
| 
 | ||||
|     def verejne(self): | ||||
|         return self.verejne_db | ||||
|  | @ -416,7 +427,7 @@ class Reseni(SeminarModelBase): | |||
| 
 | ||||
|     def __str__(self): | ||||
|         return force_unicode(u"%s: %s (%sb)" % (self.resitel.plne_jmeno(), self.problem.nazev, self.body)) | ||||
|         #TODO: DB HOG | ||||
|         # NOTE: Potenciální DB HOG (bez select_related) | ||||
| 
 | ||||
| 
 | ||||
| # PrilohaReseni method | ||||
|  | @ -516,7 +527,7 @@ class Soustredeni_Ucastnici(models.Model): | |||
| 
 | ||||
|     def __str__(self): | ||||
|         return force_unicode(u'%s na %s' % (self.resitel, self.soustredeni, )) | ||||
|         #TODO: DB HOG | ||||
|         # NOTE: Poteciální DB HOG bez select_related | ||||
| 
 | ||||
| 
 | ||||
| @python_2_unicode_compatible | ||||
|  | @ -539,7 +550,7 @@ 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 HOG (ale nepouzivany) | ||||
| 
 | ||||
| @python_2_unicode_compatible | ||||
| class VysledkyZaCislo(VysledkyBase): | ||||
|  | @ -550,7 +561,7 @@ class VysledkyZaCislo(VysledkyBase): | |||
|         managed = False | ||||
| 
 | ||||
|     def __str__(self): | ||||
|         #NOTE: DB HOG (ale nepouzivany) | ||||
|         # NOTE: DB HOG (ale nepouzivany) | ||||
|         return force_unicode(u"%s: %sb (za %s)" % (self.resitel.plne_jmeno(), self.body, str(self.cislo))) | ||||
| 
 | ||||
| 
 | ||||
|  | @ -565,7 +576,7 @@ class VysledkyKCislu(VysledkyBase): | |||
|     body_celkem = models.IntegerField(u'body celkem do čísla', db_column='body_celkem') | ||||
| 
 | ||||
|     def __str__(self): | ||||
|         #NOTE: DB HOG (ale nepouzivany) | ||||
|         # 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))) | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Tomas Gavenciak
						Tomas Gavenciak