diff --git a/.gitignore b/.gitignore
index 36b0b565..05e728bd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,3 +24,9 @@ TODO
# .htpasswd kvůli přihlášení
.htpasswd
+
+# reversion kvůli historii objektů v reversion
+**/reversion
+
+# pro lidi, co programují v nástrojích od JetBrains
+.idea
\ No newline at end of file
diff --git a/flat.json b/data/flat.json
similarity index 99%
rename from flat.json
rename to data/flat.json
index 8adde103..f127d671 100644
--- a/flat.json
+++ b/data/flat.json
@@ -260,7 +260,7 @@
"fields": {
"url": "/co-je-MaM/kontakt/",
"title": "Kontakt",
- "content": "
Sv\u00e1 \u0159e\u0161en\u00ed \u010di p\u0159\u00edpadn\u00e9 dotazy n\u00e1m m\u016f\u017eete pos\u00edlat bu\u010f klasickou, nebo elektronickou po\u0161tou:
\r\n\r\n\r\n\r\n
\r\n\r\nB\u011bhem \u0161koln\u00edho roku je velk\u00e1 \u010d\u00e1st organiz\u00e1tor\u016f k zasti\u017een\u00ed na koleji 17. listopadu \u010di jinde po Praze.
\r\n\r\nAdresa koleje:
\r\n\r\nP\u00e1tkova 3 \r\n182 00, Praha 8
",
+ "content": "Sv\u00e1 \u0159e\u0161en\u00ed \u010di p\u0159\u00edpadn\u00e9 dotazy n\u00e1m m\u016f\u017eete pos\u00edlat bu\u010f klasickou, nebo elektronickou po\u0161tou:
\r\n\r\nAdresa redakce :
\r\n\r\nM&M, OPMK MFF UK \r\nKe Karlovu 3 \r\n121 16 Praha 2
\r\n\r\nE-mail : mam@matfyz.cz
\r\n\r\n
\r\n\r\nFacebook: Koresponden\u010dn\u00ed semin\u00e1\u0159 M&M
\r\n\r\nGoogle Kalend\u00e1\u0159: casopis.mam@gmail.com
\r\n\r\n
\r\n\r\nB\u011bhem \u0161koln\u00edho roku je velk\u00e1 \u010d\u00e1st organiz\u00e1tor\u016f k zasti\u017een\u00ed na koleji 17. listopadu \u010di jinde po Praze.
\r\n\r\nAdresa koleje:
\r\n\r\nP\u00e1tkova 3 \r\n182 00, Praha 8
",
"enable_comments": false,
"template_name": "",
"registration_required": false,
diff --git a/data/fotka_header.json b/data/fotka_header.json
new file mode 100644
index 00000000..065c378a
--- /dev/null
+++ b/data/fotka_header.json
@@ -0,0 +1,207 @@
+[
+{
+ "model": "header_fotky.fotkaheader",
+ "pk": "baliky.jpg",
+ "fields": {
+ "cas": "2020-09-20T09:18:34.562Z",
+ "fotka": "header/baliky.jpg"
+ }
+},
+{
+ "model": "header_fotky.fotkaheader",
+ "pk": "beh.jpg",
+ "fields": {
+ "cas": "2020-09-20T09:18:34.562Z",
+ "fotka": "header/beh.jpg"
+ }
+},
+{
+ "model": "header_fotky.fotkaheader",
+ "pk": "kryptografie.jpg",
+ "fields": {
+ "cas": "2020-09-20T09:18:34.562Z",
+ "fotka": "header/kryptografie.jpg"
+ }
+},
+{
+ "model": "header_fotky.fotkaheader",
+ "pk": "mam_cernobile.jpg",
+ "fields": {
+ "cas": "2020-09-20T09:18:34.562Z",
+ "fotka": "header/mam_cernobile.jpg"
+ }
+},
+{
+ "model": "header_fotky.fotkaheader",
+ "pk": "noc.jpg",
+ "fields": {
+ "cas": "2020-09-20T09:18:34.562Z",
+ "fotka": "header/noc.jpg"
+ }
+},
+{
+ "model": "header_fotky.fotkaheader",
+ "pk": "ohen.jpg",
+ "fields": {
+ "cas": "2020-09-20T09:18:34.562Z",
+ "fotka": "header/ohen.jpg"
+ }
+},
+{
+ "model": "header_fotky.fotkaheader",
+ "pk": "snih.jpg",
+ "fields": {
+ "cas": "2020-09-20T09:18:34.562Z",
+ "fotka": "header/snih.jpg"
+ }
+},
+{
+ "model": "header_fotky.fotkaheader",
+ "pk": "spolecna.jpg",
+ "fields": {
+ "cas": "2020-09-20T09:18:34.562Z",
+ "fotka": "header/spolecna.jpg"
+ }
+},
+{
+ "model": "header_fotky.fotkaheader",
+ "pk": "stiny.jpg",
+ "fields": {
+ "cas": "2020-09-20T09:18:34.562Z",
+ "fotka": "header/stiny.jpg"
+ }
+},
+{
+ "model": "header_fotky.fotkaheader",
+ "pk": "vikendovka.jpg",
+ "fields": {
+ "cas": "2020-09-20T09:18:34.562Z",
+ "fotka": "header/vikendovka.jpg"
+ }
+},
+{
+ "model": "header_fotky.fotkaheader",
+ "pk": "vylet.jpg",
+ "fields": {
+ "cas": "2020-09-20T09:18:34.562Z",
+ "fotka": "header/vylet.jpg"
+ }
+},
+{
+ "model": "header_fotky.fotkaurlvazba",
+ "pk": 1,
+ "fields": {
+ "url": "/archiv/",
+ "fotka": "stiny.jpg",
+ "denni_doba": "oboji"
+ }
+},
+{
+ "model": "header_fotky.fotkaurlvazba",
+ "pk": 2,
+ "fields": {
+ "url": "/clanky/",
+ "fotka": "kryptografie.jpg",
+ "denni_doba": "den"
+ }
+},
+{
+ "model": "header_fotky.fotkaurlvazba",
+ "pk": 3,
+ "fields": {
+ "url": "/clanky/",
+ "fotka": "ohen.jpg",
+ "denni_doba": "noc"
+ }
+},
+{
+ "model": "header_fotky.fotkaurlvazba",
+ "pk": 4,
+ "fields": {
+ "url": "/zadani/",
+ "fotka": "baliky.jpg",
+ "denni_doba": "den"
+ }
+},
+{
+ "model": "header_fotky.fotkaurlvazba",
+ "pk": 5,
+ "fields": {
+ "url": "/zadani/",
+ "fotka": "stiny.jpg",
+ "denni_doba": "noc"
+ }
+},
+{
+ "model": "header_fotky.fotkaurlvazba",
+ "pk": 6,
+ "fields": {
+ "url": "/co-je-MaM/",
+ "fotka": "vikendovka.jpg",
+ "denni_doba": "den"
+ }
+},
+{
+ "model": "header_fotky.fotkaurlvazba",
+ "pk": 7,
+ "fields": {
+ "url": "/co-je-MaM/",
+ "fotka": "noc.jpg",
+ "denni_doba": "noc"
+ }
+},
+{
+ "model": "header_fotky.fotkaurlvazba",
+ "pk": 8,
+ "fields": {
+ "url": "/soustredeni/",
+ "fotka": "beh.jpg",
+ "denni_doba": "den"
+ }
+},
+{
+ "model": "header_fotky.fotkaurlvazba",
+ "pk": 9,
+ "fields": {
+ "url": "/soustredeni/",
+ "fotka": "vylet.jpg",
+ "denni_doba": "noc"
+ }
+},
+{
+ "model": "header_fotky.fotkaurlvazba",
+ "pk": 10,
+ "fields": {
+ "url": "/login/",
+ "fotka": "baliky.jpg",
+ "denni_doba": "den"
+ }
+},
+{
+ "model": "header_fotky.fotkaurlvazba",
+ "pk": 11,
+ "fields": {
+ "url": "/login/",
+ "fotka": "stiny.jpg",
+ "denni_doba": "noc"
+ }
+},
+{
+ "model": "header_fotky.fotkaurlvazba",
+ "pk": 12,
+ "fields": {
+ "url": "/profil/",
+ "fotka": "baliky.jpg",
+ "denni_doba": "den"
+ }
+},
+{
+ "model": "header_fotky.fotkaurlvazba",
+ "pk": 13,
+ "fields": {
+ "url": "/profil/",
+ "fotka": "stiny.jpg",
+ "denni_doba": "noc"
+ }
+}
+]
\ No newline at end of file
diff --git a/data/sitetree_new.json b/data/sitetree_new.json
new file mode 100644
index 00000000..f0eb3a9c
--- /dev/null
+++ b/data/sitetree_new.json
@@ -0,0 +1 @@
+[{"model": "sitetree.tree", "pk": 1, "fields": {"title": "Hlavn\u00ed menu", "alias": "main_menu"}}, {"model": "sitetree.treeitem", "pk": 1, "fields": {"title": "Co je M&M", "hint": "", "url": "/co-je-MaM/uvod/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": null, "sort_order": 1, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 2, "fields": {"title": "Jak \u0159e\u0161it", "hint": "", "url": "/jak-resit/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": null, "sort_order": 2, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 3, "fields": {"title": "Aktu\u00e1ln\u00ed ro\u010dn\u00edk", "hint": "", "url": "/zadani/aktualni/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": null, "sort_order": 3, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 4, "fields": {"title": "Soust\u0159ed\u011bn\u00ed", "hint": "", "url": "/soustredeni/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": null, "sort_order": 4, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 5, "fields": {"title": "Archiv", "hint": "", "url": "/archiv/rocniky/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": null, "sort_order": 5, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 6, "fields": {"title": "P\u0159ihl\u00e1sit", "hint": "", "url": "/login/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": true, "access_restricted": false, "access_perm_type": 1, "parent": null, "sort_order": 6, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 7, "fields": {"title": "\u00davod", "hint": "", "url": "/co-je-MaM/uvod/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": 1, "sort_order": 7, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 8, "fields": {"title": "Organiz\u00e1to\u0159i", "hint": "", "url": "/co-je-MaM/organizatori/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": 1, "sort_order": 8, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 9, "fields": {"title": "FAQ", "hint": "", "url": "/co-je-MaM/FAQ/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": 1, "sort_order": 9, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 10, "fields": {"title": "Kontakt", "hint": "", "url": "/co-je-MaM/kontakt/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": 1, "sort_order": 10, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 11, "fields": {"title": "T\u00e9mata", "hint": "", "url": "/jak-resit/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": 2, "sort_order": 11, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 12, "fields": {"title": "Jak ps\u00e1t p\u0159\u00edsp\u011bvek", "hint": "", "url": "/jak-resit/jak-psat-prispevek/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": 2, "sort_order": 12, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 13, "fields": {"title": "Odm\u011bny", "hint": "", "url": "/co-je-MaM/odmeny/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": 2, "sort_order": 13, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 16, "fields": {"title": "V\u00fdsledkov\u00e1 listina", "hint": "", "url": "zadani/vysledkova-listina/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": 3, "sort_order": 33, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 17, "fields": {"title": "\u010cl\u00e1nky", "hint": "", "url": "/clanky/resitel/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": 3, "sort_order": 34, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 18, "fields": {"title": "\u00davod", "hint": "", "url": "/soustredeni/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": 4, "sort_order": 18, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 19, "fields": {"title": "P\u0159ipravujeme", "hint": "", "url": "/soustredeni/pripravujeme/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": 4, "sort_order": 19, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 20, "fields": {"title": "Prob\u011bhlo", "hint": "", "url": "/soustredeni/probehlo/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": 4, "sort_order": 20, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 21, "fields": {"title": "Profil", "hint": "", "url": "/profil/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": true, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": null, "sort_order": 21, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 22, "fields": {"title": "Osobn\u00ed \u00fadaje", "hint": "", "url": "/profil/osobni-udaje", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": 21, "sort_order": 23, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 23, "fields": {"title": "Poslat \u0159e\u0161en\u00ed", "hint": "", "url": "/odeslat-reseni/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": 21, "sort_order": 36, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 24, "fields": {"title": "T\u00e9mata", "hint": "", "url": "/archiv/temata/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": 5, "sort_order": 35, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 28, "fields": {"title": "HIDDEN", "hint": "", "url": "/korektury/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": true, "access_perm_type": 1, "parent": null, "sort_order": 28, "access_permissions": [1]}}, {"model": "sitetree.treeitem", "pk": 30, "fields": {"title": "Aktu\u00e1ln\u00ed", "hint": "", "url": "/korektury/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": 28, "sort_order": 30, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 31, "fields": {"title": "Zastaral\u00e9", "hint": "", "url": "/korektury/zastarale/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": 28, "sort_order": 31, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 32, "fields": {"title": "N\u00e1pov\u011bda", "hint": "", "url": "/korektury/help/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": 28, "sort_order": 32, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 33, "fields": {"title": "Aktu\u00e1ln\u00ed \u010d\u00edslo", "hint": "", "url": "/zadani/aktualni/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": 3, "sort_order": 15, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 34, "fields": {"title": "T\u00e9mata", "hint": "", "url": "/zadani/temata/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": 3, "sort_order": 17, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 35, "fields": {"title": "\u010c\u00edsla", "hint": "", "url": "/archiv/rocniky/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": 5, "sort_order": 24, "access_permissions": []}}, {"model": "sitetree.treeitem", "pk": 36, "fields": {"title": "\u00davod", "hint": "", "url": "/profil/", "urlaspattern": false, "tree": 1, "hidden": false, "alias": null, "description": "", "inmenu": true, "inbreadcrumbs": true, "insitetree": true, "access_loggedin": false, "access_guest": false, "access_restricted": false, "access_perm_type": 1, "parent": 21, "sort_order": 22, "access_permissions": []}}]
\ No newline at end of file
diff --git a/galerie/templates/galerie/Base.html b/galerie/templates/galerie/Base.html
deleted file mode 100644
index 61f96eb4..00000000
--- a/galerie/templates/galerie/Base.html
+++ /dev/null
@@ -1,6 +0,0 @@
-{% extends "base.html" %}
-
-{# TODO predelat pres context processor #}
-{% block header %}soustredeni{% endblock %}
-{% block menu_soustredeni %}selected{% endblock %}
-{% block submenu %}{% include 'seminar/soustredeni/submenu.html' %}{% endblock %}
diff --git a/galerie/templates/galerie/Galerie.html b/galerie/templates/galerie/Galerie.html
index c23c6c42..b2dfe994 100644
--- a/galerie/templates/galerie/Galerie.html
+++ b/galerie/templates/galerie/Galerie.html
@@ -1,4 +1,4 @@
-{% extends "galerie/Base.html" %}
+{% extends "base.html" %}
{% block nadpis1a %}
diff --git a/galerie/templates/galerie/GalerieNahled.html b/galerie/templates/galerie/GalerieNahled.html
index 7d9313fc..ec0d5f67 100644
--- a/galerie/templates/galerie/GalerieNahled.html
+++ b/galerie/templates/galerie/GalerieNahled.html
@@ -1,4 +1,4 @@
-{% extends "galerie/Base.html" %}
+{% extends "base.html" %}
{% block nadpis1a %}
Galerie {{galerie.nazev}}
@@ -61,7 +61,7 @@ Galerie {{galerie.nazev}}
{{ galerie|truncatechars:max_delka_nazvu }}
- {% if user.is_staff and galerie.zobrazit > 0 %}
+ {% if user.je_org and galerie.zobrazit > 0 %}
({{galerie.poradi}})
+
@@ -73,7 +73,7 @@ Galerie {{galerie.nazev}}
{% endwith %}
{% endif %}
{% endif %}
- {% if user.is_staff and galerie.zobrazit > 0 %}
+ {% if user.je_org and galerie.zobrazit > 0 %}
diff --git a/galerie/templates/galerie/GalerieNew.html b/galerie/templates/galerie/GalerieNew.html
index 38237d86..2da23ece 100644
--- a/galerie/templates/galerie/GalerieNew.html
+++ b/galerie/templates/galerie/GalerieNew.html
@@ -1,4 +1,4 @@
-{% extends "galerie/Base.html" %}
+{% extends "base.html" %}
{% block title %}{% block nadpis1a %}
Vytvářím novou galerii
diff --git a/galerie/urls.py b/galerie/urls.py
index 4d1e8f24..d299165f 100644
--- a/galerie/urls.py
+++ b/galerie/urls.py
@@ -1,13 +1,14 @@
# coding: utf-8
from django.urls import path
+from seminar.utils import org_required
from . import views
urlpatterns = [
path('
/', views.nahled),
path('//', views.detail),
- path('/new/', views.new_galerie),
- path('/plus//', views.plus_galerie),
- path('/minus//', views.minus_galerie),
+ path('/new/', org_required(views.new_galerie)),
+ path('/plus//', org_required(views.plus_galerie)),
+ path('/minus//', org_required(views.minus_galerie)),
]
diff --git a/galerie/views.py b/galerie/views.py
index d23e79f1..4570b8fb 100644
--- a/galerie/views.py
+++ b/galerie/views.py
@@ -14,7 +14,7 @@ from galerie.forms import KomentarForm, NewGalerieForm
def zobrazit(galerie, request):
preview = False
if galerie.zobrazit >= 1:
- if request.user.is_staff:
+ if request.user.je_org:
preview = True;
else:
raise Http404
@@ -35,7 +35,7 @@ def nahled(request, pk, soustredeni):
galerie = get_object_or_404(Galerie, pk=pk)
podgalerie = Galerie.objects.filter(galerie_up = galerie).order_by('poradi')
- if not request.user.is_staff:
+ if not request.user.je_org:
podgalerie = podgalerie.filter(zobrazit__lt=1)
obrazky = Obrazek.objects.filter(galerie = galerie).order_by('poradi', 'nazev')
@@ -44,7 +44,7 @@ def nahled(request, pk, soustredeni):
sourozenci = []
if galerie.galerie_up:
sourozenci = galerie.galerie_up.galerie_set.all().order_by('poradi')
- if not request.user.is_staff:
+ if not request.user.je_org:
sourozenci = sourozenci.filter(zobrazit__lt=1)
predchozi = None
diff --git a/header_fotky/__init__.py b/header_fotky/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/header_fotky/admin.py b/header_fotky/admin.py
new file mode 100644
index 00000000..35d3427b
--- /dev/null
+++ b/header_fotky/admin.py
@@ -0,0 +1,10 @@
+from django.contrib import admin
+from django.contrib.admin import ModelAdmin
+import header_fotky.models as m
+
+
+class FotkaPozadiAdmin(ModelAdmin):
+ readonly_fields = ['cas']
+
+admin.site.register(m.FotkaHeader, FotkaPozadiAdmin)
+admin.site.register(m.FotkaUrlVazba)
\ No newline at end of file
diff --git a/header_fotky/apps.py b/header_fotky/apps.py
new file mode 100644
index 00000000..084aa955
--- /dev/null
+++ b/header_fotky/apps.py
@@ -0,0 +1,5 @@
+from django.apps import AppConfig
+
+
+class HeaderFotkyConfig(AppConfig):
+ name = 'header_fotky'
diff --git a/header_fotky/context_processors.py b/header_fotky/context_processors.py
new file mode 100644
index 00000000..be259cbf
--- /dev/null
+++ b/header_fotky/context_processors.py
@@ -0,0 +1,45 @@
+
+from datetime import datetime, date
+import random
+
+from django.conf import settings
+
+from header_fotky.models import FotkaUrlVazba
+
+
+def vzhled(request):
+ ''' Podle casu prida do templatu, zdali je nebo neni noc '''
+ hodin = datetime.now().hour
+ if (hodin <= 6) or (hodin >= 20):
+ noc = True
+ nedoba = 'den'
+ doba = 'noc'
+ else:
+ noc = False
+ nedoba = 'noc'
+ doba = 'den'
+ url = request.path
+
+ fotky = FotkaUrlVazba.objects.exclude(denni_doba=nedoba)
+ fotka = None
+
+ # TODO rychlejší patternmatch?
+ while (fotka is None) and (url != ''):
+ presne = fotky.filter(url__exact=url)
+ if presne.count() > 0:
+ presne_doba = presne.filter(denni_doba=doba)
+ if presne_doba.count() > 0:
+ fotka = random.choice(presne_doba).url_fotky()
+ else:
+ fotka = random.choice(presne).url_fotky()
+
+ url = url[:-1]
+ index = url.rfind('/')
+ if index != -1:
+ url = url[:index+1]
+
+ if fotka is None:
+ fotka = settings.STATIC_URL + "images/header/vikendovka.jpg"
+
+ return {'noc': noc, 'fotka': fotka}
+
diff --git a/header_fotky/migrations/0001_initial.py b/header_fotky/migrations/0001_initial.py
new file mode 100644
index 00000000..4b90d0c6
--- /dev/null
+++ b/header_fotky/migrations/0001_initial.py
@@ -0,0 +1,63 @@
+# Generated by Django 2.2.15 on 2020-09-20 09:14
+
+from django.db import migrations, models
+import django.db.models.deletion
+import django.utils.timezone
+
+from shutil import copytree
+
+
+def zkopiruj_fotky(apps, schema_editor):
+ try:
+ copytree("mamweb/static/images/header/", "media/header/") # FIXME: bylo tu dirs_exists_ok=True, nekompatibilní s Py 3.7
+ except FileExistsError:
+ pass
+
+
+class Migration(migrations.Migration):
+ initial = True
+
+ dependencies = [
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='FotkaHeader',
+ fields=[
+ ('cas', models.DateTimeField(default=django.utils.timezone.now, help_text='Čas vložení fotky',
+ verbose_name='čas vložení fotky')),
+ ('nazev',
+ models.CharField(help_text='Název např. archiv_noc', max_length=50, primary_key=True, serialize=False,
+ unique=True, verbose_name='název fotky')),
+ ('fotka', models.ImageField(upload_to='header')),
+ ],
+ options={
+ 'verbose_name': 'fotka do pozadí menu',
+ 'verbose_name_plural': 'fotky do pozadí menu',
+ 'db_table': 'fotky_header',
+ 'ordering': ['-cas'],
+ },
+ ),
+ migrations.CreateModel(
+ name='FotkaUrlVazba',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('url',
+ models.CharField(blank=True, help_text='url prefix stránek např: /archiv/ nebo /', max_length=100,
+ verbose_name='URL')),
+ ('denni_doba', models.CharField(choices=[('den', 'Zobrazit jen ve dne'), ('noc', 'Zobrazit jen v noci'),
+ ('oboji', 'Zobrazovat pořád')], default='oboji', max_length=16,
+ verbose_name='denní doba')),
+ ('fotka', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='header_fotky.FotkaHeader',
+ verbose_name='fotka')),
+ ],
+ options={
+ 'verbose_name': 'vazba url a fotky do pozadí menu',
+ 'verbose_name_plural': 'vazby url a fotek do pozadí menu',
+ 'db_table': 'fotky_url_vazby',
+ 'ordering': ['url'],
+ },
+
+ ),
+ migrations.RunPython(zkopiruj_fotky, migrations.RunPython.noop),
+ ]
diff --git a/header_fotky/migrations/__init__.py b/header_fotky/migrations/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/header_fotky/models.py b/header_fotky/models.py
new file mode 100644
index 00000000..481a652c
--- /dev/null
+++ b/header_fotky/models.py
@@ -0,0 +1,65 @@
+from django.core.exceptions import ValidationError
+from django.db import models
+from django.utils import timezone
+
+
+class FotkaHeader(models.Model):
+ class Meta:
+ ordering = ['-cas']
+ db_table = 'fotky_header'
+ verbose_name = u'fotka do pozadí menu'
+ verbose_name_plural = u'fotky do pozadí menu'
+
+ cas = models.DateTimeField(u'čas vložení fotky', default=timezone.now, help_text='Čas vložení fotky')
+
+ nazev = models.CharField(
+ u'název fotky', null=False, blank=False, unique=True, primary_key=True,
+ max_length=50, help_text='Název např. archiv_noc'
+ )
+
+ fotka = models.ImageField(upload_to='header', null=False, blank=False)
+
+ def __str__(self):
+ return self.nazev
+
+ def clean(self):
+ if not self.fotka:
+ raise ValidationError("Chybí obrázek")
+ """ Kontroluje, zda sedí poměr stran """
+ if abs(self.fotka.width - (self.fotka.height * 970 / 350)) > 2:
+ raise ValidationError("Obrázek by měl mít rozměry 970w na 350h, nebo alespoň podobný poměr stran.")
+ super().clean()
+
+
+class FotkaUrlVazba(models.Model):
+ class Meta:
+ ordering = ['url']
+ db_table = 'fotky_url_vazby'
+ verbose_name = u'vazba url a fotky do pozadí menu'
+ verbose_name_plural = u'vazby url a fotek do pozadí menu'
+
+ url = models.CharField(
+ u'URL', blank=True, null=False, max_length=100,
+ help_text='url prefix stránek např: /archiv/ nebo /'
+ )
+
+ fotka = models.ForeignKey(
+ FotkaHeader, blank=False, null=False, verbose_name='fotka',
+ on_delete=models.CASCADE
+ )
+
+ DOBA_DEN = 'den'
+ DOBA_NOC = 'noc'
+ DOBA_OBOJI = 'oboji'
+ DOBA_CHOICES = [
+ (DOBA_DEN, 'Zobrazit jen ve dne'),
+ (DOBA_NOC, 'Zobrazit jen v noci'),
+ (DOBA_OBOJI, 'Zobrazovat pořád')]
+
+ denni_doba = models.CharField('denní doba', max_length=16, choices=DOBA_CHOICES, blank=False, default=DOBA_OBOJI)
+
+ def __str__(self):
+ return self.url
+
+ def url_fotky(self):
+ return self.fotka.fotka.url
diff --git a/korektury/models.py b/korektury/models.py
index 88c1a5e6..37213172 100644
--- a/korektury/models.py
+++ b/korektury/models.py
@@ -103,7 +103,7 @@ class KorekturovanePDF(models.Model):
# Změnil se počet stran, ukládáme
super(KorekturovanePDF, self).save()
- def save(self):
+ def save(self, **kwargs):
# Pokud se nezmenilo PDF, tak nepregenerovavej nahledy
try:
original = KorekturovanePDF.objects.get(pk=self.pk)
@@ -113,7 +113,7 @@ class KorekturovanePDF(models.Model):
except ObjectDoesNotExist:
pass
# uložíme nahrávané pdf
- super(KorekturovanePDF, self).save()
+ super(KorekturovanePDF, self).save(kwargs)
# uložíme png a změněný počet stran
self.convert()
diff --git a/korektury/templates/korektury/base.html b/korektury/templates/korektury/base.html
deleted file mode 100644
index 886a15e1..00000000
--- a/korektury/templates/korektury/base.html
+++ /dev/null
@@ -1,13 +0,0 @@
-{% extends "base.html" %}
-
-{% block submenu %}
- {% include "korektury/submenu.html" %}
-{% endblock %}
-
-{% block content %}
-{# blok do kterého se nacita text, v pripade jinyhc templatu obalit vlastnim blokem #}
-{% endblock %}
-
-{% block title %}
-{# blok pro titulek stranky #}
-{% endblock %}
diff --git a/korektury/templates/korektury/help.html b/korektury/templates/korektury/help.html
index f2ddafb9..3cce7a4f 100644
--- a/korektury/templates/korektury/help.html
+++ b/korektury/templates/korektury/help.html
@@ -1,10 +1,4 @@
-{% extends "korektury/base.html" %}
-
-{% block submenu %}
- {% with "help" as selected %}
- {% include "korektury/submenu.html" %}
- {% endwith %}
-{% endblock %}
+{% extends "base.html" %}
{% load staticfiles %}
diff --git a/korektury/templates/korektury/opraf.html b/korektury/templates/korektury/opraf.html
index ba8898a6..00c81c2d 100644
--- a/korektury/templates/korektury/opraf.html
+++ b/korektury/templates/korektury/opraf.html
@@ -36,12 +36,12 @@
id="neni_chyba_checkbox"
name="neni_chyba_checkbox"
onchange="toggle_corrections('neni_chyba')" checked>
- Není chyba ({{neni_chyba_cnt}})
+ Není chyba ({{neni_chyba_cnt}})
- K zanesení ({{k_zaneseni_cnt}})
+ K zanesení ({{k_zaneseni_cnt}})
diff --git a/korektury/templates/korektury/seznam.html b/korektury/templates/korektury/seznam.html
index 61f6fff7..57823f6e 100644
--- a/korektury/templates/korektury/seznam.html
+++ b/korektury/templates/korektury/seznam.html
@@ -1,10 +1,6 @@
-{% extends "korektury/base.html" %}
+{% extends "base.html" %}
{% load staticfiles %}
-{% block submenu %}
- {% include "korektury/submenu.html" %}
-{% endblock %}
-
{% block script%}
{% endblock %}
diff --git a/korektury/templates/korektury/submenu.html b/korektury/templates/korektury/submenu.html
deleted file mode 100644
index 0a5ed988..00000000
--- a/korektury/templates/korektury/submenu.html
+++ /dev/null
@@ -1,13 +0,0 @@
-{% with "/korektury" as cesta %}
-
-
-
-{% endwith %}
-
-
diff --git a/korektury/testpdfs/A.pdf b/korektury/testpdfs/A.pdf
new file mode 100644
index 00000000..083bac6a
Binary files /dev/null and b/korektury/testpdfs/A.pdf differ
diff --git a/korektury/testpdfs/B.pdf b/korektury/testpdfs/B.pdf
new file mode 100644
index 00000000..c0d61df6
--- /dev/null
+++ b/korektury/testpdfs/B.pdf
@@ -0,0 +1,5125 @@
+%PDF-1.5
+%
+5 0 obj
+<>
+stream
+
+
+
+
+ image/jpeg
+
+
+ Tisk
+
+
+ 2014-02-10T11:27:01+01:00
+ 2014-02-10T10:27:07Z
+ 2014-02-10T11:27:01+01:00
+ Adobe Illustrator CC (Windows)
+
+
+
+ 256
+ 116
+ JPEG
+ /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAdAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7
FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY
q7FXYqsNxAG4GROVaceQrX5ZHjHey4D3L8kxdirsVdirsVaLKtKkCpoK+JxVvFXYq7FXYq7FXYqo
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
+
+
+
+ xmp.iid:25c354aa-a49c-cc4e-acca-855cba8252a4
+ xmp.did:25c354aa-a49c-cc4e-acca-855cba8252a4
+ uuid:5D20892493BFDB11914A8590D31508C8
+ proof:pdf
+
+ xmp.iid:8e6b66c4-a348-994c-aeef-f975a7d6fb7a
+ xmp.did:8e6b66c4-a348-994c-aeef-f975a7d6fb7a
+ uuid:5D20892493BFDB11914A8590D31508C8
+ proof:pdf
+
+
+
+
+ saved
+ xmp.iid:3e87526c-5553-9b49-a487-443853d93c29
+ 2014-02-10T11:18:18+01:00
+ Adobe Illustrator CC (Windows)
+ /
+
+
+ saved
+ xmp.iid:25c354aa-a49c-cc4e-acca-855cba8252a4
+ 2014-02-10T11:27:01+01:00
+ Adobe Illustrator CC (Windows)
+ /
+
+
+
+
+
+
+ EmbedByReference
+
+ Z:\WWW\Gymnazium Jirovcova\Logo\Logo gymji 2.jpg
+ xmp.did:d90990ba-a891-594f-b74d-a6e8c24a3ba4
+ xmp.iid:9b17acee-8902-0f49-8f1a-d8965e1ffb40
+
+
+
+
+
+
+
+ Z:\WWW\Gymnazium Jirovcova\Logo\Logo gymji 2.jpg
+ xmp.did:d90990ba-a891-594f-b74d-a6e8c24a3ba4
+ xmp.iid:9b17acee-8902-0f49-8f1a-d8965e1ffb40
+
+
+
+ Print
+ Adobe PDF library 10.01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+endstream
+endobj
+6 0 obj
+<>
+stream
+xڬuPU*)"%( JIJt( X !*)y8F@n~~ߝ;3zYy?{kΰeJBw'_ѡQa;NVωN@elϫtԠjZSꅹUjSC{nmˏHtѲ6YEzV
WS +50gco,V@܍I6!<7o5[eǗ[n:_trpkvy=wZ-m}mnK@m ; -+
/(DCc0]ݵqք=I{컷2Nݘ8$3H|촜cye5cBQXYR]6xTl|ݪgj~u@`[4
?C֠Hhf ;{G#ȕ1uvids)hJ]XFuT5z44ig;v- MS$'G.
?Y_?~*|2ex}Zp̝5L.hsӼ^sn\oy`va#OL=lKܫcx5zݭٟ">|~ek7?c~cWO%-߸dB]:N+u_<_dsɚN5LLSͼ{j>j__a*sl63kaαỏt9ay .?V6vY@N;mC,B
tW%j)MB]vMƏ&HO;ohcc)&SϤOq#?sLrm
+8{W$(n+,UXUa]* P@ PX(<C.b-q=,b%@Rsu,v"KuEAl)KvGέ>EVu5 ,
+6~qFds7yV-ܜ:wyzƭ],JgU{mo?p6p$gGst'%Z7"22 #>2xתݚ}nħI{ﻳց'_MzfݴO3^~ȯ9y
+\y|warQNqY Z&=^>QqYՏ-AE.=#;WV0jJee-go$r<9ܿ>GINH%3
+JjqfVL[GN}pӷ0`p2p`xzØxD)i.gϢfZg5BŜK˲+ׯM[wIw>!_p__r^_`BU.?OKn~]7ߟxG__,sZbyÊ^5ǴPQ:tuy+lެ\aZF0(5뎙{^Oްrc&ҍllf616.ٝ;d9niRfG'+{z/oo:`:PT#1y·!CHGQcP]0~*a%")uo>|>$JԡTU 8\yHf츜܀<|룦8}%J
+Q%
+_
rth*<jVonіvuջ/?gx{ްѣcL"M?6q3{ƹ?]62um=7x7ܶSrwƃ?!>oo-ƽohb+~d_]/[a0`aFo?S/w4`yY0-#0sg":W<r6r+̩PS4 Ղx2h