diff --git a/MIGRATIONS b/MIGRATIONS new file mode 100644 index 00000000..3cf73ac4 --- /dev/null +++ b/MIGRATIONS @@ -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 + diff --git a/Makefile b/Makefile index 1ace9e01..a9d2e082 100644 --- a/Makefile +++ b/Makefile @@ -65,7 +65,7 @@ schema_all.pdf: venv_check # Deploy to current *mamweb-test* directory deploy_test: venv_check @if [ ${USER} != "mam-web" ]; then echo "Only possible by user mam-web"; exit 1; fi - @if [ `pwd` != "/akce/mam/www/mamweb-test" ]; then echo "Only possible in /akce/mam/www/mamweb-test"; exit 1; fi + @if [ `readlink -f .` != "/aux/akce/mam/www/mamweb-test" ]; then echo "Only possible in directory mamweb-test"; exit 1; fi @echo "Installing version from origin/test ..." git pull origin test git clean -f @@ -81,9 +81,9 @@ deploy_test: venv_check # Deploy to current *mamweb-prod* directory deploy_prod: venv_check @if [ ${USER} != "mam-web" ]; then echo "Only possible by user mam-web"; exit 1; fi - @if [ `pwd` != "/akce/mam/www/mamweb-prod" ]; then echo "Only possible in /akce/mam/www/mamweb-prod"; exit 1; fi + @if [ `readlink -f .` != "/aux/akce/mam/www/mamweb-prod" ]; then echo "Only possible in directory mamweb-prod"; exit 1; fi @echo "Backing up production DB ..." - ( cd .. && ./backup_prod_db.sh ) + ( cd -P .. && ./backup_prod_db.sh ) @echo "Installing version from origin/master ..." git pull origin master git clean -f @@ -109,7 +109,7 @@ sync_prod_flatpages: venv_check # Sync test media directory with production sync_test_media: @if [ ${USER} != "mam-web" ]; then echo "Only possible by user mam-web"; exit 1; fi - @if [ `pwd` != "/akce/mam/www/mamweb-test" ]; then echo "Only possible in /akce/mam/www/mamweb-test"; exit 1; fi + @if [ `readlink -f .` != "/aux/akce/mam/www/mamweb-test" ]; then echo "Only possible in /akce/mam/www/mamweb-test"; exit 1; fi rsync -av --delete /akce/mam/www/mamweb-prod/media/ ./media # Sync test database with production database diff --git a/galerie/admin.py b/galerie/admin.py index f0ac6e28..54b0751e 100644 --- a/galerie/admin.py +++ b/galerie/admin.py @@ -30,14 +30,14 @@ def prepnout_fotogalerii_do_org_rezimu(modeladmin, request, queryset): class GalerieInline(admin.TabularInline): model = Obrazek - fields = ['obrazek_velky', 'nazev', 'popis', 'obrazek_maly_tag'] + fields = ['obrazek_velky', 'nazev', 'popis', 'obrazek_maly_tag', 'poradi'] readonly_fields = ['nazev', 'obrazek_maly_tag'] formfield_overrides = { models.TextField: {'widget': forms.TextInput}, } class ObrazekAdmin(admin.ModelAdmin): - list_display = ('obrazek_velky', 'nazev', 'popis', 'obrazek_maly_tag') + list_display = ('obrazek_velky', 'nazev', 'popis', 'obrazek_maly_tag', 'poradi') search_fields = ['nazev','popis'] class GalerieAdmin(admin.ModelAdmin): diff --git a/galerie/migrations/0010_auto_20200819_0947.py b/galerie/migrations/0010_auto_20200819_0947.py new file mode 100644 index 00000000..b7678ac1 --- /dev/null +++ b/galerie/migrations/0010_auto_20200819_0947.py @@ -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í'), + ), + ] diff --git a/galerie/models.py b/galerie/models.py index c48d3a95..8e6efdc7 100644 --- a/galerie/models.py +++ b/galerie/models.py @@ -94,7 +94,7 @@ class Galerie(models.Model): on_delete=models.SET_NULL) soustredeni = models.ForeignKey(Soustredeni, blank = True, null = True, on_delete=models.PROTECT) - poradi = models.IntegerField('Pořadí', blank = True, null = True) + poradi = models.IntegerField('Pořadí', blank = True, null = False, default = 0) def __str__(self): return self.nazev diff --git a/galerie/views.py b/galerie/views.py index 729ac3b8..d23e79f1 100644 --- a/galerie/views.py +++ b/galerie/views.py @@ -38,7 +38,7 @@ def nahled(request, pk, soustredeni): if not request.user.is_staff: podgalerie = podgalerie.filter(zobrazit__lt=1) - obrazky = Obrazek.objects.filter(galerie = galerie) + obrazky = Obrazek.objects.filter(galerie = galerie).order_by('poradi', 'nazev') preview = zobrazit(galerie, request) sourozenci = [] @@ -82,7 +82,7 @@ def detail(request, pk, fotka, soustredeni): galerie = get_object_or_404(Galerie, pk=pk) preview = zobrazit(galerie, request) obrazek = get_object_or_404(Obrazek, pk=fotka) - obrazky = galerie.obrazek_set.all() + obrazky = galerie.obrazek_set.all().order_by('poradi', 'nazev') # vytvoreni a obslouzeni formulare if request.method == 'POST': @@ -96,22 +96,23 @@ def detail(request, pk, fotka, soustredeni): # Poradi aktualniho obrazku v galerii/stitku. for i in range(len(obrazky)): if obrazky[i] == obrazek: - znacka = i + poradi = i break else: # Obrazek neni v galerii/stitku. raise Http404 + # Nacteni okolnich obrazku a galerii # TODO vyjmout zjisteni predchozich a nasledujicich galerii # a udelat z toho funkci, ktera se pouzije u nahledu predchozi_galerie = None nasledujici_galerie = None - obrazky_dalsi = obrazky[znacka+1:znacka+NAHLEDU+1] - if (znacka+1) > NAHLEDU: - obrazky_predchozi = obrazky[znacka-NAHLEDU:znacka] + obrazky_dalsi = obrazky[poradi+1:poradi+NAHLEDU+1] + if (poradi+1) > NAHLEDU: + obrazky_predchozi = obrazky[poradi-NAHLEDU:poradi] else: - obrazky_predchozi = obrazky[0:znacka] + obrazky_predchozi = obrazky[0:poradi] if galerie.poradi > 1: predchozi_galerie = Galerie.objects.\ filter(galerie_up=galerie.galerie_up).\ @@ -120,41 +121,44 @@ def detail(request, pk, fotka, soustredeni): predchozi_galerie = predchozi_galerie[0] else: predchozi_galerie = None - if (znacka+1) == len(obrazky): - nasledujici_galerie = Galerie.objects.\ - filter(galerie_up=galerie.galerie_up).\ - filter(poradi=(galerie.poradi+1)) + if (poradi+1) == len(obrazky): # Tohle je poslední obrázek + if (galerie.poradi is not None + and galerie.galerie_up is not None): + nasledujici_galerie = Galerie.objects.\ + filter(galerie_up=galerie.galerie_up).\ + filter(poradi=(galerie.poradi+1)) + else: + nasledujici_galerie = None if nasledujici_galerie: nasledujici_galerie = nasledujici_galerie[0] else: nasledujici_galerie = None - + # Preskalovani obrazku do vybraneho prostoru. vyska = obrazek.obrazek_stredni.height sirka = obrazek.obrazek_stredni.width if vyska > MAX_VYSKA: - sirka = sirka * MAX_VYSKA / vyska + sirka = sirka * MAX_VYSKA / vyska vyska = MAX_VYSKA if sirka > MAX_SIRKA: vyska = vyska * MAX_SIRKA / sirka sirka = MAX_SIRKA return render(request, 'galerie/Galerie.html', - {'galerie' : galerie, - 'predchozi_galerie' : predchozi_galerie, - 'nasledujici_galerie' : nasledujici_galerie, - 'obrazek' : obrazek, - 'vyska' : vyska, - 'sirka' : sirka, - 'obrazky_predchozi' : obrazky_predchozi, - 'obrazky_dalsi' : obrazky_dalsi, - 'preview' : preview, - 'form' : form, - 'cesta': cesta_od_korene(galerie), - }) - + {'galerie' : galerie, + 'predchozi_galerie' : predchozi_galerie, + 'nasledujici_galerie' : nasledujici_galerie, + 'obrazek' : obrazek, + 'vyska' : vyska, + 'sirka' : sirka, + 'obrazky_predchozi' : obrazky_predchozi, + 'obrazky_dalsi' : obrazky_dalsi, + 'preview' : preview, + 'form' : form, + 'cesta': cesta_od_korene(galerie), + }) def new_galerie(request, galerie, soustredeni): diff --git a/korektury/models.py b/korektury/models.py index 6e5fed8a..88c1a5e6 100644 --- a/korektury/models.py +++ b/korektury/models.py @@ -79,16 +79,25 @@ class KorekturovanePDF(models.Model): self.stran = 0 while True: res = subprocess.call([ - "convert", - "-density", "180x180", - "-geometry", " 1024x1448", - "%s[%d]" % (self.pdf.path, self.stran), - os.path.join( + #Parametry inspirovány chybovou hláškou imagemagicku + "gs", + "-sstdout=%stderr", + "-dSAFER", + "-dNOPAUSE", + "-dBATCH", + "-dNOPROMPT", + "-sDEVICE=pngalpha", + "-r180x180", + "-dFirstPage=%d" % (self.stran+1), + "-dLastPage=%d" % (self.stran+1), + "-sOutputFile="+os.path.join( dirname, - "%s-%d.png" % (self.get_prefix(), self.stran) - ) + "%s-%d.png" % (self.get_prefix(), self.stran)), + "-f%s" % (self.pdf.path) ]) - if res == 1: + if not os.path.exists(os.path.join( + dirname, + "%s-%d.png" % (self.get_prefix(), self.stran))): break self.stran += 1 # Změnil se počet stran, ukládáme diff --git a/korektury/templates/korektury/base.html b/korektury/templates/korektury/base.html index b31d5d47..886a15e1 100644 --- a/korektury/templates/korektury/base.html +++ b/korektury/templates/korektury/base.html @@ -1,5 +1,9 @@ {% 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 %} diff --git a/korektury/templates/korektury/help.html b/korektury/templates/korektury/help.html index 0024848e..f2ddafb9 100644 --- a/korektury/templates/korektury/help.html +++ b/korektury/templates/korektury/help.html @@ -1,4 +1,11 @@ {% extends "korektury/base.html" %} + +{% block submenu %} + {% with "help" as selected %} + {% include "korektury/submenu.html" %} + {% endwith %} +{% endblock %} + {% load staticfiles %} {% block title %} Nápověda ke korigovátku {% endblock title %} diff --git a/korektury/templates/korektury/seznam.html b/korektury/templates/korektury/seznam.html index f22ba673..61f6fff7 100644 --- a/korektury/templates/korektury/seznam.html +++ b/korektury/templates/korektury/seznam.html @@ -1,6 +1,10 @@ {% extends "korektury/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 new file mode 100644 index 00000000..0a5ed988 --- /dev/null +++ b/korektury/templates/korektury/submenu.html @@ -0,0 +1,13 @@ +{% with "/korektury" as cesta %} + +
+ +{% endwith %} + + diff --git a/korektury/urls.py b/korektury/urls.py index d6394820..77bc686d 100644 --- a/korektury/urls.py +++ b/korektury/urls.py @@ -5,7 +5,8 @@ from . import views staff_member_required = user_passes_test(lambda u: u.is_staff) urlpatterns = [ - path('korektury/', staff_member_required(views.KorekturyListView.as_view()), name='korektury-list'), + path('korektury/', staff_member_required(views.KorekturyAktualniListView.as_view()), name='korektury-list'), + path('korektury/zastarale/', staff_member_required(views.KorekturyZastaraleListView.as_view()), name='korektury-list'), path('korektury/Aktuální témata najdete v aktuálním čísle v PDF.
+ {% else %} +Aktuálně nemáme žádná témata.
+ {% endif %} {% endfor %}- Témata jsou hlavním obsahem časopisu M&M. Obvykle představují - složitější a obecnější problémy než samostatné úlohy. Navíc je v jejich - zadání vždy prostor pro tvůrčí rozšíření. Za pěkný článek k tématu lze - získat třeba i 20 bodů, určitě se tedy vyplatí se tématy zabývat. + Témata jsou texty nejen z oblasti matematiky, fyziky a informatiky, které + popisují nějaký problém a jsou doprovázeny návodnými úlohami. Vaším úkolem + je zamyslet se nad daným problémem a sepsat vaše úvahy ve formě krátkého + textu.
+ {% endwith %}