Merge branch 'master' into stable
This commit is contained in:
		
						commit
						ba3b64a36b
					
				
					 19 changed files with 214 additions and 75 deletions
				
			
		|  | @ -5,7 +5,7 @@ from django.contrib import admin | |||
| from django.http import HttpResponseRedirect | ||||
| from django import forms | ||||
| from django.db import models | ||||
| import autocomplete_light | ||||
| from autocomplete_light import shortcuts as autocomplete_light | ||||
| 
 | ||||
| # akction | ||||
| 
 | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ | |||
| 
 | ||||
| from __future__ import unicode_literals | ||||
| 
 | ||||
| import autocomplete_light | ||||
| from autocomplete_light import shortcuts as autocomplete_light | ||||
| 
 | ||||
| from models import Obrazek, Galerie | ||||
| from views import cesta_od_korene | ||||
|  |  | |||
|  | @ -1,12 +1,13 @@ | |||
| # coding: utf-8 | ||||
| 
 | ||||
| from django.conf.urls import patterns, include, url | ||||
| from . import views | ||||
| 
 | ||||
| urlpatterns = patterns('', | ||||
|    (r'^(?P<pk>\d+)/$', 'galerie.views.nahled'), | ||||
|    (r'^(?P<pk>\d+)/(?P<fotka>\d+)/$', 'galerie.views.detail'), | ||||
|    (r'^(?P<galerie>\d+)/new/$', 'galerie.views.new_galerie'), | ||||
|    (r'^(?P<galerie>\d+)/plus/(?P<subgalerie>\d+)/$', 'galerie.views.plus_galerie'), | ||||
|    (r'^(?P<galerie>\d+)/minus/(?P<subgalerie>\d+)/$', 'galerie.views.minus_galerie'), | ||||
| ) | ||||
| urlpatterns = [ | ||||
|     url(r'^(?P<pk>\d+)/$', views.nahled), | ||||
|     url(r'^(?P<pk>\d+)/(?P<fotka>\d+)/$', views.detail), | ||||
|     url(r'^(?P<galerie>\d+)/new/$', views.new_galerie), | ||||
|     url(r'^(?P<galerie>\d+)/plus/(?P<subgalerie>\d+)/$', views.plus_galerie), | ||||
|     url(r'^(?P<galerie>\d+)/minus/(?P<subgalerie>\d+)/$', views.minus_galerie), | ||||
| ] | ||||
| 
 | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ from django.utils.encoding import force_unicode | |||
| from django.core.exceptions import ObjectDoesNotExist | ||||
| 
 | ||||
| import subprocess | ||||
| import reversion | ||||
| from reversion import revisions as reversion | ||||
| 
 | ||||
| # PrilohaReseni method | ||||
| def generate_filename(self, filename): | ||||
|  |  | |||
|  | @ -5,8 +5,8 @@ from . import views | |||
| 
 | ||||
| staff_member_required = user_passes_test(lambda u: u.is_staff) | ||||
| 
 | ||||
| urlpatterns = patterns('', | ||||
| urlpatterns = [ | ||||
|     url(r'^korektury/$', staff_member_required(views.KorekturyListView.as_view()), name='korektury-list'), | ||||
|     url(r'^korektury/(?P<pdf>\d+)/$', staff_member_required(views.KorekturyView.as_view()), name='korektury'), | ||||
|     url(r'^korektury/help/', staff_member_required(views.KorekturyHelpView.as_view()), name='korektury-help'), | ||||
| ) | ||||
| ] | ||||
|  |  | |||
|  | @ -31,7 +31,6 @@ class KorekturyView(generic.TemplateView): | |||
|         scroll = q.get('scroll') | ||||
|         autor = q.get('au') | ||||
| 
 | ||||
