Merge remote-tracking branch 'origin/opraf'
Conflicts: korektury/models.py seminar/urls.py
This commit is contained in:
		
						commit
						448426a6fb
					
				
					 11 changed files with 87 additions and 66 deletions
				
			
		|  | @ -4,11 +4,8 @@ | ||||||
| - vyžádat pozornost autora obsahu | - vyžádat pozornost autora obsahu | ||||||
| - zvednout upload limit na 5MB | - zvednout upload limit na 5MB | ||||||
| - sbalit a rozbalit korekturu | - sbalit a rozbalit korekturu | ||||||
| - nápověda |  | ||||||
| - nahrávání jiných věcí než PDF - kontrolovat? | - nahrávání jiných věcí než PDF - kontrolovat? | ||||||
| - stylování | - stylování | ||||||
| - vylepšení hlavičky |  | ||||||
|   - seznam PDF, homepage M&M, admin, wiki |  | ||||||
| - seznam PDF - co zobrazovat? | - seznam PDF - co zobrazovat? | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										20
									
								
								korektury/migrations/0008_auto_20151229_1556.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								korektury/migrations/0008_auto_20151229_1556.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | ||||||
|  | # -*- coding: utf-8 -*- | ||||||
|  | from __future__ import unicode_literals | ||||||
|  | 
 | ||||||
|  | from django.db import models, migrations | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class Migration(migrations.Migration): | ||||||
|  | 
 | ||||||
|  |     dependencies = [ | ||||||
|  |         ('korektury', '0007_auto_20151225_1237'), | ||||||
|  |     ] | ||||||
|  | 
 | ||||||
|  |     operations = [ | ||||||
|  |         migrations.AlterField( | ||||||
|  |             model_name='oprava', | ||||||
|  |             name='status', | ||||||
|  |             field=models.CharField(default=b'k_oprave', max_length=16, verbose_name='stav opravy', choices=[(b'k_oprave', 'K oprav\u011b'), (b'opraveno', 'Opraveno'), (b'neni_chyba', 'Nen\xed chyba'), (b'k_reakci', 'K reakci autora textu')]), | ||||||
|  |             preserve_default=True, | ||||||
|  |         ), | ||||||
|  |     ] | ||||||
|  | @ -1,28 +1,13 @@ | ||||||
| # -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||||||
| import os | import os | ||||||
| import random |  | ||||||
| from django.db import models | from django.db import models | ||||||
| from django.contrib import auth |  | ||||||
| from django.utils import timezone | from django.utils import timezone | ||||||
| from django.conf import settings | from django.conf import settings | ||||||
| from django.utils.encoding import python_2_unicode_compatible | from django.utils.encoding import python_2_unicode_compatible | ||||||
| from django.utils.encoding import force_unicode | 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.core.exceptions import ObjectDoesNotExist | from django.core.exceptions import ObjectDoesNotExist | ||||||
| from imagekit.models import ImageSpecField, ProcessedImageField |  | ||||||
| from imagekit.processors import ResizeToFit, Transpose |  | ||||||
| 
 | 
 | ||||||
| import os |  | ||||||
| import subprocess | import subprocess | ||||||
| from cStringIO import StringIO |  | ||||||
| from django.core.files.base import ContentFile |  | ||||||
| 
 |  | ||||||
| from django_countries.fields import CountryField |  | ||||||
| from solo.models import SingletonModel |  | ||||||
| from taggit.managers import TaggableManager |  | ||||||
| 
 |  | ||||||
| from reversion import revisions as reversion | from reversion import revisions as reversion | ||||||
| 
 | 
 | ||||||
