diff --git a/README.md b/README.md index 08d938ae566b4c925676894c371e33e78d103f5f..01c55a41f735bc721ef250fd84d026241998cd37 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,6 @@ Rozšíření která používáme: ├── districts = app na web kraje.pirati.cz ├── region = app na weby krajskych sdruzeni ├── district = app na weby mistnich sdruzeni - ├── program2021 = app na prezentaci programu 2021 ├── uniweb = app na univerzalni webove stranky ... ├── majak = Django projekt s konfigurací Majáku diff --git a/majak/settings/base.py b/majak/settings/base.py index 56d9a8171fe5c31a5b46b49611c265a199d1066f..10d08998de8e918a5092057a8728ff0411e78242 100644 --- a/majak/settings/base.py +++ b/majak/settings/base.py @@ -38,7 +38,6 @@ INSTALLED_APPS = [ "donate", "senat_campaign", "home", - "program2021", "uniweb", "region", "district", diff --git a/program2021/__init__.py b/program2021/__init__.py deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/program2021/apps.py b/program2021/apps.py deleted file mode 100644 index 1f3815405c4fd2088b9fd7ddd967015e3f34256e..0000000000000000000000000000000000000000 --- a/program2021/apps.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.apps import AppConfig - - -class Program2021Config(AppConfig): - name = "program2021" diff --git a/program2021/fixtures/characteristic.json b/program2021/fixtures/characteristic.json deleted file mode 100644 index 34070730e94c130eff44d8a993e0827b8766a93c..0000000000000000000000000000000000000000 --- a/program2021/fixtures/characteristic.json +++ /dev/null @@ -1,226 +0,0 @@ -[ - { - "model": "program2021.SearchCharacteristic", - "pk": 1, - "fields": { - "name": "Žena", - "form_param": "female" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 2, - "fields": { - "name": "Muž", - "form_param": "male" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 3, - "fields": { - "name": "věk do 30", - "form_param": "age30" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 4, - "fields": { - "name": "věk 30-49", - "form_param": "age50" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 5, - "fields": { - "name": "věk 50-64", - "form_param": "age65" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 6, - "fields": { - "name": "věk 65+", - "form_param": "age99" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 7, - "fields": { - "name": "mám děti", - "form_param": "kids" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 8, - "fields": { - "name": "bezdětný/á", - "form_param": "nokids" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 9, - "fields": { - "name": "Student", - "form_param": "student" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 10, - "fields": { - "name": "zaměstnanec*kyně ve veřejné sféře", - "form_param": "employee-public" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 11, - "fields": { - "name": "zaměstnanec*kyně v soukromé sféře", - "form_param": "employee-private" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 12, - "fields": { - "name": "podnikatel*ka", - "form_param": "entrepreneur" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 13, - "fields": { - "name": "na mateřské / rodičovské", - "form_param": "maternity" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 14, - "fields": { - "name": "v důchodu", - "form_param": "retired" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 15, - "fields": { - "name": "Životní údeoveň velmi dobrá", - "form_param": "wealth-great" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 16, - "fields": { - "name": "Životní úroveň dobrá", - "form_param": "wealth-good" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 17, - "fields": { - "name": "Životní úroveň průmerná", - "form_param": "wealth-average" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 18, - "fields": { - "name": "Životní úroveň špatná", - "form_param": "wealth-bad" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 19, - "fields": { - "name": "Cestuji na kole", - "form_param": "travel-bike" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 20, - "fields": { - "name": "Cestuji autem", - "form_param": "travel-car" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 21, - "fields": { - "name": "Cestuji veřejnou dopravou", - "form_param": "travel-public" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 22, - "fields": { - "name": "Žiji ve velkém městě", - "form_param": "metropolis" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 23, - "fields": { - "name": "Žiji ve středním městě", - "form_param": "town" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 24, - "fields": { - "name": "Žiji v malém městě / na vesnici", - "form_param": "village" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 25, - "fields": { - "name": "Základní škola", - "form_param": "zs" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 26, - "fields": { - "name": "Střední škola bez maturity", - "form_param": "ss" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 27, - "fields": { - "name": "SŠ s maturitou", - "form_param": "maturita" - } - }, - { - "model": "program2021.SearchCharacteristic", - "pk": 28, - "fields": { - "name": "Vysoká škola", - "form_param": "vs" - } - } -] diff --git a/program2021/migrations/0001_initial.py b/program2021/migrations/0001_initial.py deleted file mode 100644 index f81d5a1b33f6465dbb1833ee0d885f520be97788..0000000000000000000000000000000000000000 --- a/program2021/migrations/0001_initial.py +++ /dev/null @@ -1,316 +0,0 @@ -# Generated by Django 3.0.8 on 2020-07-24 02:35 - -import django.db.models.deletion -import modelcluster.contrib.taggit -import modelcluster.fields -import wagtail.core.blocks -import wagtail.core.fields -import wagtail.images.blocks -import wagtailmetadata.models -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ("wagtailcore", "0045_assign_unlock_grouppagepermission"), - ("taggit", "0003_taggeditem_add_unique_index"), - ("wagtailimages", "0022_uploadedimage"), - ] - - operations = [ - migrations.CreateModel( - name="Program2021HomePage", - fields=[ - ( - "page_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="wagtailcore.Page", - ), - ), - ], - options={ - "verbose_name": "Program 2021", - }, - bases=("wagtailcore.page",), - ), - migrations.CreateModel( - name="Program2021PointPage", - fields=[ - ( - "page_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="wagtailcore.Page", - ), - ), - ( - "public_title", - models.CharField( - blank=True, - help_text="Navrhují markeťáci. Max 46 znaků.", - max_length=46, - null=True, - verbose_name="veřejný název", - ), - ), - ( - "code", - models.CharField( - blank=True, - help_text="Ideálně jedno nebo dvě slova ke krátkému neformálnímu označení tématu. Max 20 znaků.", - max_length=20, - null=True, - verbose_name="kód", - ), - ), - ( - "annotation", - models.TextField( - blank=True, - help_text="Text anotace by měl jasně prezentovat přínos a být dostatečně konkrétní, a to i když konkrétní parametr může být předmětem podrobnějších analýz a diskuse. Anotace má až na výjimky obsahovat konkrétní číslo reprezentující rozsah problému nebo přínos jeho řešení (v tomto případě ušetření 4 miliard). Tato část bodu společně s veřejným názvem je schvalována republikovým výborem jako závazný program do voleb. Max 140 znaků.", - max_length=140, - null=True, - verbose_name="anotace", - ), - ), - ( - "problem", - models.TextField( - blank=True, - help_text="Stručné vystižení podstaty problému ve vztahu k celé společnosti a klíčové cílové skupině. Může jít o budoucí hrozbu, náklady na odkládání či dosud nevyužitou příležitost. Max 280 znaků", - max_length=280, - null=True, - verbose_name="problém", - ), - ), - ( - "ideal", - models.TextField( - blank=True, - help_text="Max 280 znaků.", - max_length=280, - null=True, - verbose_name="ideál", - ), - ), - ( - "benefits_self_employed", - models.TextField( - blank=True, - help_text="Stručný popis dopadu na danou cílovou skupinu. Max 140 znaků.", - max_length=250, - null=True, - verbose_name="benefity OSVČ", - ), - ), - ( - "benefits_companies", - models.TextField( - blank=True, - help_text="Stručný popis dopadu na danou cílovou skupinu. Max 140 znaků.", - max_length=250, - null=True, - verbose_name="benefity firmy", - ), - ), - ( - "benefits_public_money", - models.TextField( - blank=True, - help_text="Rozpracuje tým finance. Úkolem finančního týmu není zpracovat to, ale dát k tomu metodiku a metodickou pomoc. V případě žádosti o pomoc se obracejte prosím na finančního analytika poslaneckého klubu Tomáše Kopečného. Max 140 znaků.", - max_length=250, - null=True, - verbose_name="benefity veřejné finance", - ), - ), - ( - "already_done", - wagtail.core.fields.RichTextField( - blank=True, - help_text="Max 1800 znaků.", - max_length=1800, - null=True, - verbose_name="co jsme už udělali", - ), - ), - ( - "proposals", - wagtail.core.fields.RichTextField( - blank=True, - help_text="Konkrétní (!) body specifikující náš postup v chronologickém pořadí. Max 1800 znaků.", - max_length=1800, - null=True, - verbose_name="navrhovaná opatření", - ), - ), - ( - "implementation_time", - models.CharField( - blank=True, - help_text="Doba, po které se projekt převede do standardního procesního řízení a lze vyhodnotit přinášený efekt. Jde pouze o realizační fázi, nikoliv celý životní cyklus.", - max_length=20, - null=True, - verbose_name="časový horizont realizace", - ), - ), - ( - "faq", - wagtail.core.fields.StreamField( - [ - ( - "item", - wagtail.core.blocks.StructBlock( - [ - ( - "question", - wagtail.core.blocks.CharBlock( - label="otázka" - ), - ), - ( - "answer", - wagtail.core.blocks.TextBlock( - label="odpověď" - ), - ), - ], - label="dotaz", - ), - ) - ], - blank=True, - verbose_name="často kladené dotazy", - ), - ), - ( - "sources", - wagtail.core.fields.RichTextField( - blank=True, - help_text="Naše vlastní údaje (odhady), které nevycházejí přímo z renomovaného zdroje, dokládáme vlastními analýzami na dané téma, které jsou v seznamu zdrojů a měly by procházet externí oponenturou.", - null=True, - verbose_name="zdroje", - ), - ), - ( - "related", - wagtail.core.fields.StreamField( - [ - ( - "point", - wagtail.core.blocks.PageChooserBlock( - label="programový bod", - page_type=["program2021.Program2021PointPage"], - ), - ) - ], - blank=True, - verbose_name="související body", - ), - ), - ( - "images", - wagtail.core.fields.StreamField( - [ - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - label="ilustrační obrázek" - ), - ) - ], - blank=True, - verbose_name="ilustrační obrázky", - ), - ), - ( - "owner_name", - models.TextField( - blank=True, - max_length=250, - null=True, - verbose_name="jméno garanta (zodpovědné osoby)", - ), - ), - ( - "owner_url", - models.URLField( - blank=True, null=True, verbose_name="odkaz na garanta" - ), - ), - ( - "search_image", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="+", - to="wagtailimages.Image", - verbose_name="Search image", - ), - ), - ], - options={ - "verbose_name": "Programový bod", - }, - bases=( - "wagtailcore.page", - wagtailmetadata.models.MetadataMixin, - models.Model, - ), - ), - migrations.CreateModel( - name="Program2021PointPageTag", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "content_object", - modelcluster.fields.ParentalKey( - on_delete=django.db.models.deletion.CASCADE, - to="program2021.Program2021PointPage", - ), - ), - ( - "tag", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="program2021_program2021pointpagetag_items", - to="taggit.Tag", - ), - ), - ], - options={ - "abstract": False, - }, - ), - migrations.AddField( - model_name="program2021pointpage", - name="tags", - field=modelcluster.contrib.taggit.ClusterTaggableManager( - blank=True, - help_text="A comma-separated list of tags.", - through="program2021.Program2021PointPageTag", - to="taggit.Tag", - verbose_name="Tags", - ), - ), - ] diff --git a/program2021/migrations/0002_auto_20200805_0726.py b/program2021/migrations/0002_auto_20200805_0726.py deleted file mode 100644 index df6abceaaa10feeaca54b02336e977efa4ece320..0000000000000000000000000000000000000000 --- a/program2021/migrations/0002_auto_20200805_0726.py +++ /dev/null @@ -1,35 +0,0 @@ -# Generated by Django 3.0.8 on 2020-08-05 05:26 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("program2021", "0001_initial"), - ] - - operations = [ - migrations.AddField( - model_name="program2021homepage", - name="headline", - field=models.CharField( - blank=True, - help_text="Hlavní titulek domovské stránky", - max_length=100, - null=True, - verbose_name="název programu", - ), - ), - migrations.AddField( - model_name="program2021homepage", - name="perex", - field=models.TextField( - blank=True, - help_text="Text pod titulkem", - max_length=512, - null=True, - verbose_name="perex", - ), - ), - ] diff --git a/program2021/migrations/0003_auto_20200805_1034.py b/program2021/migrations/0003_auto_20200805_1034.py deleted file mode 100644 index fcc26724e1b79dad8364f9871f16e6551b611313..0000000000000000000000000000000000000000 --- a/program2021/migrations/0003_auto_20200805_1034.py +++ /dev/null @@ -1,61 +0,0 @@ -# Generated by Django 3.0.8 on 2020-08-05 08:34 - -import django.db.models.deletion -import modelcluster.contrib.taggit -import modelcluster.fields -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("taggit", "0003_taggeditem_add_unique_index"), - ("program2021", "0002_auto_20200805_0726"), - ] - - operations = [ - migrations.CreateModel( - name="Program2021PointPageSearchTag", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "content_object", - modelcluster.fields.ParentalKey( - on_delete=django.db.models.deletion.CASCADE, - to="program2021.Program2021PointPage", - ), - ), - ( - "tag", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="program2021_program2021pointpagesearchtag_items", - to="taggit.Tag", - ), - ), - ], - options={ - "abstract": False, - }, - ), - migrations.AddField( - model_name="program2021pointpage", - name="search_tags", - field=modelcluster.contrib.taggit.ClusterTaggableManager( - blank=True, - help_text='Tagy pro vyhledavani. Musi byt zadany presne, aby to fungovalo. Tagy jsou deleny do skupin se spolecnym prefixem, napr. "gender". \nPriklad: chces-li programovy bod pouze pro muze, zadej tag "gender-male", pokud je to jedno, musis zadat tag "gender-every". Seznam tagu a skupin:\nx y z\nb d f\nl o p q\n ', - related_name="search_tags", - through="program2021.Program2021PointPageSearchTag", - to="taggit.Tag", - verbose_name="Tags", - ), - ), - ] diff --git a/program2021/migrations/0003_program2021pointpage_image_title.py b/program2021/migrations/0003_program2021pointpage_image_title.py deleted file mode 100644 index a8f4520b8b8c6069aee66f3dd479cfb03dafa182..0000000000000000000000000000000000000000 --- a/program2021/migrations/0003_program2021pointpage_image_title.py +++ /dev/null @@ -1,26 +0,0 @@ -# Generated by Django 3.0.8 on 2020-08-06 08:54 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("wagtailimages", "0022_uploadedimage"), - ("program2021", "0002_auto_20200805_0726"), - ] - - operations = [ - migrations.AddField( - model_name="program2021pointpage", - name="image_title", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.PROTECT, - to="wagtailimages.Image", - verbose_name="titulní obrázek", - ), - ), - ] diff --git a/program2021/migrations/0004_auto_20200930_1156.py b/program2021/migrations/0004_auto_20200930_1156.py deleted file mode 100644 index 7c8bb8c2afb16cd01df91ca48adc9376612f779a..0000000000000000000000000000000000000000 --- a/program2021/migrations/0004_auto_20200930_1156.py +++ /dev/null @@ -1,41 +0,0 @@ -# Generated by Django 3.1.1 on 2020-09-30 09:56 - -import wagtail.core.blocks -import wagtail.core.fields -import wagtail.images.blocks -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ("program2021", "0003_program2021pointpage_image_title"), - ] - - operations = [ - migrations.AlterField( - model_name="program2021pointpage", - name="images", - field=wagtail.core.fields.StreamField( - [ - ( - "item", - wagtail.core.blocks.StructBlock( - [ - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - label="ilustrační obrázek" - ), - ), - ("title", wagtail.core.blocks.CharBlock(label="popis")), - ], - label="obrázek", - ), - ) - ], - blank=True, - verbose_name="ilustrační obrázky", - ), - ), - ] diff --git a/program2021/migrations/0004_merge_20200812_1337.py b/program2021/migrations/0004_merge_20200812_1337.py deleted file mode 100644 index 8fed978fb3c1ca2d58e84434b574fc1e610828ca..0000000000000000000000000000000000000000 --- a/program2021/migrations/0004_merge_20200812_1337.py +++ /dev/null @@ -1,13 +0,0 @@ -# Generated by Django 3.0.8 on 2020-08-12 11:37 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ("program2021", "0003_auto_20200805_1034"), - ("program2021", "0003_program2021pointpage_image_title"), - ] - - operations = [] diff --git a/program2021/migrations/0005_auto_20200812_1337.py b/program2021/migrations/0005_auto_20200812_1337.py deleted file mode 100644 index d2391ed2e85e2a3c5be85f55f243b932d122adab..0000000000000000000000000000000000000000 --- a/program2021/migrations/0005_auto_20200812_1337.py +++ /dev/null @@ -1,78 +0,0 @@ -# Generated by Django 3.0.8 on 2020-08-12 11:37 - -import django.db.models.deletion -import modelcluster.contrib.taggit -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("taggit", "0003_taggeditem_add_unique_index"), - ("program2021", "0004_merge_20200812_1337"), - ] - - operations = [ - migrations.CreateModel( - name="SearchCharacteristic", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "name", - models.CharField( - max_length=200, - verbose_name="lidský název pro použití v administraci", - ), - ), - ], - ), - migrations.AlterField( - model_name="program2021pointpage", - name="search_tags", - field=modelcluster.contrib.taggit.ClusterTaggableManager( - blank=True, - help_text='Deleny do skupin se spolecnym prefixem, napr. "gender". Pokud je bod spolecny pro vsechny moznosti dane skupiny, pouzij tag se suffixem "-every". \nPriklad: chces-li programovy bod pouze pro muze, zadej tag "gender-male", pokud je to jedno, musis zadat tag "gender-every". \nPro kazdou skupinu musis zadat aspon jeden tag, jinak se bod nedostane nikdy do vysledku vyhledavani. Seznam tagu po skupinach:\n(gender-male gender-female gender-every) \n(age-30 age-50 age-65 age-99 age-every) \n(kids-yes kids-no kids-every)\n(occupation-student occupation-employee-public occupation-employee-private occupation-entrepreneur occupation-maternity occupation-retired occupation-every)\n(wealth-excelent wealth-good wealth-average wealth-bad wealth-every)\n(travel-bike travel-car travel-public travel-every)\n(housing-metropolis housing-town housing-village housing-every) \n(education-zs education-ss education-maturita education-vs education-every)\n ', - related_name="search_tags", - through="program2021.Program2021PointPageSearchTag", - to="taggit.Tag", - verbose_name="Tagy pro vyhledávání", - ), - ), - migrations.CreateModel( - name="CharacteristicWeight", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("weight", models.IntegerField()), - ( - "program_point", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - to="program2021.Program2021PointPage", - ), - ), - ( - "search_characteristic", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - to="program2021.SearchCharacteristic", - ), - ), - ], - ), - ] diff --git a/program2021/migrations/0006_auto_20200812_1556.py b/program2021/migrations/0006_auto_20200812_1556.py deleted file mode 100644 index 2741e763dba243170702f95f1eec30c2086077aa..0000000000000000000000000000000000000000 --- a/program2021/migrations/0006_auto_20200812_1556.py +++ /dev/null @@ -1,38 +0,0 @@ -# Generated by Django 3.0.8 on 2020-08-12 13:56 - -import django.db.models.deletion -import modelcluster.fields -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("program2021", "0005_auto_20200812_1337"), - ] - - operations = [ - migrations.AlterField( - model_name="characteristicweight", - name="program_point", - field=modelcluster.fields.ParentalKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="program_point_link", - to="program2021.Program2021PointPage", - ), - ), - migrations.AlterField( - model_name="characteristicweight", - name="search_characteristic", - field=models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - to="program2021.SearchCharacteristic", - verbose_name="Charakteristika", - ), - ), - migrations.AlterField( - model_name="characteristicweight", - name="weight", - field=models.IntegerField(verbose_name="Váha"), - ), - ] diff --git a/program2021/migrations/0007_auto_20200812_1951.py b/program2021/migrations/0007_auto_20200812_1951.py deleted file mode 100644 index 959a81069af16a92b394d7276ba0425f22187e87..0000000000000000000000000000000000000000 --- a/program2021/migrations/0007_auto_20200812_1951.py +++ /dev/null @@ -1,52 +0,0 @@ -# Generated by Django 3.0.8 on 2020-08-12 17:51 - -import django.db.models.deletion -import modelcluster.contrib.taggit -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("taggit", "0003_taggeditem_add_unique_index"), - ("program2021", "0006_auto_20200812_1556"), - ] - - operations = [ - migrations.AddField( - model_name="searchcharacteristic", - name="form_param", - field=models.CharField( - blank=True, - max_length=20, - null=True, - verbose_name="ID parametru ve formuláři", - ), - ), - migrations.AlterField( - model_name="characteristicweight", - name="search_characteristic", - field=models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - to="program2021.SearchCharacteristic", - verbose_name="Zadáno", - ), - ), - migrations.AlterField( - model_name="program2021pointpage", - name="search_tags", - field=modelcluster.contrib.taggit.ClusterTaggableManager( - blank=True, - help_text='Deleny do skupin se spolecnym prefixem, napr. "gender". Pokud je bod spolecny pro vsechny moznosti dane skupiny, pouzij tag se suffixem "-every".\nPriklad: chces-li programovy bod pouze pro muze, zadej tag "gender-male", pokud je to jedno, musis zadat tag "gender-every".\nPro kazdou skupinu musis zadat aspon jeden tag, jinak se bod nedostane nikdy do vysledku vyhledavani. Seznam tagu po skupinach:\n(gender-male gender-female gender-every)\n(age-30 age-50 age-65 age-99 age-every)\n(kids-yes kids-no kids-every)\n(occupation-student occupation-employee-public occupation-employee-private occupation-entrepreneur occupation-maternity occupation-retired occupation-every)\n(wealth-excelent wealth-good wealth-average wealth-bad wealth-every)\n(travel-bike travel-car travel-public travel-every)\n(housing-metropolis housing-town housing-village housing-every)\n(education-zs education-ss education-maturita education-vs education-every)\n ', - related_name="search_tags", - through="program2021.Program2021PointPageSearchTag", - to="taggit.Tag", - verbose_name="Tagy pro vyhledávání", - ), - ), - migrations.AlterField( - model_name="searchcharacteristic", - name="name", - field=models.CharField(max_length=200, verbose_name="Název"), - ), - ] diff --git a/program2021/migrations/0008_auto_20200812_2117.py b/program2021/migrations/0008_auto_20200812_2117.py deleted file mode 100644 index 6ba95fa360086640722e089eaa48cf7950056c9e..0000000000000000000000000000000000000000 --- a/program2021/migrations/0008_auto_20200812_2117.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 3.0.8 on 2020-08-12 19:17 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ("program2021", "0007_auto_20200812_1951"), - ] - - operations = [ - migrations.RemoveField( - model_name="program2021pointpage", - name="search_tags", - ), - migrations.DeleteModel( - name="Program2021PointPageSearchTag", - ), - ] diff --git a/program2021/migrations/0009_merge_20201026_2345.py b/program2021/migrations/0009_merge_20201026_2345.py deleted file mode 100644 index 721bf891805aada16a9dca34164a9d5e90a55a39..0000000000000000000000000000000000000000 --- a/program2021/migrations/0009_merge_20201026_2345.py +++ /dev/null @@ -1,13 +0,0 @@ -# Generated by Django 3.1.2 on 2020-10-26 22:45 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ("program2021", "0008_auto_20200812_2117"), - ("program2021", "0004_auto_20200930_1156"), - ] - - operations = [] diff --git a/program2021/migrations/__init__.py b/program2021/migrations/__init__.py deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/program2021/models.py b/program2021/models.py deleted file mode 100644 index 8f21c313824c9eb1608167059ce13bb0c0998385..0000000000000000000000000000000000000000 --- a/program2021/models.py +++ /dev/null @@ -1,355 +0,0 @@ -from django.db import models -from django.utils.translation import gettext_lazy -from modelcluster.contrib.taggit import ClusterTaggableManager -from modelcluster.fields import ParentalKey -from taggit.models import TaggedItemBase -from wagtail.admin.edit_handlers import ( - FieldPanel, - HelpPanel, - InlinePanel, - MultiFieldPanel, - ObjectList, - StreamFieldPanel, - TabbedInterface, -) -from wagtail.core import blocks -from wagtail.core.fields import RichTextField, StreamField -from wagtail.core.models import Page -from wagtail.images.blocks import ImageChooserBlock -from wagtail.images.edit_handlers import ImageChooserPanel -from wagtailmetadata.models import MetadataPageMixin - - -class SearchCharacteristic(models.Model): - """ Ciselnik charakteristik odesilanych uzivatelem, napriklad vek65+ """ - - name = models.CharField("Název", max_length=200, blank=False, null=False) - - # mapování chareakteristiky na přislusnou POST promennou odeslanou HTML formularem - form_param = models.CharField( - "ID parametru ve formuláři", max_length=20, blank=True, null=True - ) - - def __str__(self): - return self.name - - -class CharacteristicWeight(models.Model): - """ Prirazeni vahy jedntlivych charakteristik programovym blokum """ - - search_characteristic = models.ForeignKey( - SearchCharacteristic, on_delete=models.CASCADE, verbose_name="Zadáno" - ) - program_point = ParentalKey( - "Program2021PointPage", - on_delete=models.CASCADE, - related_name="program_point_link", - ) - weight = models.IntegerField(verbose_name="Váha") - - panels = [ - FieldPanel("search_characteristic"), - FieldPanel("weight"), - ] - - -class Program2021HomePage(Page): - ### FIELDS - headline = models.CharField( - "název programu", - max_length=100, - blank=True, - null=True, - help_text="Hlavní titulek domovské stránky", - ) - perex = models.TextField( - "perex", - max_length=512, - blank=True, - null=True, - help_text="Text pod titulkem", - ) - - ### PANELS - - content_panels = Page.content_panels + [ - MultiFieldPanel( - [ - FieldPanel("headline"), - FieldPanel("perex"), - ], - heading="Vyhledávací formulář", - ), - ] - - settings_panels = [] - - ### RELATIONS - - subpage_types = ["program2021.Program2021PointPage"] - - ### OTHERS - - class Meta: - verbose_name = "Program 2021" - - def get_context(self, request): - context = super().get_context(request) - - if request.method == "POST": - - sent_tags = [request.POST.get(x, None) for x in request.POST.keys()] - sent_tags = [x for x in sent_tags if x] - - # dopocitej vahu podle predanych parametru z vyhledavani... - context["points"] = self.get_children().live().specific() - for point in context["points"]: - point.weight = point.get_weight(sent_tags) - - # ...a setrid dle ni vysledky. HACK: pomale, ale pocitame max. v desitkach zaznamu, tedy acceptable - context["points"] = sorted(context["points"], key=lambda x: -x.weight) - - else: - # neformular - vrat vsechny body - context["points"] = self.get_children().live().specific() - - return context - - -class Program2021PointPageTag(TaggedItemBase): - content_object = ParentalKey( - "program2021.Program2021PointPage", on_delete=models.CASCADE - ) - - -class Program2021PointPage(Page, MetadataPageMixin): - RICH_TEXT_FEATURES = ["bold", "italic", "ol", "ul", "link", "document-link"] - - ### FIELDS - public_title = models.CharField( - "veřejný název", - max_length=46, - blank=True, - null=True, - help_text="Navrhují markeťáci. Max 46 znaků.", - ) - code = models.CharField( - "kód", - max_length=20, - blank=True, - null=True, - help_text="Ideálně jedno nebo dvě slova ke krátkému neformálnímu označení tématu. Max 20 znaků.", - ) - annotation = models.TextField( - "anotace", - max_length=140, - blank=True, - null=True, - help_text="Text anotace by měl jasně prezentovat přínos a být dostatečně konkrétní, a to i když konkrétní parametr může být předmětem podrobnějších analýz a diskuse. Anotace má až na výjimky obsahovat konkrétní číslo reprezentující rozsah problému nebo přínos jeho řešení (v tomto případě ušetření 4 miliard). Tato část bodu společně s veřejným názvem je schvalována republikovým výborem jako závazný program do voleb. Max 140 znaků.", - ) - problem = models.TextField( - "problém", - max_length=280, - blank=True, - null=True, - help_text="Stručné vystižení podstaty problému ve vztahu k celé společnosti a klíčové cílové skupině. Může jít o budoucí hrozbu, náklady na odkládání či dosud nevyužitou příležitost. Max 280 znaků", - ) - ideal = models.TextField( - "ideál", max_length=280, blank=True, null=True, help_text="Max 280 znaků." - ) - benefits_self_employed = models.TextField( - "benefity OSVČ", - max_length=250, - blank=True, - null=True, - help_text="Stručný popis dopadu na danou cílovou skupinu. Max 140 znaků.", - ) - benefits_companies = models.TextField( - "benefity firmy", - max_length=250, - blank=True, - null=True, - help_text="Stručný popis dopadu na danou cílovou skupinu. Max 140 znaků.", - ) - benefits_public_money = models.TextField( - "benefity veřejné finance", - max_length=250, - blank=True, - null=True, - help_text="Rozpracuje tým finance. Úkolem finančního týmu není zpracovat to, ale dát k tomu metodiku a metodickou pomoc. V případě žádosti o pomoc se obracejte prosím na finančního analytika poslaneckého klubu Tomáše Kopečného. Max 140 znaků.", - ) - already_done = RichTextField( - "co jsme už udělali", - max_length=1800, - blank=True, - null=True, - help_text="Max 1800 znaků.", - features=RICH_TEXT_FEATURES, - ) - proposals = RichTextField( - "navrhovaná opatření", - max_length=1800, - blank=True, - null=True, - help_text="Konkrétní (!) body specifikující náš postup v chronologickém pořadí. Max 1800 znaků.", - features=RICH_TEXT_FEATURES, - ) - implementation_time = models.CharField( - "časový horizont realizace", - max_length=20, - blank=True, - null=True, - help_text="Doba, po které se projekt převede do standardního procesního řízení a lze vyhodnotit přinášený efekt. Jde pouze o realizační fázi, nikoliv celý životní cyklus.", - ) - faq = StreamField( - [ - ( - "item", - blocks.StructBlock( - [ - ("question", blocks.CharBlock(label="otázka")), - ("answer", blocks.TextBlock(label="odpověď")), - ], - label="dotaz", - ), - ), - ], - verbose_name="často kladené dotazy", - blank=True, - ) - sources = RichTextField( - "zdroje", - blank=True, - null=True, - help_text="Naše vlastní údaje (odhady), které nevycházejí přímo z renomovaného zdroje, dokládáme vlastními analýzami na dané téma, které jsou v seznamu zdrojů a měly by procházet externí oponenturou.", - features=RICH_TEXT_FEATURES, - ) - related = StreamField( - [ - ( - "point", - blocks.PageChooserBlock( - label="programový bod", page_type="program2021.Program2021PointPage" - ), - ), - ], - verbose_name="související body", - blank=True, - ) - image_title = models.ForeignKey( - "wagtailimages.Image", - verbose_name="titulní obrázek", - on_delete=models.PROTECT, - null=True, - blank=True, - ) - images = StreamField( - [ - ( - "item", - blocks.StructBlock( - [ - ("image", ImageChooserBlock(label="ilustrační obrázek")), - ("title", blocks.CharBlock(label="popis")), - ], - label="obrázek", - ), - ), - ], - verbose_name="ilustrační obrázky", - blank=True, - ) - owner_name = models.TextField( - "jméno garanta (zodpovědné osoby)", max_length=250, blank=True, null=True - ) - owner_url = models.URLField("odkaz na garanta", blank=True, null=True) - tags = ClusterTaggableManager(through=Program2021PointPageTag, blank=True) - - ### PANELS - - content_panels = Page.content_panels + [ - MultiFieldPanel( - [ - FieldPanel("public_title"), - FieldPanel("annotation"), - FieldPanel("tags"), - FieldPanel("problem"), - FieldPanel("ideal"), - FieldPanel("already_done"), - FieldPanel("proposals"), - FieldPanel("sources"), - FieldPanel("implementation_time"), - FieldPanel("code"), - ImageChooserPanel("image_title"), - ], - heading="základní informace", - ), - MultiFieldPanel( - [FieldPanel("owner_name"), FieldPanel("owner_url")], - heading="garant", - ), - StreamFieldPanel("images"), - StreamFieldPanel("related"), - ] - - benefits_content_panels = [ - HelpPanel( - "V této části rozpracováváme benefity tak, abychom je mohli souhrnně nabídnout dané cílové skupině. Negativní věci zpracováváme typicky do často kladených otázek dole. U negativ se však vždy prezentuje i související přínos (tzv. balíčkovací zásada, např. snížíme daně z práce díky lepšímu zdanění zisků dnes vyváděných do zahraničí), aby nikdo nemohl takový bod vytrhnout z kontextu a prezentovat proti nám." - ), - MultiFieldPanel( - [ - FieldPanel("benefits_self_employed"), - FieldPanel("benefits_companies"), - FieldPanel("benefits_public_money"), - ] - ), - ] - - faq_content_panels = [ - StreamFieldPanel("faq"), - ] - - search_panels = [InlinePanel("program_point_link", label="Váhy vyhledávání")] - - promote_panels = [ - MultiFieldPanel( - [ - FieldPanel("slug"), - FieldPanel("seo_title"), - FieldPanel("search_description"), - ImageChooserPanel("search_image"), - ], - gettext_lazy("Common page configuration"), - ), - ] - - edit_handler = TabbedInterface( - [ - ObjectList(content_panels, heading=gettext_lazy("Content")), - ObjectList(benefits_content_panels, heading="Benefity"), - ObjectList(search_panels, heading="Hledání"), - ObjectList(faq_content_panels, heading="FAQ"), - ObjectList(promote_panels, heading=gettext_lazy("Promote")), - ] - ) - - ### RELATIONS - - parent_page_types = ["program2021.Program2021HomePage"] - subpage_types = [] - - ### OTHERS - - class Meta: - verbose_name = "Programový bod" - - def get_weight(self, param_ids): - """ Vraci celkovou vahu tagu, predanych v seznamu param_ids """ - # Kvuli prehlednosti nepisu jako oneliner :) - my_weights = self.program_point_link.all() - involved_weights = [ - x.weight - for x in my_weights - if x.search_characteristic.form_param in param_ids - ] - return sum(involved_weights) diff --git a/program2021/templates/program2021/base.html b/program2021/templates/program2021/base.html deleted file mode 100644 index 7bca669c699cd0de2918bdf8706bf01429de4807..0000000000000000000000000000000000000000 --- a/program2021/templates/program2021/base.html +++ /dev/null @@ -1,52 +0,0 @@ -{% load static wagtailcore_tags wagtailimages_tags wagtailmetadata_tags %} -<!doctype html> -<html lang="en"> - <head> - <!-- Required meta tags --> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> - - <!-- Bootstrap CSS --> - <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous"> - - <title>Program 2021</title> - - {% if settings.MAJAK_ENV == "test" %} - <meta name="robots" content="noindex, nofollow"> - {% endif %} - - <style type="text/css"> - .card a { - text-decoration: none; - color: inherit; - } - </style> - </head> - <body> - <header> - <div class="navbar navbar-dark bg-dark shadow-sm"> - <div class="container d-flex justify-content-between"> - <a href="/" class="navbar-brand d-flex align-items-center"> - <svg class="bi bi-file-earmark-check" width="1em" height="1em" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> - <path d="M9 1H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h5v-1H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h5v2.5A1.5 1.5 0 0 0 10.5 6H13v2h1V6L9 1z"/> - <path fill-rule="evenodd" d="M15.854 10.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708l1.146 1.147 2.646-2.647a.5.5 0 0 1 .708 0z"/> - </svg> - <strong> Program 2021</strong> - </a> - </div> - </div> - </header> - - <main role="main"> - - {% block content %}{% endblock %} - - </main> - - <!-- Optional JavaScript --> - <!-- jQuery first, then Popper.js, then Bootstrap JS --> - <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> - <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script> - <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script> - </body> -</html> diff --git a/program2021/templates/program2021/program2021_home_page.html b/program2021/templates/program2021/program2021_home_page.html deleted file mode 100644 index a889c69ead00a5efc1c2d9fec7d9fffac390474f..0000000000000000000000000000000000000000 --- a/program2021/templates/program2021/program2021_home_page.html +++ /dev/null @@ -1,193 +0,0 @@ -{% extends "program2021/base.html" %} -{% load static wagtailimages_tags wagtailcore_tags %} -{% block content %} - -<section class="jumbotron text-center"> - <div class="container"> - <h1>{{ page.headline }}</h1> - <p class="lead mt-3"><big>{{ page.perex }}</big></p> - - <form class="text-left mt-5" action="{% pageurl page %}" method="POST"> - {% csrf_token %} - - <div class="row my-3"> - <div class="col-2 text-right">pohlaví:</div> - <div class="col-4 btn-group btn-group-toggle" data-toggle="buttons"> - <label class="btn btn-outline-secondary"> - <input type="radio" name="gender" id="gender1" value="female" autocomplete="off"> žena - </label> - <label class="btn btn-outline-secondary"> - <input type="radio" name="gender" id="gender2" value="male" autocomplete="off"> muž - </label> - <label class="btn btn-outline-secondary active"> - <input type="radio" name="gender" id="gender3" value="" autocomplete="off"> jiné / nechci uvést - </label> - </div> - </div> - - <div class="row my-3"> - <div class="col-2 text-right">věk:</div> - <div class="col-6 btn-group btn-group-toggle" data-toggle="buttons"> - <label class="btn btn-outline-secondary active"> - <input type="radio" name="age" id="age1" value="age30" autocomplete="off"> do 30 let - </label> - <label class="btn btn-outline-secondary"> - <input type="radio" name="age" id="age2" value="age50" autocomplete="off"> 30 - 49 let - </label> - <label class="btn btn-outline-secondary"> - <input type="radio" name="age" id="age3" value="age65" autocomplete="off"> 50 - 64 let - </label> - <label class="btn btn-outline-secondary"> - <input type="radio" name="age" id="age4" value="age99" autocomplete="off"> 65+ let - </label> - <label class="btn btn-outline-secondary"> - <input type="radio" name="age" id="age5" value="" autocomplete="off"> nechci uvést - </label> - </div> - </div> - - <div class="row my-3"> - <div class="col-2 text-right">mám děti:</div> - <div class="col-3 btn-group btn-group-toggle" data-toggle="buttons"> - <label class="btn btn-outline-secondary"> - <input type="radio" name="kids" id="kids1" value="kids" autocomplete="off"> ano - </label> - <label class="btn btn-outline-secondary"> - <input type="radio" name="kids" id="kids2" value="nokids" autocomplete="off"> ne - </label> - <label class="btn btn-outline-secondary active"> - <input type="radio" name="kids" id="kids3" value="" autocomplete="off"> nechci uvést - </label> - </div> - </div> - - <div class="row form-group"> - <div class="col-2 text-right"> - <label for="occupation">jsem:</label> - </div> - <div class="col-4"> - <select class="form-control" id="occupation" name="occupation"> - <option value="">jiné / nechci uvést</option> - <option value="student">studující</option> - <option value="employee-public">zaměstnaný/á ve veřejné sféře</option> - <option value="employee-private">zaměstnaný/á v soukromé sféře</option> - <option value="entrepreneur">podnikající</option> - <option value="maternity">na mateřské / rodičovské</option> - <option value="retired">v důchodu</option> - </select> - </div> - </div> - - <div class="row form-group"> - <div class="col-2 text-right"> - <label for="wealth">životní úroveň:</label> - </div> - <div class="col-4"> - <select class="form-control" id="wealth" name="wealth"> - <option value="">jiné / nechci uvést</option> - <option value="wealth-great">velmi dobrá</option> - <option value="wealth-good">dobrá</option> - <option value="wealth-average">ani dobrá, ani špatná</option> - <option value="wealth-bad">špatná</option> - </select> - </div> - </div> - - <div class="row form-group"> - <div class="col-2 text-right"> - často jezdím: - </div> - <div class="col-4"> - <div class="custom-control custom-checkbox"> - <input type="checkbox" class="custom-control-input" id="travel1" value="travel-bike" name="travel-bike"> - <label class="custom-control-label" for="travel1">na kole</label> - </div> - <div class="custom-control custom-checkbox"> - <input type="checkbox" class="custom-control-input" id="travel2" value="travel-car" name="travel-car"> - <label class="custom-control-label" for="travel2">autem</label> - </div> - <div class="custom-control custom-checkbox"> - <input type="checkbox" class="custom-control-input" id="travel3" value="travel-public" name="travel-public"> - <label class="custom-control-label" for="travel3">veřejnou dopravou</label> - </div> - </div> - </div> - - <div class="row form-group"> - <div class="col-2 text-right"> - <label for="housing">bydlím:</label> - </div> - <div class="col-4"> - <select class="form-control" id="housing" name="housing"> - <option value="">jiné / nechci uvést</option> - <option value="metropolis">ve velkém městě nebo jeho okolí</option> - <option value="town">ve středně velkém městě (10 - 50 tis.)</option> - <option value="village">v malém městě nebo na vesnici</option> - </select> - </div> - </div> - - <div class="row my-3"> - <div class="col-2 text-right">vzdělání:</div> - <div class="col-6 btn-group btn-group-toggle" data-toggle="buttons"> - <label class="btn btn-outline-secondary"> - <input type="radio" name="education" id="education1" value="zs" autocomplete="off"> ZŠ - </label> - <label class="btn btn-outline-secondary"> - <input type="radio" name="education" id="education2" value="ss" autocomplete="off"> SŠ bez maturity - </label> - <label class="btn btn-outline-secondary"> - <input type="radio" name="education" id="education3" value="maturita" autocomplete="off"> SŠ s maturitou - </label> - <label class="btn btn-outline-secondary"> - <input type="radio" name="education" id="education4" value="vs" autocomplete="off"> VŠ - </label> - <label class="btn btn-outline-secondary active"> - <input type="radio" name="education" id="education5" value="" autocomplete="off"> nechci uvést - </label> - </div> - </div> - - <div class="row form-group"> - <div class="col-2"> - </div> - <div class="col-4"> - <input type="submit" value="Vyhledat"> - </div> - </div> - - </form> - - </div> -</section> - -<div class="my-5"> - <div class="container"> - <div class="row"> - - {% for point in points %} - <div class="col-md-4"> - <div class="card mb-4 shadow-sm"> - <a href="{% pageurl point %}"> - <div class="card-body"> - <div class="mb-3"> - {% image point.image_title max-400x200 class="lazyload img-fluid w-100" %} - </div> - <h5 class="card-title">{{ point.public_title }}</h5> - <p class="card-text">{{ point.annotation }}</p> - <p class="card-text"> - {% for tag in point.tags.all %} - <span class="badge badge-light"># {{ tag }}</span> - {% endfor %} - </p> - </div> - </a> - </div> - </div> - {% endfor %} - - </div> - </div> -</div> - -{% endblock %} diff --git a/program2021/templates/program2021/program2021_point_page.html b/program2021/templates/program2021/program2021_point_page.html deleted file mode 100644 index ea50b14b9c8c4ae8006ea03f7f69271319151779..0000000000000000000000000000000000000000 --- a/program2021/templates/program2021/program2021_point_page.html +++ /dev/null @@ -1,112 +0,0 @@ -{% extends "program2021/base.html" %} -{% load static wagtailimages_tags wagtailcore_tags %} - -{% block content %} - -<div class="container"> - <div class="row"> - - <div class="jumbotron mb-5 col-12"> - - <div class="row"> - <div class="col-12 col-lg-4"> - {% if page.images.0.block_type == 'image' %} - {% image page.images.0.value max-300x200 class="" %} - {% endif %} - </div> - <div class="col-12 col-lg-8 px-lg-5"> - <h1 class="display-4">{{ page.public_title }}</h1> - <p class="lead">{{ page.annotation }}</p> - </div> - </div> - - <p class="mt-4 mb-0 text-right"> - {% for tag in page.tags.all %} - <span class="badge badge-light"># {{ tag }}</span> - {% endfor %} - </p> - </div> - - <div class="col-md-6 p-1"> - <div class="jumbotron h-100"> - <h3>Problém</h3> - <p>{{ page.problem }}</p> - </div> - </div> - - <div class="col-md-6 p-1"> - <div class="jumbotron h-100"> - <h3>Ideál</h3> - <p>{{ page.ideal }}</p> - </div> - </div> - - <div class="w-100 my-4"></div> - - <div class="col-md-6 pr-5"> - <h3>Navrhovaná opatření</h3> - <p>{{ page.proposals|richtext }}</p> - </div> - - <div class="col-md-6 pl-5"> - <h3>Co jsme už udělali</h3> - <p>{{ page.already_done|richtext }}</p> - </div> - - <div class="w-100 my-4"></div> - - <div class="col-md-6 pr-5"> - <h3>Benefity</h3> - <h5 class="mt-4">OSVČ</h5> - <p>{{ page.benefits_self_employed }}</p> - <h5 class="mt-4">Firmy</h5> - <p>{{ page.benefits_companies }}</p> - <h5 class="mt-4">Veřejné finance</h5> - <p>{{ page.benefits_public_money }}</p> - </div> - - <div class="col-md-6 pl-5"> - <h3>Často kladené otázky</h3> - {% for qa in page.faq %} - <h5 class="mt-4">{{ qa.value.question }}</h5> - <p>{{ qa.value.answer }}</p> - {% endfor %} - </div> - - <div class="w-100 my-4"></div> - - <div class="col-md-6 pr-5"> - <h3>Časový horizont</h3> - {% if page.implementation_time %} - <p>{{ page.implementation_time }}</p> - {% endif %} - <h3 class="mt-4">Související body</h3> - <ul> - {% for point in page.related %} - <li><a href="{% pageurl point.value %}">{{ point.value.title }}</a></li> - {% endfor %} - </ul> - </div> - - <div class="col-md-6 pl-5"> - <h3>Zdroje</h3> - <p>{{ page.sources|richtext }}</p> - </div> - - {% if page.images %} - <div class="row about-images mb-5 mt-3 jumbotron"> - {% for block in page.images %} - {% image block.value.image width-2000 as img %} - {% image block.value.image fill-300x200 as thumb %} - <div class="col-6 col-md-3 mb-4"> - <a data-fancybox="gallery" href="{{ img.url }}"><img data-src="{{ thumb.url }}" class="lazyload img-fluid" alt="{{ block.value.title }}"></a><br> - {{ block.value.title }} - </div><!-- /column --> - {% endfor %} - </div><!-- /row --> - {% endif %} - - </div> -</div> - -{% endblock %}