Zakladni testy konzistence dat -- pridejte dalsi!
This commit is contained in:
		
							parent
							
								
									39f520260d
								
							
						
					
					
						commit
						1692d8c2e0
					
				
					 4 changed files with 78 additions and 1 deletions
				
			
		
							
								
								
									
										16
									
								
								seminar/templates/seminar/stav_databaze.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								seminar/templates/seminar/stav_databaze.html
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | |||
| {% extends "base.html" %} | ||||
| 
 | ||||
| {% block content %} | ||||
| <div> | ||||
|   <h2>Stav databáze</h2> | ||||
| 
 | ||||
|   <h3>Nastavení</h3> | ||||
| 
 | ||||
|   <h3>Problémy</h3> | ||||
|   {% for p in problemy %} | ||||
|   <div>{{ p |safe }}</div> | ||||
|   {% endfor %} | ||||
| 
 | ||||
| </div> | ||||
| {% endblock content %} | ||||
| 
 | ||||
|  | @ -17,6 +17,8 @@ urlpatterns = patterns('', | |||
| 
 | ||||
|     url(r'^zadani/aktualni/$', views.AktualniZadaniView, name='seminar_aktualni_zadani'), | ||||
| 
 | ||||
|     url(r'^stav$', views.StavDatabazeView, name='stav_databaze'), | ||||
| 
 | ||||
|     url(r'^aesop-export/mam-rocnik-(?P<prvni_rok>\d+)\.csv$', export.ExportRocnikView.as_view(), name='seminar_export_rocnik'), | ||||
|     url(r'^aesop-export/mam-sous-(?P<datum_zacatku>[\d-]+)\.csv$', export.ExportSousView.as_view(), name='seminar_export_sous'), | ||||
|     url(r'^aesop-export/index.csv$', export.ExportIndexView.as_view(), name='seminar_export_index'), | ||||
|  |  | |||
|  | @ -1,5 +1,7 @@ | |||
| # -*- coding: utf-8 -*- | ||||
| 
 | ||||
| import datetime | ||||
| 
 | ||||
| roman_numerals = zip((1000, 900,  500, 400, 100,  90, 50,  40, 10,  9,   5,  4,   1), | ||||
|                      ('M',  'CM', 'D', 'CD','C', 'XC','L','XL','X','IX','V','IV','I')) | ||||
| 
 | ||||
|  | @ -18,3 +20,49 @@ def from_roman(rom): | |||
|             return i + from_roman(rom[len(n):]) | ||||
|     raise Exception('Invalid roman numeral: "%s"', rom) | ||||
| 
 | ||||
| 
 | ||||
| def seznam_problemu(): | ||||
|     from .models import Problem, Resitel, Rocnik, Reseni, Cislo | ||||
|     problemy = [] | ||||
| 
 | ||||
|     # Pomocna fce k formatovani problemovych hlasek | ||||
|     def prb(cls, msg, objs=None): | ||||
|         s = u'<b>%s:</b> %s' % (cls.__name__, msg) | ||||
|         if objs: | ||||
|             s += u' [' | ||||
|             for o in objs: | ||||
|                 try: | ||||
|                     url = o.admin_url() | ||||
|                 except: | ||||
|                     url = None | ||||
|                 if url: | ||||
|                     s += u'<a href="%s">%s</a>, ' % (url, o.pk, ) | ||||
|                 else: | ||||
|                     s += u'%s, ' % (o.pk, ) | ||||
|             s = s[:-2] + u']' | ||||
|         problemy.append(s) | ||||
| 
 | ||||
|     # Duplicita jmen | ||||
|     jmena = {} | ||||
|     for r in Resitel.objects.all(): | ||||
|         j = r.plne_jmeno() | ||||
|         if j not in jmena: | ||||
|             jmena[j] = [] | ||||
|         jmena[j].append(r) | ||||
|     for j in jmena: | ||||
|         if len(jmena[j]) > 1: | ||||
|             prb(Resitel, u'Duplicitní jméno "%s"' % (j, ), jmena[j]) | ||||
| 
 | ||||
|     # Data maturity a narození | ||||
|     for r in Resitel.objects.all(): | ||||
|         if not r.rok_maturity: | ||||
|             prb(Resitel, u'Neznámý rok maturity', [r]) | ||||
|         if r.rok_maturity and (r.rok_maturity < 1990 or r.rok_maturity > datetime.date.today().year + 10): | ||||
|             prb(Resitel, u'Podezřelé datum maturity', [r]) | ||||
|         if r.datum_narozeni and (r.datum_narozeni.year < 1970 or r.datum_narozeni.year > datetime.date.today().year - 12): | ||||
|             prb(Resitel, u'Podezřelé datum narození', [r]) | ||||
| #        if not r.email: | ||||
| #            prb(Resitel, u'Neznámý email', [r]) | ||||
| 
 | ||||
|     return problemy | ||||
| 
 | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ from django.utils.translation import ugettext as _ | |||
| from django.http import Http404 | ||||
| 
 | ||||
| from .models import Problem, Cislo, Reseni, VysledkyKCislu, Nastaveni, Rocnik, Soustredeni, Organizator | ||||
| 
 | ||||
| from . import utils | ||||
| 
 | ||||
| def AktualniZadaniView(request): | ||||
|     nastaveni = get_object_or_404(Nastaveni) | ||||
|  | @ -161,3 +161,14 @@ class SoustredeniListView(generic.ListView): | |||
| class SoustredeniView(generic.DetailView): | ||||
|     model = Soustredeni | ||||
|     template_name = 'seminar/archiv/soustredeni.html' | ||||
| 
 | ||||
| ### Status | ||||
| 
 | ||||
| def StavDatabazeView(request): | ||||
| #    nastaveni = Nastaveni.objects.get() | ||||
|     problemy = utils.seznam_problemu() | ||||
|     return render(request, 'seminar/stav_databaze.html', | ||||
|             { | ||||
| #                'nastaveni': nastaveni, | ||||
|                 'problemy': problemy, | ||||
|             }) | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Tomas Gavenciak
						Tomas Gavenciak