| # PrilohaReseni method | # PrilohaReseni method | ||||||
|  | @ -123,13 +108,11 @@ class Oprava(models.Model): | ||||||
|     STATUS_OPRAVENO = 'opraveno' |     STATUS_OPRAVENO = 'opraveno' | ||||||
|     STATUS_NENI_CHYBA = 'neni_chyba' |     STATUS_NENI_CHYBA = 'neni_chyba' | ||||||
|     STATUS_K_REAKCI = 'k_reakci' |     STATUS_K_REAKCI = 'k_reakci' | ||||||
|     STATUS_SMAZANO = 'smazano' |  | ||||||
|     STATUS_CHOICES = ( |     STATUS_CHOICES = ( | ||||||
|             (STATUS_K_OPRAVE, u'K opravě'), |             (STATUS_K_OPRAVE, u'K opravě'), | ||||||
|             (STATUS_OPRAVENO, u'Opraveno'), |             (STATUS_OPRAVENO, u'Opraveno'), | ||||||
|             (STATUS_NENI_CHYBA, u'Není chyba'), |             (STATUS_NENI_CHYBA, u'Není chyba'), | ||||||
|             (STATUS_K_REAKCI, u'K reakci autora textu'), |             (STATUS_K_REAKCI, u'K reakci autora textu'), | ||||||
|             (STATUS_SMAZANO, u'Smazáno'), |  | ||||||
|             ) |             ) | ||||||
|     status = models.CharField(u'stav opravy',max_length=16, choices=STATUS_CHOICES, blank=False, |     status = models.CharField(u'stav opravy',max_length=16, choices=STATUS_CHOICES, blank=False, | ||||||
|             default = STATUS_K_OPRAVE) |             default = STATUS_K_OPRAVE) | ||||||
|  |  | ||||||
							
								
								
									
										
											BIN
										
									
								
								korektury/static/korektury/imgs/hide.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								korektury/static/korektury/imgs/hide.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 270 B | 
|  | @ -1,8 +1,13 @@ | ||||||
| body{background: #f3f3f3; color: black;} | body, | ||||||
| body.comitting { | .adding{ | ||||||
|  | 	background: #f3f3f3;  | ||||||
|  | 	color: black; | ||||||
|  | } | ||||||
|  | .comitting | ||||||
|  | { | ||||||
|     background: yellow; |     background: yellow; | ||||||
| } | } | ||||||
| body.deprecated { | .deprecated { | ||||||
|     background: red; |     background: red; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -122,6 +122,20 @@ function img_click(element, ev) { | ||||||
| 	} | 	} | ||||||
| 	return show_form(img_id, dx, dy, '', '', '', ''); | 	return show_form(img_id, dx, dy, '', '', '', ''); | ||||||
| } | } | ||||||
|  | // hide or show text of correction
 | ||||||
|  | function toggle_visibility(button){ | ||||||
|  | 	var divbox = button.parentNode.parentNode.parentNode; | ||||||
|  | 	var id = divbox.id; | ||||||
|  | 	var text = document.getElementById(id+'-text'); | ||||||
|  | 	if (text.style.display == 'none'){ | ||||||
|  | 		text.style.display = 'block'; | ||||||
|  | 	}else { | ||||||
|  | 		text.style.display = 'none'; | ||||||
|  | 	} | ||||||
|  | 	for (var i=0;i<comments.length-1;i++){ | ||||||
|  | 		 place_comments_one_div(comments[i][0], comments[i][1]) | ||||||
|  | 	} | ||||||
|  | }  | ||||||
| 
 | 
 | ||||||
| // show comment form, when 'edit' or 'comment' button pressed
 | // show comment form, when 'edit' or 'comment' button pressed
 | ||||||
