diff --git a/seminar/templates/seminar/stav_databaze.html b/seminar/templates/seminar/stav_databaze.html
new file mode 100644
index 00000000..2484a2ea
--- /dev/null
+++ b/seminar/templates/seminar/stav_databaze.html
@@ -0,0 +1,16 @@
+{% extends "base.html" %}
+
+{% block content %}
+
+
Stav databáze
+
+
Nastavení
+
+
Problémy
+ {% for p in problemy %}
+
{{ p |safe }}
+ {% endfor %}
+
+
+{% endblock content %}
+
diff --git a/seminar/urls.py b/seminar/urls.py
index 4890a6ba..d6021be5 100644
--- a/seminar/urls.py
+++ b/seminar/urls.py
@@ -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\d+)\.csv$', export.ExportRocnikView.as_view(), name='seminar_export_rocnik'),
url(r'^aesop-export/mam-sous-(?P[\d-]+)\.csv$', export.ExportSousView.as_view(), name='seminar_export_sous'),
url(r'^aesop-export/index.csv$', export.ExportIndexView.as_view(), name='seminar_export_index'),
diff --git a/seminar/utils.py b/seminar/utils.py
index a4a4027a..6676fd84 100644
--- a/seminar/utils.py
+++ b/seminar/utils.py
@@ -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'%s: %s' % (cls.__name__, msg)
+ if objs:
+ s += u' ['
+ for o in objs:
+ try:
+ url = o.admin_url()
+ except:
+ url = None
+ if url:
+ s += u'%s, ' % (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
+
diff --git a/seminar/views.py b/seminar/views.py
index f7e099dc..461cf1ba 100644
--- a/seminar/views.py
+++ b/seminar/views.py
@@ -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,
+ })