Merge branch 'test'
This commit is contained in:
commit
743d8056da
13 changed files with 126 additions and 104 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -27,3 +27,6 @@
|
||||||
# org poznamky
|
# org poznamky
|
||||||
schemata
|
schemata
|
||||||
TODO
|
TODO
|
||||||
|
|
||||||
|
# .htpasswd kvůli přihlášení
|
||||||
|
.htpasswd
|
||||||
|
|
9
Makefile
9
Makefile
|
@ -119,12 +119,13 @@ sync_test: sync_test_media sync_test_db
|
||||||
# Does not sync Galerie and CACHE (too huge).
|
# Does not sync Galerie and CACHE (too huge).
|
||||||
sync_local_media:
|
sync_local_media:
|
||||||
rsync -ave ssh --exclude Galerie --exclude CACHE\
|
rsync -ave ssh --exclude Galerie --exclude CACHE\
|
||||||
www-mam@atrey.karlin.mff.cuni.cz:/akce/MaM/WWW/mamweb-prod/media/ ./media/
|
mam-web@gimli.ms.mff.cuni.cz:/akce/mam/www/mamweb-prod/media/ ./media/
|
||||||
# Downloads and restores production database to local database. PostgreSQL only.
|
# Downloads and restores production database to local database. PostgreSQL only.
|
||||||
sync_local_db:
|
sync_local_db:
|
||||||
scp www-mam@atrey.karlin.mff.cuni.cz:`ssh www-mam@atrey.karlin.mff.cuni.cz 'ls -v /akce/MaM/WWW/backups/mam-prod-*\.pgdump | tail -n 1'` \
|
scp mam-web@gimli.ms.mff.cuni.cz:`ssh mam-web@gimli.ms.mff.cuni.cz 'ls -v /akce/mam/www/backups/mam_prod-*\.pgdump.xz | tail -n 1'` \
|
||||||
./last.pgdump
|
./last.pgdump.xz
|
||||||
pg_restore -c -d mam_prod last.pgdump
|
xz -fd last.pgdump.xz
|
||||||
|
pg_restore -c -d mam-prod last.pgdump
|
||||||
|
|
||||||
# Sync database and media. See above lines
|
# Sync database and media. See above lines
|
||||||
sync_local: sync_media sync_db
|
sync_local: sync_media sync_db
|
||||||
|
|
|
@ -7,10 +7,10 @@
|
||||||
<script src="{% static "korektury/opraf.js"%}"></script>
|
<script src="{% static "korektury/opraf.js"%}"></script>
|
||||||
<title>Korektury {{pdf.nazev}}</title>
|
<title>Korektury {{pdf.nazev}}</title>
|
||||||
</head>
|
</head>
|
||||||
<body {% if pdf.status = 'zanaseni'%} class="comitting" {% elif pdf.status = 'zastarale' %} class="deprecated" {% endif %} onload='place_comments()'>
|
<body {% if pdf.status == 'zanaseni'%} class="comitting" {% elif pdf.status == 'zastarale' %} class="deprecated" {% endif %} onload='place_comments()'>
|
||||||
<h1>Korektury {{pdf.nazev}}</h1>
|
<h1>Korektury {{pdf.nazev}}</h1>
|
||||||
{% if pdf.status = 'zanaseni' %} <h2> Probíhá zanášení korektur, zvažte, zda chcete přidávat nové </h2> {% endif %}
|
{% if pdf.status == 'zanaseni' %} <h2> Probíhá zanášení korektur, zvažte, zda chcete přidávat nové </h2> {% endif %}
|
||||||
{% if pdf.status = 'zastarale' %} <h2> Toto PDF je již zastaralé, nepřidávejte nové korektury </h2> {% endif %}
|
{% if pdf.status == 'zastarale' %} <h2> Toto PDF je již zastaralé, nepřidávejte nové korektury </h2> {% endif %}
|
||||||
<i>{{pdf.komentar}}</i>
|
<i>{{pdf.komentar}}</i>
|
||||||
<br>
|
<br>
|
||||||
<i>Klikni na chybu, napiš komentář</i> |
|
<i>Klikni na chybu, napiš komentář</i> |
|
||||||
|
@ -60,11 +60,11 @@
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<input type='hidden' name='action' value='set-state'/>
|
<input type='hidden' name='action' value='set-state'/>
|
||||||
<input type='hidden' name='pdf' value='{{pdf.id}}'/>
|
<input type='hidden' name='pdf' value='{{pdf.id}}'/>
|
||||||
<input type="radio" name="state" value="adding" {% if pdf.status = 'pridavani' %} checked {% endif %}>Přidávání korektur
|
<input type="radio" name="state" value="adding" {% if pdf.status == 'pridavani' %} checked {% endif %}>Přidávání korektur
|
||||||
<br>
|
<br>
|
||||||
<input type="radio" name="state" value="comitting" {% if pdf.status = 'zanaseni' %} checked {% endif %}>Zanášení korektur
|
<input type="radio" name="state" value="comitting" {% if pdf.status == 'zanaseni' %} checked {% endif %}>Zanášení korektur
|
||||||
<br>
|
<br>
|
||||||
<input type="radio" name="state" value="deprecated" {% if pdf.status = 'zastarale' %} checked {% endif %}>Zastaralé, nekorigovat
|
<input type="radio" name="state" value="deprecated" {% if pdf.status == 'zastarale' %} checked {% endif %}>Zastaralé, nekorigovat
|
||||||
<br>
|
<br>
|
||||||
<input type='submit' value='Změnit stav PDF'/>
|
<input type='submit' value='Změnit stav PDF'/>
|
||||||
</form>
|
</form>
|
||||||
|
@ -81,12 +81,12 @@
|
||||||
{% for o in opravy %}
|
{% for o in opravy %}
|
||||||
<div onclick='img_click(this,event)'
|
<div onclick='img_click(this,event)'
|
||||||
id='op{{o.id}}-pointer'
|
id='op{{o.id}}-pointer'
|
||||||
class='pointer{%if o.status = 'opraveno' %}-done{% elif o.status = 'neni_chyba' %}-wontfix{% elif o.status = 'k_zaneseni' %}-ready{% endif %}'>
|
class='pointer{%if o.status == 'opraveno' %}-done{% elif o.status == 'neni_chyba' %}-wontfix{% elif o.status == 'k_zaneseni' %}-ready{% endif %}'>
|
||||||
</div>
|
</div>
|
||||||
<div name='op{{o.id}}' id='op{{o.id}}'
|
<div name='op{{o.id}}' id='op{{o.id}}'
|
||||||
class='box{%if o.status = 'opraveno' %}-done{% elif o.status = 'neni_chyba' %}-wontfix{% elif o.status = 'k_zaneseni' %}-ready{% endif %}'
|
class='box{%if o.status == 'opraveno' %}-done{% elif o.status == 'neni_chyba' %}-wontfix{% elif o.status == 'k_zaneseni' %}-ready{% endif %}'
|
||||||
onmouseover='box_onmouseover(this,{% if o.status = 'opraveno' %}"done"{% elif o.status = 'neni_chyba' %}"wontfix"{% elif o.status = 'k_zaneseni' %}"ready"{% else %}""{% endif %})'
|
onmouseover='box_onmouseover(this,{% if o.status == 'opraveno' %}"done"{% elif o.status == 'neni_chyba' %}"wontfix"{% elif o.status == 'k_zaneseni' %}"ready"{% else %}""{% endif %})'
|
||||||
onmouseout='box_onmouseout(this, {% if o.status = 'opraveno' %}"done"{% elif o.status = 'neni_chyba' %}"wontfix"{% elif o.status = 'k_zaneseni' %}"ready"{% else %}""{% endif %})'>
|
onmouseout='box_onmouseout(this, {% if o.status == 'opraveno' %}"done"{% elif o.status == 'neni_chyba' %}"wontfix"{% elif o.status == 'k_zaneseni' %}"ready"{% else %}""{% endif %})'>
|
||||||
|
|
||||||
<div class='corr-header'>
|
<div class='corr-header'>
|
||||||
<span class='author' id='op{{o.id}}-autor'>{{o.autor}}</span>
|
<span class='author' id='op{{o.id}}-autor'>{{o.autor}}</span>
|
||||||
|
@ -142,7 +142,7 @@
|
||||||
<img src="{% static "korektury/imgs/edit.png" %}"/>
|
<img src="{% static "korektury/imgs/edit.png" %}"/>
|
||||||
</button>
|
</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if o.status = 'opraveno' or o.status = 'neni_chyba' %}
|
{% if o.status == 'opraveno' or o.status == 'neni_chyba' %}
|
||||||
<button type='button' title='Korekturu nelze komentovat, protože už je uzavřená'>
|
<button type='button' title='Korekturu nelze komentovat, protože už je uzavřená'>
|
||||||
<img src="{% static "korektury/imgs/comment-gr.png" %}"/>
|
<img src="{% static "korektury/imgs/comment-gr.png" %}"/>
|
||||||
</button>
|
</button>
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
{% for pdf in object_list %}
|
{% for pdf in object_list %}
|
||||||
<li><span {% if pdf.status = 'zanaseni'%} class="comitting-text" {% elif pdf.status = 'zastarale' %} class="deprecated-text" {% endif %}> <b>{{ pdf.nazev }}</b> <i>{{pdf.komentar}}</i> <a href="/korektury/{{pdf.id}}">{{pdf.pdf.name}}</a> </span> </li>
|
<li><span {% if pdf.status == 'zanaseni'%} class="comitting-text" {% elif pdf.status == 'zastarale' %} class="deprecated-text" {% endif %}> <b>{{ pdf.nazev }}</b> <i>{{pdf.komentar}}</i> <a href="/korektury/{{pdf.id}}">{{pdf.pdf.name}}</a> </span> </li>
|
||||||
{% empty %}
|
{% empty %}
|
||||||
<li> Nejsou žádné dokumenty ke korekturování.
|
<li> Nejsou žádné dokumenty ke korekturování.
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -6,10 +6,10 @@ from django.contrib.flatpages.admin import FlatPageAdmin as FlatPageAdminOld
|
||||||
from django.contrib.flatpages.admin import FlatpageForm as FlatpageFormOld
|
from django.contrib.flatpages.admin import FlatpageForm as FlatpageFormOld
|
||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from ckeditor.widgets import CKEditorWidget
|
from ckeditor_uploader.widgets import CKEditorUploadingWidget
|
||||||
|
|
||||||
class FlatpageForm(FlatpageFormOld):
|
class FlatpageForm(FlatpageFormOld):
|
||||||
content = forms.CharField(widget=CKEditorWidget())
|
content = forms.CharField(widget=CKEditorUploadingWidget())
|
||||||
class Meta:
|
class Meta:
|
||||||
model = FlatPage # this is not automatically inherited from FlatpageFormOld
|
model = FlatPage # this is not automatically inherited from FlatpageFormOld
|
||||||
exclude = []
|
exclude = []
|
||||||
|
|
|
@ -100,6 +100,7 @@ INSTALLED_APPS = (
|
||||||
'django_countries',
|
'django_countries',
|
||||||
'solo',
|
'solo',
|
||||||
'ckeditor',
|
'ckeditor',
|
||||||
|
'ckeditor_uploader',
|
||||||
'taggit',
|
'taggit',
|
||||||
'autocomplete_light',
|
'autocomplete_light',
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,9 @@ import os.path
|
||||||
# Import common settings
|
# Import common settings
|
||||||
from .settings_common import *
|
from .settings_common import *
|
||||||
|
|
||||||
|
MIDDLEWARE_CLASSES += (
|
||||||
|
'debug_toolbar.middleware.DebugToolbarMiddleware',
|
||||||
|
)
|
||||||
|
|
||||||
# Quick-start development settings - unsuitable for production
|
# Quick-start development settings - unsuitable for production
|
||||||
# See https://docs.djangoproject.com/en/1.7/howto/deployment/checklist/
|
# See https://docs.djangoproject.com/en/1.7/howto/deployment/checklist/
|
||||||
|
@ -22,7 +25,7 @@ INSTALLED_APPS += (
|
||||||
# SECURITY WARNING: don't run with debug turned on in production!
|
# SECURITY WARNING: don't run with debug turned on in production!
|
||||||
DEBUG = True
|
DEBUG = True
|
||||||
|
|
||||||
TEMPLATE_DEBUG = True
|
TEMPLATES[0]['OPTIONS']['debug'] = True
|
||||||
|
|
||||||
ALLOWED_HOSTS = ['127.0.0.1']
|
ALLOWED_HOSTS = ['127.0.0.1']
|
||||||
|
|
||||||
|
@ -48,7 +51,3 @@ DATABASES = {
|
||||||
# set to 'DEBUG' for EXTRA verbose output
|
# set to 'DEBUG' for EXTRA verbose output
|
||||||
LOGGING['handlers']['console']['level'] = 'INFO'
|
LOGGING['handlers']['console']['level'] = 'INFO'
|
||||||
|
|
||||||
# So that it is not necessary to restart the server every time a template is
|
|
||||||
# changed
|
|
||||||
TEMPLATE_LOADERS = ('django.template.loaders.filesystem.Loader',
|
|
||||||
'django.template.loaders.app_directories.Loader')
|
|
||||||
|
|
|
@ -50,7 +50,7 @@ SERVER_EMAIL = 'mamweb-prod-errors@mam.mff.cuni.cz'
|
||||||
ADMINS = [
|
ADMINS = [
|
||||||
('Tomas Gavenciak', 'gavento@gmail.com'),
|
('Tomas Gavenciak', 'gavento@gmail.com'),
|
||||||
('Matěj Kocián', 'matej.kocian@gmail.com'),
|
('Matěj Kocián', 'matej.kocian@gmail.com'),
|
||||||
('M&M ERRORs', 'mam-errors@atrey.karlin.mff.cuni.cz'),
|
('M&M ERRORs', 'mam-errors@mam.mff.cuni.cz'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,9 @@ import os.path
|
||||||
# Import common settings
|
# Import common settings
|
||||||
from .settings_common import * # zatim nutne, casem snad vyresime # noqa
|
from .settings_common import * # zatim nutne, casem snad vyresime # noqa
|
||||||
|
|
||||||
|
MIDDLEWARE_CLASSES += (
|
||||||
|
'debug_toolbar.middleware.DebugToolbarMiddleware',
|
||||||
|
)
|
||||||
|
|
||||||
# Quick-start development settings - unsuitable for production
|
# Quick-start development settings - unsuitable for production
|
||||||
# See https://docs.djangoproject.com/en/1.7/howto/deployment/checklist/
|
# See https://docs.djangoproject.com/en/1.7/howto/deployment/checklist/
|
||||||
|
@ -27,7 +30,7 @@ SECRET_KEY = ')^u=i65*zmr_k53a*@f4q_+ji^o@!pgpef*5&8c7zzv9l+zo)n'
|
||||||
# SECURITY WARNING: don't run with debug turned on in production!
|
# SECURITY WARNING: don't run with debug turned on in production!
|
||||||
DEBUG = True
|
DEBUG = True
|
||||||
|
|
||||||
TEMPLATE_DEBUG = False
|
TEMPLATES[0]['OPTIONS']['debug'] = True
|
||||||
|
|
||||||
ALLOWED_HOSTS = ['*.mam.mff.cuni.cz', 'atrey.karlin.mff.cuni.cz', 'mam.mff.cuni.cz', 'mam-test.kam.mff.cuni.cz', 'gimli.ms.mff.cuni.cz']
|
ALLOWED_HOSTS = ['*.mam.mff.cuni.cz', 'atrey.karlin.mff.cuni.cz', 'mam.mff.cuni.cz', 'mam-test.kam.mff.cuni.cz', 'gimli.ms.mff.cuni.cz']
|
||||||
|
|
||||||
|
@ -49,7 +52,7 @@ import os
|
||||||
|
|
||||||
SERVER_EMAIL = 'mamweb-test-errors@mam.mff.cuni.cz'
|
SERVER_EMAIL = 'mamweb-test-errors@mam.mff.cuni.cz'
|
||||||
ADMINS = [
|
ADMINS = [
|
||||||
('M&M ERRORs', 'mam-errors@atrey.karlin.mff.cuni.cz'),
|
('M&M ERRORs', 'mam-errors@mam.mff.cuni.cz'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ from django import forms
|
||||||
from django.forms import widgets
|
from django.forms import widgets
|
||||||
from reversion.admin import VersionAdmin
|
from reversion.admin import VersionAdmin
|
||||||
from solo.admin import SingletonModelAdmin
|
from solo.admin import SingletonModelAdmin
|
||||||
from ckeditor.widgets import CKEditorWidget
|
from ckeditor_uploader.widgets import CKEditorUploadingWidget
|
||||||
from django.db.models import Count
|
from django.db.models import Count
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
|
@ -402,9 +402,9 @@ from autocomplete_light.contrib.taggit_field import TaggitField, TaggitWidget
|
||||||
|
|
||||||
|
|
||||||
class ProblemAdminForm(forms.ModelForm):
|
class ProblemAdminForm(forms.ModelForm):
|
||||||
text_zadani = forms.CharField(widget=CKEditorWidget(), required=False, **field_labels(Problem, 'text_zadani'))
|
text_zadani = forms.CharField(widget=CKEditorUploadingWidget(), required=False, **field_labels(Problem, 'text_zadani'))
|
||||||
text_reseni = forms.CharField(widget=CKEditorWidget(), required=False, **field_labels(Problem, 'text_reseni'))
|
text_reseni = forms.CharField(widget=CKEditorUploadingWidget(), required=False, **field_labels(Problem, 'text_reseni'))
|
||||||
text_org = forms.CharField(widget=CKEditorWidget(), required=False, **field_labels(Problem, 'text_org'))
|
text_org = forms.CharField(widget=CKEditorUploadingWidget(), required=False, **field_labels(Problem, 'text_org'))
|
||||||
zamereni = TaggitField(widget=TaggitWidget('TagAutocomplete'), required=False)
|
zamereni = TaggitField(widget=TaggitWidget('TagAutocomplete'), required=False)
|
||||||
autor = UserModelChoiceField(User.objects.filter(is_staff=True))
|
autor = UserModelChoiceField(User.objects.filter(is_staff=True))
|
||||||
opravovatel = UserModelChoiceField(User.objects.filter(is_staff=True), required=False)
|
opravovatel = UserModelChoiceField(User.objects.filter(is_staff=True), required=False)
|
||||||
|
@ -536,9 +536,9 @@ create_modeladmin(ProblemZadanyAdmin, Problem, 'ProblemZadany', verbose_name=u'P
|
||||||
### Prispevek (k tematkum)
|
### Prispevek (k tematkum)
|
||||||
|
|
||||||
class PrispevekAdminForm(forms.ModelForm):
|
class PrispevekAdminForm(forms.ModelForm):
|
||||||
text_org = forms.CharField(widget=CKEditorWidget(), required=False,
|
text_org = forms.CharField(widget=CKEditorUploadingWidget(), required=False,
|
||||||
**field_labels(Prispevek, 'text_org'))
|
**field_labels(Prispevek, 'text_org'))
|
||||||
text_resitel = forms.CharField(widget=CKEditorWidget(), required=False,
|
text_resitel = forms.CharField(widget=CKEditorUploadingWidget(), required=False,
|
||||||
**field_labels(Prispevek, 'text_resitel'))
|
**field_labels(Prispevek, 'text_resitel'))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -554,7 +554,7 @@ admin.site.register(Prispevek, PrispevekAdmin)
|
||||||
### Soustredeni
|
### Soustredeni
|
||||||
|
|
||||||
class SoustredeniAdminForm(forms.ModelForm):
|
class SoustredeniAdminForm(forms.ModelForm):
|
||||||
text = forms.CharField(widget=CKEditorWidget(), required=False, **field_labels(Soustredeni, 'text'))
|
text = forms.CharField(widget=CKEditorUploadingWidget(), required=False, **field_labels(Soustredeni, 'text'))
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Soustredeni
|
model = Soustredeni
|
||||||
exclude = []
|
exclude = []
|
||||||
|
@ -595,7 +595,7 @@ admin.site.register(Konfera,KonferaAdmin)
|
||||||
### Novinky
|
### Novinky
|
||||||
|
|
||||||
class NovinkyAdminForm(forms.ModelForm):
|
class NovinkyAdminForm(forms.ModelForm):
|
||||||
text = forms.CharField(widget=CKEditorWidget(), required=False,
|
text = forms.CharField(widget=CKEditorUploadingWidget(), required=False,
|
||||||
**field_labels(Novinky, 'text'))
|
**field_labels(Novinky, 'text'))
|
||||||
autor = UserModelChoiceField(User.objects.filter(is_staff=True))
|
autor = UserModelChoiceField(User.objects.filter(is_staff=True))
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
\setlength{\tabcolsep}{3pt}
|
\setlength{\tabcolsep}{3pt}
|
||||||
\begin{longtable}{|r|l|c|r|{% for p in problemy %}c@{\hskip.5em}{% endfor %}|r|r|}\hline
|
\begin{longtable}{|r|l|c|r|{% for p in problemy %}c@{\hskip.5em}{% endfor %}|r|r|}\hline
|
||||||
& & & & \multicolumn{ {{ problemy|length}} }{c|}{\textbf{Úlohy}} & & \\\textbf{Poř.}& \textbf{Jméno}& \textbf{R.}& \raisebox{0.7mm}{$\sum_{-1}$}& {% for p in problemy %}{% if p.typ == "uloha" %}\textbf{r{{p.kod}}}&{% elif p.typ = "tema" %}\textbf{t{{p.kod}}}&{% else %}\textbf{ {{p.kod}} }&{% endif %}{% endfor %}\raisebox{0.7mm}{$\sum_0$}&\raisebox{0.7mm}{$\sum_1$}\\\hline
|
& & & & \multicolumn{ {{ problemy|length}} }{c|}{\textbf{Úlohy}} & & \\\textbf{Poř.}& \textbf{Jméno}& \textbf{R.}& \raisebox{0.7mm}{$\sum_{-1}$}& {% for p in problemy %}{% if p.typ == "uloha" %}\textbf{r{{p.kod}}}&{% elif p.typ == "tema" %}\textbf{t{{p.kod}}}&{% else %}\textbf{ {{p.kod}} }&{% endif %}{% endfor %}\raisebox{0.7mm}{$\sum_0$}&\raisebox{0.7mm}{$\sum_1$}\\\hline
|
||||||
\endhead
|
\endhead
|
||||||
\hline
|
\hline
|
||||||
\endfoot
|
\endfoot
|
||||||
|
|
|
@ -1,79 +1,97 @@
|
||||||
{% autoescape off %}
|
{% autoescape off %}
|
||||||
{% load staticfiles %}
|
{% load staticfiles %}
|
||||||
{% load tex %}
|
{% load tex %}
|
||||||
\input czech.sty
|
\documentclass[11pt,a4paper,landscape]{article}
|
||||||
\input epsf
|
\usepackage[top=3.75cm,left=8cm]{geometry}
|
||||||
\special{landscape}
|
\usepackage[T1]{fontenc}
|
||||||
\nopagenumbers
|
\usepackage[utf8]{inputenc}
|
||||||
\hoffset=-1in
|
\usepackage[czech]{babel}
|
||||||
\voffset=-1in
|
\usepackage{graphicx}
|
||||||
\advance\voffset by 0.9cm
|
\begin{document}
|
||||||
%nove pridano, aby to fungovalo...
|
|
||||||
\advance\hoffset by 6.5cm
|
|
||||||
\hsize=22cm
|
|
||||||
\vsize=16cm
|
|
||||||
|
|
||||||
\font\adrfonta=csssbx10 at 14pt
|
% Nechceme číslování stránek
|
||||||
\font\adrfontb=csssbx10 at 12pt
|
\pagenumbering{gobble}
|
||||||
\font\adrfontc=csss12
|
|
||||||
\font\tofont=csr12 at 16pt
|
|
||||||
|
|
||||||
\newdimen\fromskip
|
% Různé fonty na obálce
|
||||||
\newdimen\toskip
|
\def\adrfonta#1{%
|
||||||
\fromskip=4.35cm
|
\fontsize{14pt}{14.5pt}\selectfont \textbf{\textsf{#1}}%Časopis M&M
|
||||||
\toskip=13.2cm
|
}
|
||||||
|
\def\adrfontb#1{%
|
||||||
\def\first{\relax}
|
\fontsize{12pt}{13pt}\selectfont \textbf{\textsf{#1}}%OPMK UK MFF
|
||||||
|
}
|
||||||
|
\def\adrfontc#1{%
|
||||||
|
\fontsize{12pt}{13pt}\selectfont \textsf{#1}%Adresa, telefon, e-mail
|
||||||
|
}
|
||||||
|
\def\tofont#1{%
|
||||||
|
\fontsize{16pt}{18pt}\selectfont #1%Adresa řešitele
|
||||||
|
}
|
||||||
|
|
||||||
|
%Podtržítko je znak
|
||||||
\catcode`_=13
|
\catcode`_=13
|
||||||
%\catcode`_=12
|
|
||||||
|
|
||||||
\def_{$\_$}
|
\def_{$\_$}
|
||||||
|
|
||||||
\advance\voffset by 2.5cm
|
% Odsazení různých adres
|
||||||
|
\parindent=0pt
|
||||||
|
%\newdimen\fromskip
|
||||||
|
\newdimen\toskip
|
||||||
|
%\fromskip=4.35cm
|
||||||
|
\toskip=11.7cm
|
||||||
|
|
||||||
|
% Předsunutí -- na PSČ
|
||||||
|
\def\predsunout#1{%
|
||||||
|
\setbox0=\hbox{#1\,}%
|
||||||
|
\hskip -\wd0\relax%
|
||||||
|
\box0
|
||||||
|
}
|
||||||
|
|
||||||
\def\obalka#1#2#3#4#5#6#7{
|
% Makro na TeXáni naší adresy
|
||||||
|
\def\adresaMaM{%
|
||||||
|
\hbox{\adrfonta{Časopis M\&M,}}
|
||||||
|
\vskip 3 pt
|
||||||
|
\hbox{\adrfontb{OPMK UK MFF}}
|
||||||
|
\vskip 3 pt
|
||||||
|
\hbox{\adrfontc{Ke Karlovu 3, 121 16 Praha 2}}
|
||||||
|
\hbox{\adrfontc{Tel.: +420 221 911 235}}
|
||||||
|
\hbox{\adrfontc{mam@matfyz.cz}}
|
||||||
|
}
|
||||||
|
|
||||||
\def\jmeno{#1}
|
% Makro na TeXání adresátovy adresy
|
||||||
\def\prijm{#2}
|
\def\adresat#1#2#3#4#5#6#7{%
|
||||||
\def\skola{#3}
|
\def\jmeno{#1}%
|
||||||
\def\popis{}
|
\def\prijm{#2}%
|
||||||
\def\first{}
|
\def\skola{#3}%
|
||||||
\def\ulice{#4}
|
%\def\popis{}
|
||||||
\def\PSC{#5}
|
%\def\first{}
|
||||||
\def\mesto{#6}
|
\def\ulice{#4}%
|
||||||
\def\stat{#7}
|
\def\PSC{#5}%
|
||||||
\vskip-4mm\vbox to 0pt{\hbox to 0pt{\hskip1.4cm\epsfysize=2.55cm\epsfbox{lisak.eps}\hss}\vss}
|
\def\mesto{#6}%
|
||||||
|
\def\stat{#7}%
|
||||||
|
|
||||||
\baselineskip=13pt
|
\hbox{\tofont{\jmeno\ \prijm}}
|
||||||
\parindent=\fromskip
|
\vskip .2 em
|
||||||
\line{\indent\adrfonta Časopis M\&M,\hfil}
|
|
||||||
\vskip3pt
|
|
||||||
\line{\indent\adrfontb OPMK UK MFF\hfil}
|
|
||||||
\vskip3pt
|
|
||||||
\line{\indent\adrfontc Ke Karlovu 3, 121 16 Praha 2\hfil}
|
|
||||||
\line{\indent\adrfontc Tel.: +420 221 911 235\hss}
|
|
||||||
\line{\indent\adrfontc mam@atrey.karlin.mff.cuni.cz\hfil}
|
|
||||||
|
|
||||||
\vskip6.15cm
|
|
||||||
\vbox to 0pt{\parindent=1.4cm\hsize=\toskip\advance\hsize by -1cm
|
|
||||||
\vbox to 60pt{\vfil} \popis\vss}
|
|
||||||
\parindent=\toskip
|
|
||||||
\baselineskip=18pt
|
|
||||||
\line{\indent\tofont\first\hfil}
|
|
||||||
\line{\indent\tofont\jmeno\ \prijm\hfil}
|
|
||||||
\ifx \skola \empty
|
\ifx \skola \empty
|
||||||
{}
|
{}
|
||||||
\else
|
\else
|
||||||
\line{\indent\tofont\skola\hfil}
|
\hbox{\tofont{\skola}}
|
||||||
\fi
|
\fi
|
||||||
\line{\indent\tofont\ulice\hfil}
|
\vskip .2 em
|
||||||
\line{\tofont\item{\PSC} \mesto\hfil}
|
\hbox{\tofont{\ulice}}
|
||||||
\vskip5pt
|
\vskip .2 em
|
||||||
\line{\indent\tofont\stat\hfil}
|
\vskip .2 em
|
||||||
|
\hbox to 18pt{\tofont{\predsunout{\PSC\ }\mesto}}
|
||||||
|
\vskip 5 pt
|
||||||
|
\tofont{\stat}
|
||||||
|
}
|
||||||
|
|
||||||
\vfil\eject
|
% Tohle makro vysází samotnou obálku
|
||||||
|
\def\obalka#1#2#3#4#5#6#7{
|
||||||
|
% Horní a pravý okraj je zároveň okraj stránky, resetujeme odsazení
|
||||||
|
\includegraphics[height=2.55cm]{lisak.eps}\hskip 1 em\vbox{%
|
||||||
|
\adresaMaM}
|
||||||
|
\vskip 7.3 cm % Od oka
|
||||||
|
\hskip\toskip%
|
||||||
|
\vbox{\adresat{#1}{#2}{#3}{#4}{#5}{#6}{#7}}
|
||||||
|
\vfill\eject
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -98,6 +116,6 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endspaceless %}
|
{% endspaceless %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
\bye
|
\end{document}
|
||||||
|
|
||||||
{% endautoescape %}
|
{% endautoescape %}
|
||||||
|
|
|
@ -502,7 +502,7 @@ class CisloView(generic.DetailView):
|
||||||
class ArchivTemataView(generic.ListView):
|
class ArchivTemataView(generic.ListView):
|
||||||
model = Problem
|
model = Problem
|
||||||
template_name = 'seminar/archiv/temata.html'
|
template_name = 'seminar/archiv/temata.html'
|
||||||
queryset = Problem.objects.filter(typ=Problem.TYP_TEMA, stav=Problem.STAV_ZADANY).select_related('cislo_zadani__rocnik__rocnik').order_by('-cislo_zadani__rocnik__rocnik', 'kod')
|
queryset = Problem.objects.filter(typ=Problem.TYP_TEMA, stav=Problem.STAV_ZADANY).select_related('cislo_zadani__rocnik').order_by('-cislo_zadani__rocnik__rocnik', 'kod')
|
||||||
|
|
||||||
### Generovani vysledkovky
|
### Generovani vysledkovky
|
||||||
|
|
||||||
|
@ -552,9 +552,8 @@ def aktivniResitele(rocnik,cislo):
|
||||||
if int(cislo) > 3:
|
if int(cislo) > 3:
|
||||||
problemy = Problem.objects.filter(cislo_zadani = letos.cisla)
|
problemy = Problem.objects.filter(cislo_zadani = letos.cisla)
|
||||||
else:
|
else:
|
||||||
problemy = Problem.objects.filter(Q(cislo_zadani = letos.cisla)|Q(cislo_zadani=loni.cisla))
|
problemy = Problem.objects.filter(Q(cislo_zadani__in = letos.cisla)|Q(cislo_zadani__in = loni.cisla))
|
||||||
resitele = aktualni_resitele.filter(reseni = Reseni.objects.filter(problem=problemy)).distinct()
|
resitele = aktualni_resitele.filter(reseni__in = Reseni.objects.filter(problem__in=problemy)).distinct()
|
||||||
|
|
||||||
return resitele
|
return resitele
|
||||||
|
|
||||||
|
|
||||||
|
@ -567,11 +566,9 @@ def obalkyView(request,resitele):
|
||||||
|
|
||||||
tempdir = tempfile.mkdtemp()
|
tempdir = tempfile.mkdtemp()
|
||||||
with open(tempdir+"/obalky.tex","w") as texfile:
|
with open(tempdir+"/obalky.tex","w") as texfile:
|
||||||
# Pokud TeX chce ISO Latin, tak se da encode nastavit
|
texfile.write(tex)
|
||||||
texfile.write(tex.decode("utf-8").encode("iso-8859-2"))
|
|
||||||
shutil.copy(os.path.join(settings.STATIC_ROOT, 'seminar/lisak.eps'),tempdir)
|
shutil.copy(os.path.join(settings.STATIC_ROOT, 'seminar/lisak.eps'),tempdir)
|
||||||
subprocess.call(["csplain","obalky.tex"],cwd = tempdir)
|
subprocess.call(["pdflatex","obalky.tex"],cwd = tempdir)
|
||||||
subprocess.call(["dvipdf","obalky.dvi"],cwd = tempdir)
|
|
||||||
|
|
||||||
with open(tempdir+"/obalky.pdf","rb") as pdffile:
|
with open(tempdir+"/obalky.pdf","rb") as pdffile:
|
||||||
response = HttpResponse(pdffile.read(),content_type='application/pdf')
|
response = HttpResponse(pdffile.read(),content_type='application/pdf')
|
||||||
|
@ -707,12 +704,12 @@ def soustredeniUcastniciExportView(request,soustredeni):
|
||||||
class ClankyResitelView(generic.ListView):
|
class ClankyResitelView(generic.ListView):
|
||||||
model = Problem
|
model = Problem
|
||||||
template_name = 'seminar/clanky/resitelske_clanky.html'
|
template_name = 'seminar/clanky/resitelske_clanky.html'
|
||||||
queryset = Problem.objects.filter(typ=Problem.TYP_RES_CLANEK, stav=Problem.STAV_ZADANY).select_related('cislo_zadani__rocnik__rocnik').order_by('-cislo_zadani__rocnik__rocnik', 'kod')
|
queryset = Problem.objects.filter(typ=Problem.TYP_RES_CLANEK, stav=Problem.STAV_ZADANY).select_related('cislo_zadani__rocnik').order_by('-cislo_zadani__rocnik__rocnik', 'kod')
|
||||||
|
|
||||||
class ClankyOrganizatorView(generic.ListView):
|
class ClankyOrganizatorView(generic.ListView):
|
||||||
model = Problem
|
model = Problem
|
||||||
template_name = 'seminar/clanky/organizatorske_clanky.html'
|
template_name = 'seminar/clanky/organizatorske_clanky.html'
|
||||||
queryset = Problem.objects.filter(typ=Problem.TYP_ORG_CLANEK, stav=Problem.STAV_ZADANY).select_related('cislo_zadani__rocnik__rocnik').order_by('-cislo_zadani__rocnik__rocnik', 'kod')
|
queryset = Problem.objects.filter(typ=Problem.TYP_ORG_CLANEK, stav=Problem.STAV_ZADANY).select_related('cislo_zadani__rocnik').order_by('-cislo_zadani__rocnik__rocnik', 'kod')
|
||||||
|
|
||||||
|
|
||||||
### Status
|
### Status
|
||||||
|
|
Loading…
Reference in a new issue