| function box_edit(button, action) | function box_edit(button, action) | ||||||
|  |  | ||||||
|  | @ -15,7 +15,9 @@ | ||||||
| 	<br> | 	<br> | ||||||
| 	<i>Klikni na chybu, napiš komentář</i>  | | 	<i>Klikni na chybu, napiš komentář</i>  | | ||||||
| 	<a href="../">seznam souborů</a> | | 	<a href="../">seznam souborů</a> | | ||||||
| 	<a href="../help">nápověda</a> |          | | 	<a href="/admin/korektury/korekturovanepdf/">Spravovat PDF</a> | | ||||||
|  | 	<a href="../help">nápověda</a> | | ||||||
|  | 	          | | ||||||
| 	<a href="/">hlavní stránka</a> | | 	<a href="/">hlavní stránka</a> | | ||||||
| 	<a href="https://mam.mff.cuni.cz/wiki">wiki</a> | | 	<a href="https://mam.mff.cuni.cz/wiki">wiki</a> | | ||||||
| 	<hr/> | 	<hr/> | ||||||
|  | @ -24,7 +26,7 @@ | ||||||
| 		<!-- Pridat korekturu / komentar !--> | 		<!-- Pridat korekturu / komentar !--> | ||||||
| 		<form action='' onsubmit='save_scroll(this)' id="commform" method="POST"> | 		<form action='' onsubmit='save_scroll(this)' id="commform" method="POST"> | ||||||
| 			{% csrf_token %} | 			{% csrf_token %} | ||||||
| 			<input size="8" name="au" value="{{user.username}}"/> | 			<input size="24" name="au" value="{{user.first_name}} {{user.last_name}}" readonly/> | ||||||
| 			<input type=submit value="Oprav!"/> | 			<input type=submit value="Oprav!"/> | ||||||
| 			<button type="button" onclick="close_commform()">Zavřít</button> | 			<button type="button" onclick="close_commform()">Zavřít</button> | ||||||
| 	  		<br/> | 	  		<br/> | ||||||
|  | @ -142,6 +144,10 @@ | ||||||
| 				<button type='button' onclick='box_edit(this, "comment");' title='Komentovat'> | 				<button type='button' onclick='box_edit(this, "comment");' title='Komentovat'> | ||||||
|           <img src="{% static "korektury/imgs/comment.png" %}"/> |           <img src="{% static "korektury/imgs/comment.png" %}"/> | ||||||
| 				</button> | 				</button> | ||||||
|  | 				<button type='button' onclick='toggle_visibility(this);' title='Skrýt/Zobrazit'> | ||||||
|  |           <img src="{% static "korektury/imgs/hide.png" %}"/> | ||||||
|  | 				</button> | ||||||
|  | 
 | ||||||
| 			</div> | 			</div> | ||||||
| 		</div> | 		</div> | ||||||
| 		<div id='op{{o.id}}-text'>{{o.text}}</div> | 		<div id='op{{o.id}}-text'>{{o.text}}</div> | ||||||
|  | @ -176,9 +182,14 @@ | ||||||
| 	{% endfor %} | 	{% endfor %} | ||||||
| 
 | 
 | ||||||
| 	<script> | 	<script> | ||||||
|  | 	var comments = [ | ||||||
| 	{% for s in opravy_strany %} | 	{% for s in opravy_strany %} | ||||||
| 		place_comments_one_div("img-{{s.strana}}", [{% for o in s.op_id %}["op{{o.id}}",{{o.x}},{{o.y}}],{% endfor %}[]]); | 		["img-{{s.strana}}", [{% for o in s.op_id %}["op{{o.id}}",{{o.x}},{{o.y}}],{% endfor %}[]]], | ||||||
| 	{% endfor %} | 	{% endfor %} | ||||||
|  | 	[]] | ||||||
|  | 	for (var i=0;i<comments.length-1;i++){ | ||||||
|  | 		 place_comments_one_div(comments[i][0], comments[i][1]) | ||||||
|  | 	} | ||||||
| 	{% if scroll %} | 	{% if scroll %} | ||||||
| 		window.scrollTo(0,{{scroll}}); | 		window.scrollTo(0,{{scroll}}); | ||||||
| 	{% endif %} | 	{% endif %} | ||||||
|  |  | ||||||
|  | @ -12,7 +12,7 @@ | ||||||
| 
 | 
 | ||||||