|         print "autor:" + unicode(autor) | ||||
|         if not autor: | ||||
|             autor = 'anonym' | ||||
|         if not scroll: | ||||
|  |  | |||
|  | @ -240,5 +240,6 @@ LOGGING = { | |||
| # MaM specific | ||||
| 
 | ||||
| SEMINAR_RESENI_DIR = os.path.join(BASE_DIR, 'media', 'reseni') | ||||
| SEMINAR_KONFERY_DIR = os.path.join(BASE_DIR, 'media', 'konfery') | ||||
| KOREKTURY_PDF_DIR = os.path.join(BASE_DIR, 'media', 'korektury','pdf') | ||||
| KOREKTURY_IMG_DIR = os.path.join(BASE_DIR, 'media', 'korektury','img') | ||||
|  |  | |||
|  | @ -4,12 +4,13 @@ from django.contrib.staticfiles.urls import staticfiles_urlpatterns | |||
| from django.contrib import admin | ||||
| from django.conf import settings | ||||
| from django.views.generic.base import TemplateView | ||||
| from django import views | ||||
| 
 | ||||
| urlpatterns = patterns('', | ||||
| urlpatterns = [ | ||||
| 
 | ||||
|     # Admin a nastroje | ||||
|     url(r'^admin/', include(admin.site.urls)),  # NOQA | ||||
|     url(r'^ckeditor/', include('ckeditor.urls')), | ||||
|     url(r'^ckeditor/', include('ckeditor_uploader.urls')), | ||||
|     url(r'^autocomplete/', include('autocomplete_light.urls')), | ||||
| 
 | ||||
|     # Seminarova aplikace (ma vlastni podadresare) | ||||
|  | @ -22,11 +23,11 @@ urlpatterns = patterns('', | |||
|     url(r'^comments_dj/', include('django_comments.urls')), | ||||
|     url(r'^comments_fl/', include('fluent_comments.urls')), | ||||
| 
 | ||||
| ) | ||||
| ] | ||||
| 
 | ||||
| # This is only needed when using runserver. | ||||
| if settings.DEBUG: | ||||
|     urlpatterns = patterns('', | ||||
|     urlpatterns = [ | ||||
|         url(r'^media/(?P<path>.*)$', 'django.views.static.serve',  # NOQA | ||||
|             {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}), | ||||
|         ) + staticfiles_urlpatterns() + urlpatterns  # NOQA | ||||
|         ] + staticfiles_urlpatterns() + urlpatterns  # NOQA | ||||
|  |  | |||
|  | @ -2,47 +2,47 @@ | |||
| 
 | ||||
| psycopg2==2.6.1 | ||||
| html5lib==0.9999999 | ||||
| ipython==4.0.0 | ||||
| Pillow==2.9.0 | ||||
| pytz==2014.10 | ||||
| six==1.9.0 | ||||
| pexpect==3.3 | ||||
| ipython==4.0.1 | ||||
| Pillow==3.1.0 | ||||
| pytz==2015.7 | ||||
| six==1.10.0 | ||||
| pexpect==4.0.1 | ||||
| traitlets==4.0.0 | ||||
| 
 | ||||
| # Django and modules | ||||
| 
 | ||||
| Django==1.7.10 # Updatable to 1.9 (possibly incompatible) | ||||
| django-bootstrap-sass==0.0.6a0 | ||||
| django-mptt==0.7.3 | ||||
| django-reversion==1.9.3 | ||||
| django-sekizai==0.8.1 | ||||
| django-countries==3.2 | ||||
| django-solo==1.1.0 | ||||
| django-ckeditor==4.4.7 # Updatable to 5.0 (some incompatible changes) | ||||
| django-flat-theme==0.9.3 | ||||
| django-taggit==0.17 | ||||
| django-autocomplete-light==2.2.6 | ||||
| django-crispy-forms==1.4.0 | ||||
| django-imagekit==3.2.7 | ||||
| Django==1.8.8 | ||||
| #django-bootstrap-sass | ||||
| django-mptt==0.8.0 | ||||
| django-reversion==1.10.0 | ||||
| django-sekizai==0.9.0 | ||||
| django-countries==3.4.1 | ||||
| django-solo==1.1.1 | ||||
| django-ckeditor==5.0.2 | ||||
| django-flat-theme==1.1.3 | ||||
| django-taggit==0.17.6 | ||||
| django-autocomplete-light==2.2.10 | ||||
| django-crispy-forms==1.6.0 | ||||
| django-imagekit==3.3 | ||||
| 
 | ||||
| # Comments | ||||
| akismet==0.2.0 | ||||
| django-fluent-comments==1.0.2 | ||||
| django-threadedcomments==1.0b1 | ||||
| django-contrib-comments==1.6.1 | ||||
| django-fluent-comments==1.1 | ||||
| django-threadedcomments==1.0.1 | ||||
| django-contrib-comments==1.6.2 | ||||
| 
 | ||||
| # debug tools/extensions | ||||
| 
 | ||||
| django-debug-toolbar==1.4 | ||||
| django-extensions==1.5.6 | ||||
| sqlparse==0.1.16 | ||||
| Werkzeug==0.10.4 | ||||
| django-extensions==1.6.1 | ||||
| sqlparse==0.1.18 | ||||
| Werkzeug==0.11.3 | ||||
| 
 | ||||
| # G+, FB authorisation | ||||
| 
 | ||||
| # django-allauth==0.19.1 | ||||
| # oauthlib==0.7.2 | ||||
| # python-openid==2.2.5 | ||||
| # requests==2.5.3 | ||||
| # requests-oauthlib==0.4.2 | ||||
| # django-allauth | ||||
| # oauthlib | ||||
| # python-openid | ||||
| # requests | ||||
| # requests-oauthlib | ||||
| 
 | ||||
|  |  | |||
|  | @ -12,7 +12,7 @@ from django.db import models | |||
| from django.contrib.auth.models import User | ||||
| 
 | ||||
| from seminar.models import Skola, Resitel, Rocnik, Cislo, Problem, Reseni, PrilohaReseni, Nastaveni, Soustredeni, Soustredeni_Ucastnici, Soustredeni_Organizatori, Novinky, Organizator | ||||
| import autocomplete_light | ||||
| from autocomplete_light import shortcuts as autocomplete_light | ||||
| 
 | ||||
| 
 | ||||
| class UserModelChoiceField(forms.ModelChoiceField): | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| # -*- coding: utf-8 -*- | ||||
| 
 | ||||
| import autocomplete_light | ||||
| from autocomplete_light import shortcuts as autocomplete_light | ||||
| 
 | ||||
| from models import Skola, Resitel, Problem, Organizator | ||||
| from taggit.models import Tag | ||||
|  |  | |||
|  | @ -16,6 +16,7 @@ from imagekit.processors import ResizeToFit, Transpose | |||
| 
 | ||||
| from PIL import Image | ||||
| import os | ||||
| from functools import partial | ||||
| from cStringIO import StringIO | ||||
| from django.core.files.base import ContentFile | ||||
| 
 | ||||
|  | @ -23,7 +24,7 @@ from django_countries.fields import CountryField | |||
| from solo.models import SingletonModel | ||||
| from taggit.managers import TaggableManager | ||||
| 
 | ||||
| import reversion | ||||
| from reversion import revisions as reversion | ||||
| 
 | ||||
| from seminar.utils import roman | ||||
| 
 | ||||
|  | @ -544,13 +545,13 @@ class Reseni(SeminarModelBase): | |||
| 
 | ||||
| 
 | ||||
| # PrilohaReseni method | ||||
| def generate_filename(self, filename): | ||||
| def generate_filename(self, filename, directory): | ||||
|     clean = filename.replace('/','-').replace('\0', '') | ||||
|     datedir = timezone.now().strftime('%Y-%m') | ||||
|     fname = "%s_%s" % ( | ||||
|         timezone.now().strftime('%Y-%m-%d-%H:%M'), | ||||
|         clean) | ||||
|     return os.path.join(settings.SEMINAR_RESENI_DIR, datedir, fname) | ||||
|     return os.path.join(directory, datedir, fname) | ||||
| 
 | ||||
| 
 | ||||
| @reversion.register(ignore_duplicate_revisions=True) | ||||
|  | @ -570,7 +571,7 @@ class PrilohaReseni(SeminarModelBase): | |||
| 
 | ||||
|     timestamp = models.DateTimeField(u'vytvořeno', default=timezone.now, blank=True, editable=False) | ||||
| 
 | ||||
|     soubor = models.FileField(u'soubor', upload_to = generate_filename) | ||||
|     soubor = models.FileField(u'soubor', upload_to = partial(generate_filename,directory=settings.SEMINAR_RESENI_DIR)) | ||||
| 
 | ||||
|     poznamka = models.TextField(u'neveřejná poznámka', blank=True, | ||||
|         help_text=u'Neveřejná poznámka k příloze řešení (plain text), např. o původu') | ||||
|  | @ -734,6 +735,72 @@ class Soustredeni_Organizatori(models.Model): | |||
|         # NOTE: Poteciální DB HOG bez select_related | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| @reversion.register(ignore_duplicate_revisions=True) | ||||
| @python_2_unicode_compatible | ||||
| class Konfera(models.Model): | ||||
|     class Meta: | ||||
|         db_table = 'seminar_konfera' | ||||
|         verbose_name = u'Konfera' | ||||
|         verbose_name_plural = u'Konfery' | ||||
|     # Interní ID | ||||
|     id = models.AutoField(primary_key = True) | ||||
|     nazev = models.CharField(u'název konfery', max_length=40, help_text = u'Název konfery') | ||||
|     popis = models.TextField(u'popis konfery', blank=True, | ||||
|         help_text=u'Popis konfery k zobrazení na webu') | ||||
|     abstrakt = models.TextField(u'abstrakt', blank=True, | ||||
|         help_text=u'Abstrakt konfery tak, jak byl uveden ve sborníku') | ||||
|     organizator = models.ForeignKey(Organizator, verbose_name=u'organizátor', related_name='konfery', | ||||
|             on_delete = models.SET_NULL, null=True) | ||||
|     ucastnici = models.ManyToManyField(Resitel, verbose_name=u'účastníci konfery', | ||||
|         help_text=u'Seznam účastníků konfery', through='Konfery_Ucastnici') | ||||
|     soustredeni = models.ForeignKey(Soustredeni, verbose_name=u'soustředění', related_name='konfery', | ||||
|             on_delete = models.SET_NULL, null=True) | ||||
|     org_poznamka = models.TextField(u'neveřejná poznámka', blank=True, | ||||
|         help_text=u'Neveřejná poznámka ke konfeře(plain text)') | ||||
|     #prispevek #TODO | ||||
|     TYP_VELETRH = 'veletrh' | ||||
|     TYP_PREZENTACE = 'prezentace' | ||||
|     TYP_CHOICES = [ | ||||
|         (TYP_VELETRH, u'Veletrh (postery)'), | ||||
|         (TYP_PREZENTACE, u'Prezentace (přednáška)'), | ||||
|         ] | ||||
|     typ_prezentace = models.CharField(u'typ prezentace', max_length=16, choices=TYP_CHOICES, blank=False, default=TYP_VELETRH) | ||||
|     prezentace = models.FileField(u'prezentace',help_text = u'Prezentace nebo fotka posteru',  | ||||
|             upload_to = partial(generate_filename,directory=settings.SEMINAR_KONFERY_DIR)) | ||||
|     materialy = models.FileField(u'materialy',help_text = u'Další materiály ke konfeře zabalené do jednoho souboru',  | ||||
|             upload_to = partial(generate_filename,directory=settings.SEMINAR_KONFERY_DIR)) | ||||
| 
 | ||||
|     def __str__(self): | ||||
|         return force_unicode(u"%s: (%s)" % (self.nazev, self.soustredeni)) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| @reversion.register(ignore_duplicate_revisions=True) | ||||
| @python_2_unicode_compatible | ||||
| class Konfery_Ucastnici(models.Model): | ||||
| 
 | ||||
|     class Meta: | ||||
|         db_table = 'seminar_konfery_ucastnici' | ||||
|         verbose_name = u'Účast na konfeře' | ||||
|         verbose_name_plural = u'Účasti na konfeře' | ||||
|         ordering = ['konfera', 'resitel'] | ||||
| 
 | ||||
|     # Interní ID | ||||
|     id = models.AutoField(primary_key = True) | ||||
| 
 | ||||
|     resitel = models.ForeignKey(Resitel, verbose_name=u'řešitel') | ||||
| 
 | ||||
|     konfera = models.ForeignKey(Konfera, verbose_name=u'konfera') | ||||
| 
 | ||||
|     poznamka = models.TextField(u'neveřejná poznámka', blank=True, | ||||
|         help_text=u'Neveřejná poznámka k účasti (plain text)') | ||||
| 
 | ||||
|     def __str__(self): | ||||
|         return force_unicode(u'%s na %s' % (self.resitel, self.konfera, )) | ||||
|         # NOTE: Poteciální DB HOG bez select_related | ||||
| 
 | ||||
| 
 | ||||
| @python_2_unicode_compatible | ||||
| class VysledkyBase(SeminarModelBase): | ||||
| 
 | ||||
|  |  | |||
|  | @ -33,6 +33,7 @@ | |||
| 	<ul> | ||||
| 		<li><a href="obalky.pdf">Obálky (PDF)</a></li> | ||||
| 		<li><a href="tituly.tex">Tituly (TeX)</a></li> | ||||
| 		<li><a href="vysledkovka.tex">Výsledkovka (TeX)</a></li> | ||||
| 	</ul> | ||||
| 	</div> | ||||
|   {% endif %} | ||||
|  |  | |||
							
								
								
									
										22
									
								
								seminar/templates/seminar/archiv/resitel_uloha.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								seminar/templates/seminar/archiv/resitel_uloha.html
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,22 @@ | |||
| 
 | ||||
| {% extends "seminar/archiv/base.html" %} | ||||
| 
 | ||||
| {% block content %} | ||||
| <h1> K obálkování </h1> | ||||
| <table> | ||||
| 	<th> | ||||
| 		<td>Jméno</td> | ||||
| {% for u in ulohy %} | ||||
| 		<td>{{u.nazev}} | ||||
| {% endfor %} | ||||
| 	</th> | ||||
| {% for row in kdoco %} | ||||
| 	<tr> | ||||
| 	{% for cell in row%} | ||||
| 		<td>{{cell}}</td> | ||||
| 	{% endfor %} | ||||
| 	</tr> | ||||
| {% endfor %} | ||||
| </table> | ||||
| {% endblock content %} | ||||
| 
 | ||||
|  | @ -1,3 +1,8 @@ | |||
| {% if broken %} | ||||
| %% POZOR! %% Dva resitele maji stejne makro!!! | ||||
| %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||||
| {% endif %} | ||||
| 
 | ||||
| {% autoescape off %} | ||||
| {% load tex %} | ||||
| 
 | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ | |||
| 
 | ||||
| import logging as log | ||||
| from .models import Resitel | ||||
| import reversion | ||||
| from reversion import revisions as reversion | ||||
| 
 | ||||
| def merge_props(r1, r2, prop, pretend=True, smaller=False, equal=True): | ||||
|     """Merge r2.`prop` into r1.`prop`. | ||||
|  |  | |||
|  | @ -1,9 +1,12 @@ | |||
| from django.conf.urls import *  # NOQA | ||||
| from django.conf.urls import patterns, url | ||||
| from django.contrib.auth.decorators import user_passes_test | ||||
| from . import views, export | ||||
| from utils import staff_member_required | ||||
| 
 | ||||
| urlpatterns = patterns('', | ||||
| staff_member_required = user_passes_test(lambda u: u.is_staff) | ||||
| 
 | ||||
| urlpatterns = [ | ||||
|     url(r'^co-je-MaM/organizatori/$', views.CojemamOrganizatoriView.as_view(), name='organizatori'), | ||||
|     url(r'^co-je-MaM/organizatori/organizovali/$', views.CojemamOrganizatoriStariView.as_view(), name='stari_organizatori'), | ||||
| 
 | ||||
|  | @ -18,7 +21,6 @@ urlpatterns = patterns('', | |||
|         name = 'seminar_seznam_soustredeni'), | ||||
|     url(r'^soustredeni/probehlo/(?P<soustredeni>\d+)/$', views.SoustredeniView.as_view(), name='seminar_soustredeni'), | ||||
|     url(r'^soustredeni/(?P<soustredeni>\d+)/fotogalerie/', include('galerie.urls')), | ||||
|     url(r'^soustredeni/(?P<soustredeni>\d+)/obalky.pdf', views.soustredeniObalkyView,name='seminar_soustredeni_obalky'), | ||||
| 
 | ||||
|     url(r'^zadani/aktualni/$', views.AktualniZadaniView, name='seminar_aktualni_zadani'), | ||||
|     url(r'^zadani/temata/$', views.ZadaniTemataView, name='seminar_temata'), | ||||
|  | @ -29,15 +31,22 @@ urlpatterns = patterns('', | |||
|     url(r'^clanky/resitel/$', views.ClankyResitelView.as_view(), name='clanky_resitel'), | ||||
|     url(r'^clanky/org/$', views.ClankyOrganizatorView.as_view(), name='clanky_organizator'), | ||||
| 
 | ||||
| 
 | ||||
|     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'), | ||||
|     url(r'^cislo/(?P<rocnik>\d+).(?P<cislo>\d+)/vysledkovka.tex$', views.CisloVysledkovkaView.as_view(), name='seminar_cislo_vysledkovka'), | ||||
|     url(r'^cislo/(?P<rocnik>\d+).(?P<cislo>\d+)/obalky.pdf$',views.cisloObalkyView, name='seminar_cislo_obalky'), | ||||
| 
 | ||||
|     url(r'^cislo/(?P<rocnik>\d+).(?P<cislo>\d+)/tituly.tex$', views.TitulyView, | ||||
|         name='seminar_cislo_titul'), | ||||
| ) | ||||
|     #### Stranky viditelne pouze pro orgy: | ||||
|     url(r'^cislo/(?P<rocnik>\d+).(?P<cislo>\d+)/vysledkovka.tex$',  | ||||
|         staff_member_required(views.CisloVysledkovkaView.as_view()), name='seminar_cislo_vysledkovka'), | ||||
|     url(r'^cislo/(?P<rocnik>\d+).(?P<cislo>\d+)/obalky.pdf$', | ||||
|         staff_member_required(views.cisloObalkyView), name='seminar_cislo_obalky'), | ||||
| 
 | ||||
|     url(r'^cislo/(?P<rocnik>\d+).(?P<cislo>\d+)/tituly.tex$',  | ||||
|         staff_member_required(views.TitulyView), name='seminar_cislo_titul'), | ||||
|     url(r'^stav$',  | ||||
|         staff_member_required(views.StavDatabazeView), name='stav_databaze'), | ||||
|     url(r'^cislo/(?P<rocnik>\d+).(?P<cislo>\d+)/resitel_uloha.html$',  | ||||
|         staff_member_required(views.resitelUlohaView),name='seminar_cislo_resitel_uloha'), | ||||
|     url(r'^soustredeni/(?P<soustredeni>\d+)/obalky.pdf',  | ||||
|         staff_member_required(views.soustredeniObalkyView),name='seminar_soustredeni_obalky'), | ||||
| ] | ||||
|  |  | |||
|  | @ -1,7 +1,9 @@ | |||
| # -*- coding: utf-8 -*- | ||||
| 
 | ||||
| import datetime | ||||
| from django.contrib.auth.decorators import user_passes_test | ||||
| 
 | ||||
| staff_member_required = user_passes_test(lambda u: u.is_staff) | ||||
| 
 | ||||
| def histogram(seznam): | ||||
|     d = {} | ||||
|  | @ -76,3 +78,5 @@ def seznam_problemu(): | |||
| 
 | ||||
|     return problemy | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ | |||
| from django.shortcuts import get_object_or_404, render | ||||
| from django.http import HttpResponse, HttpResponseRedirect, HttpResponseForbidden | ||||
| from django.core.urlresolvers import reverse | ||||
| from django.core.exceptions import PermissionDenied | ||||
| from django.core.exceptions import PermissionDenied, ObjectDoesNotExist | ||||
| from django.views import generic | ||||
| from django.utils.translation import ugettext as _ | ||||
| from django.http import Http404 | ||||
|  | @ -356,7 +356,7 @@ class CisloObalkyStruct: | |||
| 
 | ||||
| # Vraci QuerySet aktualnich resitelu = nekdy neco poslali, ale jeste neodmaturovali | ||||
| def aktualniResitele(rocnik): | ||||
|     letos = Rocnik.objects.filter(rocnik = rocnik).first() | ||||
|     letos = Rocnik.objects.get(rocnik = rocnik) | ||||
|     return Resitel.objects.filter(rok_maturity__gt = letos.prvni_rok) | ||||
| #   # ALERT: pokud nekdo nema vypleny rok maturity, tak neni aktualni, protoze Karel Tesar a jini | ||||
| #    return Resitel.objects.filter(Q(rok_maturity__gt = letos.prvni_rok)|Q(rok_maturity = None)) | ||||
|  | @ -371,8 +371,8 @@ def aktivniResitele(rocnik,cislo): | |||
| 
 | ||||
|     aktualni_resitele = aktualniResitele(rocnik) | ||||
|      | ||||
|     letos.rocnik = Rocnik.objects.filter(rocnik = rocnik).first() | ||||
|     loni.rocnik = Rocnik.objects.filter(rocnik = int(rocnik)-1).first() | ||||
|     letos.rocnik = Rocnik.objects.get(rocnik = rocnik) | ||||
|     loni.rocnik = Rocnik.objects.get(rocnik = int(rocnik)-1) | ||||
|     letos.cisla = Cislo.objects.filter(rocnik=letos.rocnik,cislo__lte = cislo) | ||||
|     loni.cisla = Cislo.objects.filter(rocnik=loni.rocnik)  | ||||
|     if int(cislo) > 3: | ||||
|  | @ -404,24 +404,53 @@ def obalkyView(request,resitele): | |||
|     shutil.rmtree(tempdir) | ||||
|     return response | ||||
| 
 | ||||
| def resitelUlohaView(request,rocnik,cislo): | ||||
|     rocnik = Rocnik.objects.get(rocnik=rocnik) | ||||
|     cislo = Cislo.objects.get(rocnik=rocnik,cislo=cislo) | ||||
|     reseni = Reseni.objects.filter(cislo_body=cislo).order_by('resitel') | ||||
|     # TODO: Nasledujici 4 radky jsou fuj. Znate neco lepsiho? | ||||
|     resitele = list(set([r.resitel for r in reseni])) | ||||
|     resitele.sort(key=lambda r: (r.prijmeni,r.jmeno)) | ||||
|     ulohy = list(set([r.problem for r in reseni])) | ||||
|     ulohy.sort(key=lambda u: (u.typ,u.kod)) | ||||
| 
 | ||||
|     kdoco = [] | ||||
|     for r in resitele: | ||||
|         res_ulohy = [r.jmeno+" "+r.prijmeni] | ||||
|         for u in ulohy: | ||||
|             try: | ||||
|                 rsni = reseni.get(resitel=r,problem=u) | ||||
|                 res_ulohy.append(rsni.body) | ||||
|             except ObjectDoesNotExist: | ||||
|                 res_ulohy.append("") | ||||
|         kdoco.append(res_ulohy) | ||||
|     return render(request, 'seminar/archiv/resitel_uloha.html',{'ulohy':ulohy,'kdoco':kdoco}) | ||||
| 
 | ||||
| ### Tituly | ||||
| 
 | ||||
| # TODO udelat neco jako get_objects_or_404 | ||||
| def TitulyView(request, rocnik, cislo): | ||||
|     rocnik_obj = Rocnik.objects.filter(rocnik = rocnik).first() | ||||
|     rocnik_obj = Rocnik.objects.get(rocnik = rocnik) | ||||
|     resitele = Resitel.objects.filter(rok_maturity__gte = rocnik_obj.prvni_rok) | ||||
|     cislo_obj = Cislo.objects.filter(rocnik = rocnik_obj, cislo = cislo).first() | ||||
|     cislo_obj = Cislo.objects.get(rocnik = rocnik_obj, cislo = cislo) | ||||
| 
 | ||||
|     asciijmena = [] | ||||
|     broken = False | ||||
| 
 | ||||
|     for resitel in resitele: | ||||
|         vys = VysledkyKCisluOdjakziva.objects.filter(resitel = resitel, cislo = cislo_obj).first() | ||||
|         if vys == None: | ||||
|             body = 0 | ||||
|         else:  | ||||
|         try: | ||||
|             vys = VysledkyKCisluOdjakziva.objects.get(resitel = resitel, cislo = cislo_obj) | ||||
|             body = vys.body | ||||
|         except ObjectDoesNotExist: | ||||
|             body = 0 | ||||
|         resitel.titul = resitel.get_titul(body) | ||||
|         resitel.ascii = unicodedata.normalize('NFKD',resitel.jmeno+resitel.prijmeni).encode("ascii","ignore").replace(" ","") | ||||
|         if resitel.ascii not in asciijmena: | ||||
|             asciijmena.append(resitel.ascii) | ||||
|         else: | ||||
|             broken = True | ||||
| 
 | ||||
|     return render(request, 'seminar/archiv/tituly.tex',{'resitele': resitele}) | ||||
|     return render(request, 'seminar/archiv/tituly.tex',{'resitele': resitele,'broken':broken}) | ||||
| 
 | ||||
| 
 | ||||
| ### Soustredeni | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Bc. Petr Pecha
						Bc. Petr Pecha