@ -0,0 +1,187 @@ |
|||||
|
Jak zvládnout migrace na nový model: |
||||
|
|
||||
|
- V mojí verzi databáze mají úlohy-Problémy typ "b'uloha'" |
||||
|
|
||||
|
|
||||
|
Log migrace na nový model: |
||||
|
|
||||
|
Operations to perform: |
||||
|
Apply all migrations: admin, auth, contenttypes, django_comments, flatpages, fluent_comments, galerie, korektury, prednasky, reversion, seminar, sessions, sites, sitetree, taggit, threadedcomments |
||||
|
Running migrations: |
||||
|
Applying admin.0003_logentry_add_action_flag_choices... OK |
||||
|
Applying auth.0009_alter_user_last_name_max_length... OK |
||||
|
Applying auth.0010_alter_group_name_max_length... OK |
||||
|
Applying auth.0011_update_proxy_permissions... OK |
||||
|
Applying galerie.0008_auto_20190430_2340... OK |
||||
|
Applying galerie.0009_auto_20190610_2358... OK |
||||
|
Applying galerie.0010_auto_20200819_0947... OK |
||||
|
Applying korektury.0016_auto_20190430_2340... OK |
||||
|
Applying korektury.0017_auto_20190610_2358... OK |
||||
|
Applying prednasky.0011_auto_20190430_2340... OK |
||||
|
Applying prednasky.0012_auto_20190610_2358... OK |
||||
|
Applying seminar.0049_auto_20190430_2354... OK |
||||
|
Applying seminar.0050_auto_20190510_2228... OK |
||||
|
Applying seminar.0051_resitel_to_osoba... OK |
||||
|
Applying seminar.0052_user_to_organizator... OK |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2004-12-31 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (1998-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2017-12-31 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2017-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2014-12-31 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2011-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2013-12-31 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2004-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2013-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2012-12-31 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2007-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2011-12-31 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2009-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2009-12-31 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2008-12-31 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2005-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2015-12-31 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2001-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2010-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2008-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2006-12-31 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2002-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2005-12-31 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (1999-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2003-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2000-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2002-12-31 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2001-12-31 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (1996-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2000-12-31 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (1999-12-31 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (1996-12-31 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (1994-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2012-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2016-12-31 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2018-12-31 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2014-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2019-12-31 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2006-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (1995-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_do received a naive datetime (2007-12-31 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2015-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2016-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2018-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2019-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
/aux/akce/mam/www/mamweb-test/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py:1427: RuntimeWarning: DateTimeField Organizator.organizuje_od received a naive datetime (2020-01-01 00:00:00) while time zone support is active. |
||||
|
RuntimeWarning) |
||||
|
Applying seminar.0053_organizator_organizuje_od_do... OK |
||||
|
Applying seminar.0055_smazat_nemigrovane_zastarale_veci... OK |
||||
|
Applying seminar.0056_vrcholy_pro_rocniky_a_cisla... OK |
||||
|
Applying seminar.0057_reseni_to_reseni_hodnoceni...!!!!!!!!!!!!!!! |
||||
|
31397 Reseni object (31397) |
||||
|
!!!!!!!!!!!!!!! |
||||
|
!!!!!!!!!!!!!!! |
||||
|
31396 Reseni object (31396) |
||||
|
!!!!!!!!!!!!!!! |
||||
|
!!!!!!!!!!!!!!! |
||||
|
31395 Reseni object (31395) |
||||
|
!!!!!!!!!!!!!!! |
||||
|
!!!!!!!!!!!!!!! |
||||
|
31394 Reseni object (31394) |
||||
|
!!!!!!!!!!!!!!! |
||||
|
!!!!!!!!!!!!!!! |
||||
|
31393 Reseni object (31393) |
||||
|
!!!!!!!!!!!!!!! |
||||
|
OK |
||||
|
Applying seminar.0058_problem_to_uloha_tema_clanek... OK |
||||
|
Applying seminar.fix_0058... OK |
||||
|
Applying seminar.0059_vytvorit_pohadkanode... OK |
||||
|
Applying seminar.0060_spoj_stromy... OK |
||||
|
Applying seminar.0061_kill_frankenstein... OK |
||||
|
Applying seminar.0062_redukce_modelu_pohadky... OK |
||||
|
Applying seminar.0063_procisteni_migraci... OK |
||||
|
Applying seminar.0064_auto_20190610_2358... OK |
||||
|
Applying seminar.0065_treenode_polymorphic_ctype... OK |
||||
|
Applying seminar.0066_problem_polymorphic_ctype... OK |
||||
|
Applying seminar.0067_auto_20190814_0805... OK |
||||
|
Applying seminar.0068_treenode_nazev... OK |
||||
|
Applying seminar.0069_auto_20191120_2115... OK |
||||
|
Applying seminar.0070_auto_20191120_2357... OK |
||||
|
Applying seminar.0071_remove_nastaveni_aktualni_rocnik... OK |
||||
|
Applying seminar.0072_auto_20191204_2257... OK |
||||
|
Applying seminar.0073_copy_osoba_email_to_user_email... OK |
||||
|
Applying seminar.0074_auto_20200228_1401... OK |
||||
|
Applying seminar.0075_auto_20200228_2010... OK |
||||
|
Applying seminar.0076_auto_20200228_2013... OK |
||||
|
Applying seminar.0077_auto_20200318_2146... OK |
||||
|
Applying seminar.0078_otistenereseninode... OK |
||||
|
Applying seminar.0079_clanek_resitelsky... OK |
||||
|
Applying seminar.0080_zruseni_claneknode_a_konferanode... OK |
||||
|
Applying seminar.0081_auto_20200408_2221... OK |
||||
|
Applying seminar.0082_auto_20200506_1951... OK |
||||
|
Applying seminar.0083_auto_20200506_1952... OK |
||||
|
WARNING 2020-08-20 00:49:07,941 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2215) |
||||
|
WARNING 2020-08-20 00:49:07,953 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2221) |
||||
|
WARNING 2020-08-20 00:49:07,959 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2212) |
||||
|
WARNING 2020-08-20 00:49:07,965 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (1955) |
||||
|
WARNING 2020-08-20 00:49:07,968 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2027) |
||||
|
WARNING 2020-08-20 00:49:07,971 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (1981) |
||||
|
WARNING 2020-08-20 00:49:07,974 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (1970) |
||||
|
WARNING 2020-08-20 00:49:07,978 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2001) |
||||
|
WARNING 2020-08-20 00:49:07,981 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2004) |
||||
|
WARNING 2020-08-20 00:49:07,984 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (1941) |
||||
|
WARNING 2020-08-20 00:49:07,990 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2024) |
||||
|
WARNING 2020-08-20 00:49:07,993 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2031) |
||||
|
WARNING 2020-08-20 00:49:07,997 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2211) |
||||
|
WARNING 2020-08-20 00:49:08,005 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2073) |
||||
|
WARNING 2020-08-20 00:49:08,017 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2018) |
||||
|
WARNING 2020-08-20 00:49:08,022 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2222) |
||||
|
WARNING 2020-08-20 00:49:08,028 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (1953) |
||||
|
WARNING 2020-08-20 00:49:08,034 0084_clanek_cislo: Více než jedno řešení pro článek Clanek object (2026) |
||||
|
Applying seminar.0084_clanek_cislo... OK |
||||
|
Applying seminar.0085_nepovinna_prezdivka... OK |
||||
|
Applying seminar.0086_auto_20200819_0959... OK |
||||
|
Applying sitetree.0001_initial... OK |
||||
|
Applying taggit.0003_taggeditem_add_unique_index... OK |
||||
|
|
@ -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" |
||||
|
} |
||||
|
} |
||||
|
] |
@ -0,0 +1,18 @@ |
|||||
|
# Generated by Django 2.2.15 on 2020-08-19 07:47 |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('galerie', '0009_auto_20190610_2358'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AlterField( |
||||
|
model_name='galerie', |
||||
|
name='poradi', |
||||
|
field=models.IntegerField(blank=True, default=0, verbose_name='Pořadí'), |
||||
|
), |
||||
|
] |
@ -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 %} |
|
@ -1,13 +1,14 @@ |
|||||
# coding: utf-8 |
# coding: utf-8 |
||||
|
|
||||
from django.urls import path |
from django.urls import path |
||||
|
from seminar.utils import org_required |
||||
from . import views |
from . import views |
||||
|
|
||||
urlpatterns = [ |
urlpatterns = [ |
||||
path('<int:pk>/', views.nahled), |
path('<int:pk>/', views.nahled), |
||||
path('<int:pk>/<int:fotka>/', views.detail), |
path('<int:pk>/<int:fotka>/', views.detail), |
||||
path('<int:galerie>/new/', views.new_galerie), |
path('<int:galerie>/new/', org_required(views.new_galerie)), |
||||
path('<int:galerie>/plus/<int:subgalerie>/', views.plus_galerie), |
path('<int:galerie>/plus/<int:subgalerie>/', org_required(views.plus_galerie)), |
||||
path('<int:galerie>/minus/<int:subgalerie>/', views.minus_galerie), |
path('<int:galerie>/minus/<int:subgalerie>/', org_required(views.minus_galerie)), |
||||
] |
] |
||||
|
|
||||
|
@ -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) |
@ -0,0 +1,5 @@ |
|||||
|
from django.apps import AppConfig |
||||
|
|
||||
|
|
||||
|
class HeaderFotkyConfig(AppConfig): |
||||
|
name = 'header_fotky' |
@ -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} |
||||
|
|
@ -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), |
||||
|
] |
@ -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 |
@ -0,0 +1,16 @@ |
|||||
|
#!/bin/sh |
||||
|
|
||||
|
set -e # Spadni pokud něco spadne |
||||
|
|
||||
|
# Check venvu |
||||
|
# NOTE: zkontroluje i správnou složku -- existencí Makefilu |
||||
|
make venv_check |
||||
|
|
||||
|
# Vygenerujeme testdata |
||||
|
./manage.py testdata |
||||
|
|
||||
|
# Nahrajeme statický obsah modelů |
||||
|
./manage.py loaddata flat.json sitetree_new.json |
||||
|
|
||||
|
# Posbíráme statické soubory |
||||
|
./manage.py collectstatic |
@ -1,9 +0,0 @@ |
|||||
{% extends "base.html" %} |
|
||||
|
|
||||
{% block content %} |
|
||||
{# blok do kterého se nacita text, v pripade jinyhc templatu obalit vlastnim blokem #} |
|
||||
{% endblock %} |
|
||||
|
|
||||
{% block title %} |
|
||||
{# blok pro titulek stranky #} |
|
||||
{% endblock %} |
|
@ -0,0 +1,69 @@ |
|||||
|
import logging |
||||
|
import os |
||||
|
from shutil import copyfile, rmtree |
||||
|
|
||||
|
from django.db import transaction |
||||
|
from django.conf import settings |
||||
|
|
||||
|
from korektury.models import KorekturovanePDF, generate_filename |
||||
|
|
||||
|
logger = logging.getLogger(__name__) |
||||
|
|
||||
|
@transaction.atomic |
||||
|
def create_test_pdf(rnd, organizatori): |
||||
|
logger.info('Vyrábím testovací pdf ke korekturovani') |
||||
|
try: |
||||
|
testpdfs = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'testpdfs') |
||||
|
|
||||
|
# smaže minulé pdfka a obrázky k nim a vytvoří (znovu) jejich složky |
||||
|
pdf_dir = os.path.join(settings.BASE_DIR, os.path.join('media', settings.KOREKTURY_PDF_DIR)) |
||||
|
img_dir = os.path.join(settings.BASE_DIR, os.path.join('media', settings.KOREKTURY_IMG_DIR)) |
||||
|
rmtree(pdf_dir, ignore_errors=True) |
||||
|
os.makedirs(pdf_dir) |
||||
|
rmtree(img_dir, ignore_errors=True) |
||||
|
os.makedirs(img_dir) |
||||
|
|
||||
|
def gen_filename(filename): |
||||
|
name = generate_filename(None, filename) |
||||
|
print(name) |
||||
|
copyfile(os.path.join(testpdfs, filename), os.path.join(settings.BASE_DIR, os.path.join('media', name))) |
||||
|
return name |
||||
|
|
||||
|
# TODO silent ghostscript (vypisuje odstavec za každou stránku…) |
||||
|
|
||||
|
KorekturovanePDF.objects.create( |
||||
|
nazev='B', komentar='Neuronové sítě', org=rnd.choice(organizatori), pdf=gen_filename(filename='B.pdf') |
||||
|
) |
||||
|
|
||||
|
KorekturovanePDF.objects.create( |
||||
|
nazev='A', komentar='M&M: Jak řešit?', org=rnd.choice(organizatori), pdf=gen_filename(filename='A.pdf') |
||||
|
) |
||||
|
|
||||
|
korekturovane_pdf = KorekturovanePDF.objects.create( |
||||
|
nazev='A', komentar='M&M: Jak řešit?', org=rnd.choice(organizatori), pdf=gen_filename(filename='A.pdf'), |
||||
|
status='zanaseni' |
||||
|
) |
||||
|
|
||||
|
KorekturovanePDF.objects.create( |
||||
|
nazev='A', komentar='M&M: Jak řešit?', org=rnd.choice(organizatori), pdf=gen_filename(filename='A.pdf'), |
||||
|
status='zastarale' |
||||
|
) |
||||
|
except (FileNotFoundError, Exception) as e: |
||||
|
# TODO najít správné chyby, které vyhazují různé systémy při neexistenci ImageMagick, nebo knihoven |
||||
|
logger.error(str(e)) |
||||
|
logger.error( |
||||
|
'Chyba vytváření testovacích korektur, pravděpodobně není nainstalován ImageMagick nebo některá z knihoven' |
||||
|
'pro práci se soubory pdf (ghostscript) nebo png (libpng?).\n' |
||||
|
''' |
||||
|
Instalaci na linux provedete např. příkazy: |
||||
|
sudo apt-get build-dep imagemagick |
||||
|
git clone https://github.com/ImageMagick/ImageMagick.git |
||||
|
cd ImageMagick/ |
||||
|
./configure |
||||
|
make |
||||
|
sudo make install |
||||
|
sudo ldconfig /usr/local/lib |
||||
|
cd .. |
||||
|
rm -r ImageMagick/ |
||||
|
''' |
||||
|
) |
@ -1,11 +1,10 @@ |
|||||
from django.urls import path |
from django.urls import path |
||||
from django.contrib.auth.decorators import user_passes_test |
from seminar.utils import org_required |
||||
from . import views |
from . import views |
||||
|
|
||||
staff_member_required = user_passes_test(lambda u: u.is_staff) |
|
||||
|
|
||||
urlpatterns = [ |
urlpatterns = [ |
||||
path('korektury/', staff_member_required(views.KorekturyListView.as_view()), name='korektury-list'), |
path('korektury/', org_required(views.KorekturyAktualniListView.as_view()), name='korektury-list'), |
||||
path('korektury/<int:pdf>/', staff_member_required(views.KorekturyView.as_view()), name='korektury'), |
path('korektury/zastarale/', org_required(views.KorekturyZastaraleListView.as_view()), name='korektury-list'), |
||||
path('korektury/help/', staff_member_required(views.KorekturyHelpView.as_view()), name='korektury-help'), |
path('korektury/<int:pdf>/', org_required(views.KorekturyView.as_view()), name='korektury'), |
||||
|
path('korektury/help/', org_required(views.KorekturyHelpView.as_view()), name='korektury-help'), |
||||
] |
] |
||||
|
@ -1,12 +0,0 @@ |
|||||
|
|
||||
from datetime import datetime, date |
|
||||
|
|
||||
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 |
|
||||
else: |
|
||||
noc = False |
|
||||
return {'noc' : noc} |
|
||||
|
|
After Width: | Height: | Size: 1.8 MiB |
After Width: | Height: | Size: 1.8 MiB |
After Width: | Height: | Size: 1.8 MiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 11 KiB |
@ -0,0 +1,26 @@ |
|||||
|
{% load staticfiles %} |
||||
|
<img class="logo" |
||||
|
{% for item in sitetree_items %} |
||||
|
{% if item.is_active or item.in_current_branch %} |
||||
|
{% if forloop.counter == 1 %} |
||||
|
src="{% static 'images/logo_1.svg' %}" |
||||
|
{% endif %} |
||||
|
{% if forloop.counter == 2 %} |
||||
|
src="{% static 'images/logo_2.svg' %}" |
||||
|
{% endif %} |
||||
|
{% if forloop.counter == 3 %} |
||||
|
src="{% static 'images/logo_3.svg' %}" |
||||
|
{% endif %} |
||||
|
{% if forloop.counter == 4 %} |
||||
|
src="{% static 'images/logo_4.svg' %}" |
||||
|
{% endif %} |
||||
|
{% if forloop.counter == 5 %} |
||||
|
src="{% static 'images/logo_5.svg' %}" |
||||
|
{% endif %} |
||||
|
{% if forloop.counter == 6 %} |
||||
|
src="{% static 'images/logo_6.svg' %}" |
||||
|
{% endif %} |
||||
|
{% endif %} |
||||
|
{% endfor %} |
||||
|
src="{% static 'images/logo.svg' %}" |
||||
|
/> |
@ -1,78 +0,0 @@ |
|||||
\input czech.sty |
|
||||
\input epsf |
|
||||
\special{landscape} |
|
||||
\nopagenumbers |
|
||||
\hoffset=-1in |
|
||||
\voffset=-1in |
|
||||
\advance\voffset by 0.9cm |
|
||||
%nove pridano, aby to fungovalo... |
|
||||
\advance\hoffset by 6.5cm |
|
||||
\hsize=22cm |
|
||||
\vsize=16cm |
|
||||
|
|
||||
\font\adrfonta=csssbx10 at 14pt |
|
||||
\font\adrfontb=csssbx10 at 12pt |
|
||||
\font\adrfontc=csss12 |
|
||||
\font\tofont=csr12 at 16pt |
|
||||
|
|
||||
\newdimen\fromskip |
|
||||
\newdimen\toskip |
|
||||
\fromskip=4.35cm |
|
||||
\toskip=13.2cm |
|
||||
|
|
||||
\def\first{\relax} |
|
||||
|
|
||||
\catcode`_=13 |
|
||||
%\catcode`_=12 |
|
||||
|
|
||||
\def_{$\_$} |
|
||||
|
|
||||
\advance\voffset by 2.5cm |
|
||||
|
|
||||
|
|
||||
\def\obalka#1#2#3#4#5#6#7{ |
|
||||
|
|
||||
\def\jmeno{#1} |
|
||||
\def\prijm{#2} |
|
||||
\def\skola{#3} |
|
||||
\def\popis{} |
|
||||
\def\first{} |
|
||||
\def\ulice{#4} |
|
||||
\def\PSC{#5} |
|
||||
\def\mesto{#6} |
|
||||
\def\stat{#7} |
|
||||
\vskip-4mm\vbox to 0pt{\hbox to 0pt{\hskip1.4cm\epsfysize=2.55cm\epsfbox{lisak.eps}\hss}\vss} |
|
||||
|
|
||||
\baselineskip=13pt |
|
||||
\parindent=\fromskip |
|
||||
\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 |
|
||||
{} |
|
||||
\else |
|
||||
\line{\indent\tofont\skola\hfil} |
|
||||
\fi |
|
||||
\line{\indent\tofont\ulice\hfil} |
|
||||
\line{\tofont\item{\PSC} \mesto\hfil} |
|
||||
\vskip5pt |
|
||||
\line{\indent\tofont\stat\hfil} |
|
||||
|
|
||||
\vfil\eject |
|
||||
} |
|
||||
|
|
||||
%\obalka{Lenka}{Kopfová}{Leknínová 10}{746 01}{Opava} |
|
||||
|
|
||||
|
|
@ -1,53 +0,0 @@ |
|||||
#!/usr/bin/python |
|
||||
#coding: utf-8 |
|
||||
|
|
||||
import psycopg2 |
|
||||
import sys |
|
||||
import subprocess |
|
||||
import re |
|
||||
|
|
||||
dbname="mam-prod" |
|
||||
user="mam" |
|
||||
|
|
||||
conn = psycopg2.connect("dbname={0} user={1}".format(dbname,user)) |
|
||||
cur = conn.cursor() |
|
||||
|
|
||||
names = [] |
|
||||
|
|
||||
with open("obalky.sql") as qfile, open("obalky-template.tex") as texheader, open("obalky.tex","w") as texout : |
|
||||
texout.write(texheader.read()) |
|
||||
cur.execute(qfile.read()) |
|
||||
for row in cur.fetchall(): |
|
||||
(muz,jmeno,prijmeni,skola,ulice,mesto,psc,stat)=row |
|
||||
if (stat=='CZ'): |
|
||||
stat = "" |
|
||||
elif (stat=='SK'): |
|
||||
stat = "Slovenská republika" |
|
||||
else: |
|
||||
print("Neznamy stat: {}\n".format(stat)) |
|
||||
if (skola==None): |
|
||||
skola="" |
|
||||
psc = psc.replace(" ","") |
|
||||
psc = psc[0:3]+" "+psc[3:] |
|
||||
|
|
||||
texout.write("\\obalka{{{0}}}{{{1}}}{{{2}}}{{{3}}}{{{4}}}{{{5}}}{{{6}}}\n".format(jmeno,prijmeni,skola,ulice,psc,mesto,stat)) |
|
||||
names.append((jmeno,prijmeni)) |
|
||||
texout.write("\\bye\n") |
|
||||
|
|
||||
cur.close() |
|
||||
conn.close() |
|
||||
|
|
||||
print("Spoustim csplain ...") |
|
||||
output = subprocess.check_output(["csplain","obalky.tex"],stderr=subprocess.STDOUT) |
|
||||
page = 0 |
|
||||
for line in output.decode("utf-8").splitlines(): |
|
||||
pmatch = re.search("\[([0-9]+)\]",line) |
|
||||
if pmatch: |
|
||||
page = int(pmatch.group(1)) |
|
||||
errmatch = re.match("Overfull",line) |
|
||||
if errmatch: |
|
||||
print("Preteceni na strane",page,"u osoby",names[page][0],names[page][1]) |
|
||||
|
|
||||
print("Spoustim dvipdf ...") |
|
||||
subprocess.call(["dvipdf","obalky.dvi"]) |
|
||||
print("Hotovo.") |
|
@ -1,26 +0,0 @@ |
|||||
WITH akt_rocnik AS ( |
|
||||
SELECT rocnik FROM seminar_rocniky |
|
||||
WHERE id=(SELECT aktualni_rocnik_id FROM seminar_nastaveni) |
|
||||
), id_rocniku AS ( |
|
||||
SELECT id,prvni_rok FROM seminar_rocniky |
|
||||
WHERE rocnik=(SELECT * FROM akt_rocnik) OR rocnik=(SELECT * FROM akt_rocnik)-1 |
|
||||
), id_cisel AS ( |
|
||||
SELECT seminar_cisla.id FROM seminar_cisla |
|
||||
INNER JOIN id_rocniku ON rocnik_id=id_rocniku.id |
|
||||
), problemy AS ( |
|
||||
SELECT seminar_problemy.id FROM seminar_problemy |
|
||||
INNER JOIN id_cisel ON cislo_zadani_id = id_cisel.id |
|
||||
), resitele AS( |
|
||||
SELECT DISTINCT resitel_id FROM seminar_reseni |
|
||||
INNER JOIN problemy ON problem_id=problemy.id |
|
||||
) |
|
||||
SELECT pohlavi_muz,jmeno,prijmeni,NULL AS skola,ulice,mesto,psc,stat FROM seminar_resitele |
|
||||
INNER JOIN resitele ON seminar_resitele.id=resitel_id |
|
||||
WHERE zasilat='domu' AND rok_maturity > (SELECT MAX(prvni_rok) FROM id_rocniku) |
|
||||
UNION |
|
||||
SELECT res.pohlavi_muz,res.jmeno,res.prijmeni,sk.nazev,sk.ulice,sk.mesto,sk.psc,sk.stat |
|
||||
FROM seminar_resitele AS res |
|
||||
INNER JOIN resitele ON res.id=resitel_id |
|
||||
INNER JOIN seminar_skoly AS sk ON sk.id=skola_id |
|
||||
WHERE zasilat='do_skoly' AND rok_maturity > (SELECT MAX(prvni_rok) FROM id_rocniku) |
|
||||
ORDER BY prijmeni ASC, jmeno ASC |
|
@ -1,14 +1,25 @@ |
|||||
from django.urls import path |
from django.urls import path |
||||
from django.contrib.auth.decorators import user_passes_test |
from seminar.utils import org_required, resitel_required |
||||
from . import views |
from . import views |
||||
|
|
||||
staff_member_required = user_passes_test(lambda u: u.is_staff) |
|
||||
|
|
||||
urlpatterns = [ |
urlpatterns = [ |
||||
path('prednasky/', views.newPrednaska), |
path( |
||||
|
'prednasky/', |
||||
|
resitel_required(views.newPrednaska) |
||||
|
), |
||||
path('prednasky/hotovo', views.Prednaska_hotovo), |
path('prednasky/hotovo', views.Prednaska_hotovo), |
||||
path('prednasky/metaseznam_prednasek', staff_member_required(views.MetaSeznamListView.as_view()), name='metaseznam-list'), |
path( |
||||
path('prednasky/seznam_prednasek/<int:seznam>/export', staff_member_required(views.SeznamExportView), name='seznam-export'), |
'prednasky/metaseznam_prednasek', |
||||
path('prednasky/seznam_prednasek/<int:seznam>/', staff_member_required(views.SeznamListView.as_view()), name='seznam-list'), |
org_required(views.MetaSeznamListView.as_view()), |
||||
# path('korektury/help/', staff_member_required(views.KorekturyHelpView.as_view()), name='korektury-help'), |
name='metaseznam-list'), |
||||
|
path( |
||||
|
'prednasky/seznam_prednasek/<int:seznam>/export', |
||||
|
org_required(views.SeznamExportView), |
||||
|
name='seznam-export' |
||||
|
), |
||||
|
path( |
||||
|
'prednasky/seznam_prednasek/<int:seznam>/', |
||||
|
org_required(views.SeznamListView.as_view()), |
||||
|
name='seznam-list' |
||||
|
), |
||||
] |
] |
||||
|
@ -0,0 +1,56 @@ |
|||||
|
# Generated by Django 2.2.13 on 2020-06-17 19:06 |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
import django.db.models.deletion |
||||
|
from seminar.treelib import get_parent |
||||
|
|
||||
|
import logging |
||||
|
logger = logging.getLogger(__name__) |
||||
|
|
||||
|
def najdi_cislo(apps, schema_editor): |
||||
|
Clanek = apps.get_model('seminar', 'Clanek') |
||||
|
Hodnoceni = apps.get_model('seminar', 'Hodnoceni') |
||||
|
Reseni = apps.get_model('seminar', 'Reseni') |
||||
|
ReseniNode = apps.get_model('seminar', 'ReseniNode') |
||||
|
CisloNode = apps.get_model('seminar', 'CisloNode') |
||||
|
ContentType = apps.get_model('contenttypes', 'ContentType') |
||||
|
|
||||
|
for c in Clanek.objects.all(): |
||||
|
reseni = c.reseni_set |
||||
|
if (reseni.count() != 1): # Pozor, reseni_set je Manager, takže se na něj musí trošku jinak |
||||
|
logger.warn(f"Více než jedno řešení pro článek {c}") |
||||
|
c.cislo = None |
||||
|
c.save() |
||||
|
continue |
||||
|
r = reseni.first() |
||||
|
aktualniNode = r.text_cely # Hlavní ReseniNode pro řešení |
||||
|
while aktualniNode is not None: |
||||
|
#if isinstance(aktualniNode, CisloNode): # Nejde, protože aktualniNode se tváří jako obecný TreeNode... |
||||
|
# Ale v dokumentaci k django-polymorphic se píše, že tam jsou nastavené nějaké fieldy na známé hodnoty :-) |
||||
|
# https://django-polymorphic.readthedocs.io/en/stable/migrating.html |
||||
|
cislonode_ct = ContentType.objects.get_for_model(CisloNode) |
||||
|
akt_ct = aktualniNode.polymorphic_ctype |
||||
|
if akt_ct == cislonode_ct: |
||||
|
# Zneužíváme tu opačnou vazbu k treenode_ptr, protože |
||||
|
# aktualniNode je "jen" TreeNode a ne CisloNode |
||||
|
c.cislo = aktualniNode.cislonode.cislo |
||||
|
c.save() |
||||
|
break |
||||
|
aktualniNode = get_parent(aktualniNode) |
||||
|
|
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('seminar', '0083_auto_20200506_1952'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AddField( |
||||
|
model_name='clanek', |
||||
|
name='cislo', |
||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='vydane_clanky', to='seminar.Cislo', verbose_name='číslo vydání'), |
||||
|
), |
||||
|
migrations.RunPython(najdi_cislo, migrations.RunPython.noop), |
||||
|
] |
@ -0,0 +1,32 @@ |
|||||
|
# Generated by Django 2.2.13 on 2020-06-24 22:57 |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
|
||||
|
def smaz_prezdivku(apps, schema_editor): |
||||
|
Osoba = apps.get_model('seminar', 'Osoba') |
||||
|
|
||||
|
for o in Osoba.objects.filter(prezdivka=''): |
||||
|
o.prezdivka = None |
||||
|
o.save() |
||||
|
|
||||
|
def pridej_prezdivku(apps, schema_editor): |
||||
|
Osoba = apps.get_model('seminar', 'Osoba') |
||||
|
|
||||
|
for o in Osoba.objects.filter(prezdivka=None): |
||||
|
o.prezdivka = '' |
||||
|
o.save() |
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('seminar', '0084_clanek_cislo'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AlterField( |
||||
|
model_name='osoba', |
||||
|
name='prezdivka', |
||||
|
field=models.CharField(blank=True, max_length=256, null=True, verbose_name='přezdívka'), |
||||
|
), |
||||
|
migrations.RunPython(smaz_prezdivku, pridej_prezdivku), |
||||
|
] |
@ -0,0 +1,17 @@ |
|||||
|
# Generated by Django 2.2.15 on 2020-08-19 07:59 |
||||
|
|
||||
|
from django.db import migrations |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('seminar', '0085_nepovinna_prezdivka'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AlterModelOptions( |
||||
|
name='organizator', |
||||
|
options={'ordering': ['-organizuje_do', 'osoba__jmeno', 'osoba__prijmeni'], 'verbose_name': 'Organizátor', 'verbose_name_plural': 'Organizátoři'}, |
||||
|
), |
||||
|
] |
@ -0,0 +1,49 @@ |
|||||
|
# Generated by Django 2.2.16 on 2020-09-04 12:06 |
||||
|
|
||||
|
from django.db import migrations |
||||
|
from logging import getLogger |
||||
|
|
||||
|
log = getLogger(__name__) |
||||
|
|
||||
|
# Oprava migrací 0065 a 0066, kde jsem špatně pochopil django-polymorphic |
||||
|
|
||||
|
# Pomocná funkce -- děláme to samé pro obě polymorfní hierarchie |
||||
|
def fix_ctypes(parent: str, children, apps, schema_editor): |
||||
|
Parent = apps.get_model('seminar', parent) |
||||
|
ContentType = apps.get_model('contenttypes', 'ContentType') |
||||
|
|
||||
|
# Nejdřív všechno smažeme: |
||||
|
Parent.objects.update(polymorphic_ctype=None) |
||||
|
|
||||
|
# Opravíme děti |
||||
|
for clsname in children: |
||||
|
Model = apps.get_model('seminar', clsname) |
||||
|
ct = ContentType.objects.get_for_model(Model) |
||||
|
Model.objects.update(polymorphic_ctype=ct) |
||||
|
|
||||
|
|
||||
|
# Ostatní instance mají mít explicitně content type pro rodiče |
||||
|
new_ct = ContentType.objects.get_for_model(Parent) |
||||
|
for obj in Parent.objects.filter(polymorphic_ctype__isnull=True): |
||||
|
log.warn(f"{parent} \"{obj}\" neměl content type -- nejspíš to je instance přímo {parent}!") |
||||
|
obj.polymorphic_ctype=new_ct |
||||
|
obj.save() |
||||
|
|
||||
|
def fix_treenode(apps, schema_editor): |
||||
|
children = ['RocnikNode', 'CisloNode', 'MezicisloNode', 'TemaVCisleNode', |
||||
|
'OrgTextNode', 'UlohaZadaniNode', 'UlohaVzorakNode', 'PohadkaNode', |
||||
|
'TextNode', 'CastNode', 'ReseniNode'] |
||||
|
fix_ctypes("TreeNode", children, apps, schema_editor) |
||||
|
|
||||
|
def fix_problem(apps, schema_editor): |
||||
|
children = ['Tema', 'Clanek', 'Uloha'] # FIXME: Konfera z nějakého důvodu tenhle field vůbec nemá, asi je to špatně. |
||||
|
fix_ctypes("Problem", children, apps, schema_editor) |
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
dependencies = [ |
||||
|
('seminar', '0086_auto_20200819_0959'), |
||||
|
] |
||||
|
operations = [ |
||||
|
migrations.RunPython(fix_treenode, migrations.RunPython.noop), |
||||
|
migrations.RunPython(fix_problem, migrations.RunPython.noop), |
||||
|
] |
@ -0,0 +1,35 @@ |
|||||
|
# Generated by Django 2.2.15 on 2020-09-05 10:10 |
||||
|
from django.db import migrations |
||||
|
|
||||
|
|
||||
|
def add_perms(apps, schema_editor): |
||||
|
ContentType = apps.get_model('contenttypes', 'ContentType') |
||||
|
User = apps.get_model('auth', 'User') |
||||
|
Permission = apps.get_model('auth', 'Permission') |
||||
|
Resitel = apps.get_model('seminar', 'Resitel') |
||||
|
|
||||
|
c = ContentType.objects.get_for_model(User) |
||||
|
org_perm = Permission.objects.filter(codename__exact='org').first() |
||||
|
if not org_perm: |
||||
|
org_perm = Permission.objects.create(codename='org', name='org', content_type=c) |
||||
|
resitel_perm = Permission.objects.filter(codename__exact='resitel').first() |
||||
|
if not resitel_perm: |
||||
|
resitel_perm = Permission.objects.create(codename='resitel', name='resitel', content_type=c) |
||||
|
for r in Resitel.objects.all(): |
||||
|
u = r.osoba.user |
||||
|
if u: |
||||
|
u.user_permissions.add(resitel_perm) |
||||
|
for org in User.objects.all(): |
||||
|
if org and org.is_staff: |
||||
|
org.user_permissions.add(org_perm) |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('seminar', '0087_fix_polymorphism'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.RunPython(add_perms, migrations.RunPython.noop), |
||||
|
] |
@ -0,0 +1,18 @@ |
|||||
|
# Generated by Django 2.2.16 on 2020-10-13 19:40 |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('seminar', '0088_perm_org_a_ucastnik'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AddField( |
||||
|
model_name='cislo', |
||||
|
name='datum_preddeadline', |
||||
|
field=models.DateField(blank=True, help_text='Datum pro příjem řešení, která se otisknou v dalším čísle', null=True, verbose_name='datum předdeadline'), |
||||
|
), |
||||
|
] |
@ -0,0 +1,19 @@ |
|||||
|
# Generated by Django 2.2.12 on 2020-11-10 18:58 |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
import django.db.models.deletion |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('seminar', '0089_cislo_datum_preddeadline'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AlterField( |
||||
|
model_name='textnode', |
||||
|
name='text', |
||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='seminar.Text', verbose_name='text'), |
||||
|
), |
||||
|
] |
@ -0,0 +1,14 @@ |
|||||
|
from django.db import migrations |
||||
|
|
||||
|
sql = "update seminar_problemy set typ = 'uloha' where typ like 'b_uloha_';" |
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('seminar', '0058_problem_to_uloha_tema_clanek'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.RunSQL(sql, sql), |
||||
|
] |
||||
|
|
@ -1,4 +0,0 @@ |
|||||
{% extends "base.html" %} |
|
||||
|
|
||||
{# zmena fotky #}{% block header %}archiv{% endblock %} |
|
||||
|
|
@ -1,14 +0,0 @@ |
|||||
{% with "/archiv" as cesta %} |
|
||||
|
|
||||
<div id='submenu'> |
|
||||
<ul> |
|
||||
<li class="{% if selected == "cisla" %}selected{% endif %}"><a href="{{cesta}}/cisla/">Čísla</a> |
|
||||
{# TODO zprovoznit až budou témata v db <li class="{% if selected == "temata" %}selected{% endif %}"><a href="{{cesta}}/temata/">Témata</a> #} |
|
||||
{# TODO zprovoznit až budou úlohy v db <li class="{% if selected == "ulohy" %}selected{% endif %}"><a href="{{cesta}}/ulohy/">Úlohy</a> #} |
|
||||
{# <li class="{% if selected == "vysledky" %}selected{% endif %}"><a href="{{cesta}}/vysledky/">Výsledkové listiny</a> #} |
|
||||
</ul> |
|
||||
</div> |
|
||||
|
|
||||
{% endwith %} |
|
||||
|
|
||||
|
|
@ -1,10 +0,0 @@ |
|||||
{% extends "base.html" %} |
|
||||
|
|
||||
{% block menu_clanky %}selected{% endblock %} |
|
||||
|
|
||||
{# zmena fotky #}{% block header %}clanky{% endblock %} |
|
||||
|
|
||||
{% block submenu %} |
|
||||
{% include "seminar/clanky/submenu.html" %} |
|
||||
{% endblock %} |
|
||||
|
|