| <ul> | <ul> | ||||||
|   {% for pdf in object_list  %} |   {% for pdf in object_list  %} | ||||||
| 	  <li> <b>{{ pdf.nazev }}</b> <i>{{pdf.komentar}}</i> <a href="/korektury/{{pdf.id}}">{{pdf.pdf.url}}</a> </li> | 	  <li> <b>{{ pdf.nazev }}</b> <i>{{pdf.komentar}}</i> <a href="/korektury/{{pdf.id}}">{{pdf.pdf.name}}</a> </li> | ||||||
|   {% empty %} |   {% empty %} | ||||||
|     <li> Nejsou žádné dokumenty ke korekturování. |     <li> Nejsou žádné dokumenty ke korekturování. | ||||||
|   {% endfor %} |   {% endfor %} | ||||||
|  |  | ||||||
|  | @ -1,24 +1,15 @@ | ||||||
| # -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||||||
| from django.shortcuts import render | from django.shortcuts import render | ||||||
| from django.shortcuts import get_object_or_404, render |  | ||||||
| from django.http import HttpResponseRedirect |  | ||||||
| from django.http import HttpResponse |  | ||||||
| from django.core.urlresolvers import reverse |  | ||||||
| from django.views import generic | from django.views import generic | ||||||
| from django.utils.translation import ugettext as _ | from django.utils.translation import ugettext as _ | ||||||
| from django.http import Http404 | from django.conf import settings | ||||||
| from django.http import HttpResponseRedirect |  | ||||||
| 
 | 
 | ||||||
| from .models import Oprava,Komentar,KorekturovanePDF | from .models import Oprava,Komentar,KorekturovanePDF | ||||||
| from .forms import OpravaForm | from .forms import OpravaForm | ||||||
| 
 | 
 | ||||||
| from datetime import timedelta, date, datetime |  | ||||||
| from itertools import groupby |  | ||||||
| import tempfile |  | ||||||
| import subprocess | import subprocess | ||||||
| import shutil | import shutil | ||||||
| import os | import os | ||||||
| from django.conf import settings |  | ||||||
| import unicodedata | import unicodedata | ||||||
| 
 | 
 | ||||||
| class KorekturyHelpView(generic.TemplateView): | class KorekturyHelpView(generic.TemplateView): | ||||||
|  | @ -39,7 +30,7 @@ class KorekturyView(generic.TemplateView): | ||||||
|         q = request.POST |         q = request.POST | ||||||
|         scroll = q.get('scroll') |         scroll = q.get('scroll') | ||||||
|         autor = q.get('au') |         autor = q.get('au') | ||||||
|         print "autor:" + str(autor) | 
 | ||||||
|         if not autor: |         if not autor: | ||||||
|             autor = 'anonym' |             autor = 'anonym' | ||||||
|         if not scroll: |         if not scroll: | ||||||
|  | @ -52,52 +43,52 @@ class KorekturyView(generic.TemplateView): | ||||||
|             y = int(q.get('y')) |             y = int(q.get('y')) | ||||||
|             text = q.get('txt') |             text = q.get('txt') | ||||||
|             strana = int(q.get('img-id')[4:]) |             strana = int(q.get('img-id')[4:]) | ||||||
|             pdf = KorekturovanePDF.objects.filter(id=q.get('pdf')).first() |             pdf = KorekturovanePDF.objects.get(id=q.get('pdf')) | ||||||
| 
 | 
 | ||||||
|             op = Oprava(x=x,y=y, autor=autor, text=text, strana=strana,pdf = pdf) |             op = Oprava(x=x,y=y, autor=autor, text=text, strana=strana,pdf = pdf) | ||||||
|             op.save() |             op.save() | ||||||
|         elif (action == u'del'): |         elif (action == u'del'): | ||||||
|             id = int(q.get('id')) |             id = int(q.get('id')) | ||||||
|             op = Oprava.objects.filter(id=id).first() |             op = Oprava.objects.get(id=id) | ||||||
|             op.delete() |             op.delete() | ||||||
|         elif (action == u'update'): |         elif (action == u'update'): | ||||||
|             id = int(q.get('id')) |             id = int(q.get('id')) | ||||||
|             op = Oprava.objects.filter(id=id).first() |             op = Oprava.objects.get(id=id) | ||||||
|             text = q.get('txt') |             text = q.get('txt') | ||||||
|             op.autor = autor |             op.autor = autor | ||||||
|             op.text = text |             op.text = text | ||||||
|             op.save() |             op.save() | ||||||
|         elif (action == u'undone'): |         elif (action == u'undone'): | ||||||
|             id = int(q.get('id')) |             id = int(q.get('id')) | ||||||
|             op = Oprava.objects.filter(id=id).first() |             op = Oprava.objects.get(id=id) | ||||||
|             op.status = op.STATUS_K_OPRAVE |             op.status = op.STATUS_K_OPRAVE | ||||||
|             op.save() |             op.save() | ||||||
|         elif (action == u'done'): |         elif (action == u'done'): | ||||||
|             id = int(q.get('id')) |             id = int(q.get('id')) | ||||||
|             op = Oprava.objects.filter(id=id).first() |             op = Oprava.objects.get(id=id) | ||||||
|             op.status = op.STATUS_OPRAVENO |             op.status = op.STATUS_OPRAVENO | ||||||
|             op.save() |             op.save() | ||||||
|         elif (action == u'wontfix'): |         elif (action == u'wontfix'): | ||||||
|             id = int(q.get('id')) |             id = int(q.get('id')) | ||||||
|             op = Oprava.objects.filter(id=id).first() |             op = Oprava.objects.get(id=id) | ||||||
|             op.status = op.STATUS_NENI_CHYBA |             op.status = op.STATUS_NENI_CHYBA | ||||||
|             op.save() |             op.save() | ||||||
|         elif (action == u'comment'): |         elif (action == u'comment'): | ||||||
|             id = int(q.get('id')) |             id = int(q.get('id')) | ||||||
|             op = Oprava.objects.filter(id=id).first() |             op = Oprava.objects.get(id=id) | ||||||
|             text = q.get('txt') |             text = q.get('txt') | ||||||
|             kom = Komentar(oprava=op,autor=autor,text=text) |             kom = Komentar(oprava=op,autor=autor,text=text) | ||||||
|             kom.save() |             kom.save() | ||||||
|         elif (action == u'update-comment'): |         elif (action == u'update-comment'): | ||||||
|             id = int(q.get('id')) |             id = int(q.get('id')) | ||||||
|             kom = Komentar.objects.filter(id=id).first() |             kom = Komentar.objects.get(id=id) | ||||||
|             text = q.get('txt') |             text = q.get('txt') | ||||||
|             kom.text = text |             kom.text = text | ||||||
|             kom.autor = autor |             kom.autor = autor | ||||||
|             kom.save() |             kom.save() | ||||||
|         elif (action == u'del-comment'): |         elif (action == u'del-comment'): | ||||||
|             id = int(q.get('id')) |             id = int(q.get('id')) | ||||||
|             kom = Komentar.objects.filter(id=id).first() |             kom = Komentar.objects.get(id=id) | ||||||
|             kom.delete() |             kom.delete() | ||||||
|         elif (action == u'delall'): |         elif (action == u'delall'): | ||||||
|             pdf = KorekturovanePDF.objects.filter(id=q.get('pdf')) |             pdf = KorekturovanePDF.objects.filter(id=q.get('pdf')) | ||||||
|  | @ -116,24 +107,14 @@ class KorekturyView(generic.TemplateView): | ||||||
|             elif (q.get('state') == u'deprecated'): |             elif (q.get('state') == u'deprecated'): | ||||||
|                 pdf.status = pdf.STATUS_ZASTARALE |                 pdf.status = pdf.STATUS_ZASTARALE | ||||||
|             pdf.save() |             pdf.save() | ||||||
|              |  | ||||||
| 
 |  | ||||||
|              |  | ||||||
| 
 |  | ||||||
| #        return HttpResponse(u'Keys: %s '%(q.iteitems())) |  | ||||||
| #        return HttpResponse(u'Oprav: %d, akce: %s'%( |  | ||||||
| #            len(Oprava.objects.all()),action)) |  | ||||||
|   |  | ||||||
| #        return HttpResponseRedirect(reverse('korektury')+"?scroll=%s"%(scroll)) |  | ||||||
|         context = self.get_context_data() |         context = self.get_context_data() | ||||||
|         context['scroll'] = scroll |         context['scroll'] = scroll | ||||||
|         context['autor'] = autor |         context['autor'] = autor | ||||||
|         return render(request, 'korektury/opraf.html',context) |         return render(request, 'korektury/opraf.html',context) | ||||||
| #        return HttpResponse(u'Oprav: %d,x: %d y: %d, autor: %s, text: %s, strana: %d'%( | 
 | ||||||
| #            len(Oprava.objects.all()),x,y,autor,text,strana)) |  | ||||||
|     def get_context_data(self, **kwargs): |     def get_context_data(self, **kwargs): | ||||||
|         context = super(KorekturyView,self).get_context_data(**kwargs) |         context = super(KorekturyView,self).get_context_data(**kwargs) | ||||||
|         pdf = KorekturovanePDF.objects.filter(id=self.kwargs['pdf']).first() |         pdf = KorekturovanePDF.objects.get(id=self.kwargs['pdf']) | ||||||
|         context['pdf'] = pdf |         context['pdf'] = pdf | ||||||
|         context['img_name'] = os.path.split(pdf.pdf.path)[1].split('.')[0] |         context['img_name'] = os.path.split(pdf.pdf.path)[1].split('.')[0] | ||||||
|         context['img_path'] = settings.KOREKTURY_IMG_DIR |         context['img_path'] = settings.KOREKTURY_IMG_DIR | ||||||
|  |  | ||||||
|  | @ -2,6 +2,7 @@ from django.conf.urls import *  # NOQA | ||||||
| from django.conf.urls import patterns, url | from django.conf.urls import patterns, url | ||||||
| from django.contrib.auth.decorators import user_passes_test | from django.contrib.auth.decorators import user_passes_test | ||||||
| from . import views, export | from . import views, export | ||||||
|  | from utils import staff_member_required | ||||||
| 
 | 
 | ||||||
| staff_member_required = user_passes_test(lambda u: u.is_staff) | staff_member_required = user_passes_test(lambda u: u.is_staff) | ||||||
| 
 | 
 | ||||||
|  | @ -20,7 +21,6 @@ urlpatterns = [ | ||||||
|         name = 'seminar_seznam_soustredeni'), |         name = 'seminar_seznam_soustredeni'), | ||||||
|     url(r'^soustredeni/probehlo/(?P<soustredeni>\d+)/$', views.SoustredeniView.as_view(), name='seminar_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+)/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/aktualni/$', views.AktualniZadaniView, name='seminar_aktualni_zadani'), | ||||||
|     url(r'^zadani/temata/$', views.ZadaniTemataView, name='seminar_temata'), |     url(r'^zadani/temata/$', views.ZadaniTemataView, name='seminar_temata'), | ||||||
|  | @ -31,16 +31,22 @@ urlpatterns = [ | ||||||
|     url(r'^clanky/resitel/$', views.ClankyResitelView.as_view(), name='clanky_resitel'), |     url(r'^clanky/resitel/$', views.ClankyResitelView.as_view(), name='clanky_resitel'), | ||||||
|     url(r'^clanky/org/$', views.ClankyOrganizatorView.as_view(), name='clanky_organizator'), |     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-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/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'^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$',  |     url(r'^cislo/(?P<rocnik>\d+).(?P<cislo>\d+)/resitel_uloha.html$',  | ||||||
|         staff_member_required(views.resitelUlohaView),name='seminar_cislo_resitel_uloha'), |         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 -*- | # -*- coding: utf-8 -*- | ||||||
| 
 | 
 | ||||||
| import datetime | 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): | def histogram(seznam): | ||||||
|     d = {} |     d = {} | ||||||
|  | @ -76,3 +78,5 @@ def seznam_problemu(): | ||||||
| 
 | 
 | ||||||
|     return problemy |     return problemy | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Bc. Petr Pecha
						Bc. Petr Pecha