Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • feat-more-blocks
  • feat-rework-election-page
  • feat/custom-css
  • feat/dary-improvements
  • feat/geo-feature-collections
  • feat/hideable-tweets
  • feat/instagram-feed
  • feat/people-octopus-imports
  • feat/pirstan-changes
  • feat/redesign-fixes-3
  • feat/redesign-improvements-10
  • feat/redesign-improvements-8
  • feat/separate-import-thread
  • feature/crypto-widget
  • features/add-custom-numbering-for-candidates
  • features/add-dynamic-candidate-numbers
  • features/add-embed-to-articles
  • features/add-feature-enlarging-sub-block
  • features/add-link-to-images
  • features/add-pdf-page
  • features/add-redirects
  • features/add-thumbnail-principle-to-uniweb-and-senate
  • features/add-timeline
  • features/add-typed-table
  • features/create-collapsible-extra-legal-info
  • features/create-mastodon-feed-block
  • features/create-wordcloud-from-article-page
  • features/donation-panel-should-be-optional
  • features/extend-hero-banner
  • features/fix-broken-calendar-categories
  • master
  • test
32 results

Target

Select target project
  • to/majak
  • b1242/majak
2 results
Select Git revision
  • feat-more-blocks
  • feat-rework-election-page
  • feat/custom-css
  • feat/dary-improvements
  • feat/geo-feature-collections
  • feat/hideable-tweets
  • feat/instagram-feed
  • feat/people-octopus-imports
  • feat/pirstan-changes
  • feat/redesign-fixes-3
  • feat/redesign-improvements-10
  • feat/redesign-improvements-8
  • feat/separate-import-thread
  • feature/crypto-widget
  • features/add-custom-numbering-for-candidates
  • features/add-dynamic-candidate-numbers
  • features/add-embed-to-articles
  • features/add-feature-enlarging-sub-block
  • features/add-link-to-images
  • features/add-pdf-page
  • features/add-redirects
  • features/add-thumbnail-principle-to-uniweb-and-senate
  • features/add-timeline
  • features/add-typed-table
  • features/create-collapsible-extra-legal-info
  • features/create-mastodon-feed-block
  • features/create-wordcloud-from-article-page
  • features/donation-panel-should-be-optional
  • features/extend-hero-banner
  • features/fix-broken-calendar-categories
  • master
  • test
32 results
Show changes
......@@ -34,14 +34,27 @@
</ui-horizontal-scrollable>
</div>
<div class="flex flex-wrap gap-4">
{% for people_group in page.people %}
<template v-if="isCurrentView('{{ people_group.value.slug }}-{{ forloop.counter }}')">
{% for person_page in people_group.value.person_list %}
{% for block in page.people %}
<template v-if="isCurrentView('{{ block.value.slug }}-{{ forloop.counter }}')">
{% if block.block_type == "people_group" %}
{% for person_page in block.value.person_list %}
{% include 'main/includes/person_contact_big.html' %}
{% endfor %}
{% endif %}
</template>
{% endfor %}
</div>
{% for block in page.people %}
<template v-if="isCurrentView('{{ block.value.slug }}-{{ forloop.counter }}')">
<div class="grid-left-side-with-content">
{% if block.block_type == "team_group" %}
{% for card_block in block.value.team_list %}
{% include_block card_block %}
{% endfor %}
{% endif %}
</div>
</template>
{% endfor %}
</ui-view-provider>
</div>
</div>
......
......@@ -628,7 +628,7 @@ class CardLinkBlockMixin(blocks.StructBlock):
class Meta:
# template = ""
icon = "link"
label = "Karta odkazu"
label = "Karta s odkazem"
def clean(self, value):
errors = {}
......@@ -650,7 +650,7 @@ class CardLinkBlockMixin(blocks.StructBlock):
class CardLinkWithHeadlineBlockMixin(blocks.StructBlock):
headline = blocks.CharBlock(label="Titulek bloku", required=False)
card_items = blocks.ListBlock(CardLinkBlockMixin(), label="Karty odkazu")
card_items = blocks.ListBlock(CardLinkBlockMixin(), label="Karty s odkazy")
class Meta:
# template = ""
......
from wagtail.blocks import (
CharBlock,
ListBlock,
PageChooserBlock,
StructBlock,
URLBlock,
)
class PersonUrlBlock(StructBlock):
title = CharBlock(label="Název", required=True)
url = URLBlock(label="URL", required=True)
custom_icon = CharBlock(
label="Vlastní ikonka ze styleguide",
required=False,
help_text="Pro vlastní ikonku zadejde název ikonky z https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons (bez tečky), např. 'ico--beer'",
)
class PersonCustomPositionBlock(StructBlock):
position = CharBlock(label="Název pozice", required=False)
person = PageChooserBlock(
label="Osoba",
page_type=["uniweb.UniwebPersonPage"],
)
class Meta:
icon = "user"
label = "Osoba s volitelnou pozicí"
class PeopleGroupListBlock(StructBlock):
group_title = CharBlock(label="Titulek", required=True)
person_list = ListBlock(
PersonCustomPositionBlock(),
label="List osob",
)
class Meta:
template = "uniweb/blocks/people_group_block.html"
icon = "list-ul"
label = "Skupina členů"
# Generated by Django 4.1.6 on 2023-03-09 23:46
from django.db import migrations, models
import django.db.models.deletion
import shared.models
import wagtail.blocks
import wagtail.fields
import wagtailmetadata.models
class Migration(migrations.Migration):
dependencies = [
('wagtailcore', '0083_workflowcontenttype'),
('wagtailimages', '0025_alter_image_file_alter_rendition_file'),
('uniweb', '0037_alter_uniwebflexiblepage_content_and_more'),
]
operations = [
migrations.CreateModel(
name='UniwebPersonPage',
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')),
('job', models.CharField(blank=True, help_text="Např. 'Informatik'", max_length=128, null=True, verbose_name='Povolání')),
('job_function', models.CharField(blank=True, help_text="Např. 'Předseda'", max_length=128, null=True, verbose_name='Funkce')),
('text', wagtail.fields.RichTextField(blank=True, verbose_name='text')),
('email', models.EmailField(blank=True, max_length=254, null=True, verbose_name='Email')),
('show_email', models.BooleanField(default=True, verbose_name='Zobrazovat email na stránce?')),
('phone', models.CharField(blank=True, max_length=16, null=True, verbose_name='Telefon')),
('city', models.CharField(blank=True, max_length=64, null=True, verbose_name='Město/obec')),
('age', models.IntegerField(blank=True, null=True, verbose_name='Věk')),
('is_pirate', models.BooleanField(default=True, verbose_name='Je členem Pirátské strany?')),
('other_party', models.CharField(blank=True, help_text='Vyplňte pokud osoba není Pirát', max_length=64, null=True, verbose_name='Strana')),
('facebook_url', models.URLField(blank=True, null=True, verbose_name='Odkaz na Facebook')),
('instagram_url', models.URLField(blank=True, null=True, verbose_name='Odkaz na Instagram')),
('twitter_url', models.URLField(blank=True, null=True, verbose_name='Odkaz na Twitter')),
('youtube_url', models.URLField(blank=True, null=True, verbose_name='Odkaz na Youtube kanál')),
('flickr_url', models.URLField(blank=True, null=True, verbose_name='Odkaz na Flickr')),
('custom_web_url', models.URLField(blank=True, null=True, verbose_name='Odkaz na vlastní web')),
('other_urls', wagtail.fields.StreamField([('other_url', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Název', required=True)), ('url', wagtail.blocks.URLBlock(label='URL', required=True)), ('custom_icon', wagtail.blocks.CharBlock(help_text="Pro vlastní ikonku zadejde název ikonky z https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons (bez tečky), např. 'ico--beer'", label='Vlastní ikonka ze styleguide', required=False))]))], blank=True, use_json_field=True, verbose_name='Další odkaz')),
('background_photo', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='wagtailimages.image', verbose_name='obrázek do záhlaví')),
('other_party_logo', models.ForeignKey(blank=True, help_text='Vyplňte pokud osoba není Pirát', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='wagtailimages.image', verbose_name='Logo strany')),
('profile_photo', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='wagtailimages.image', verbose_name='profilová fotka')),
('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': 'Detail osoby',
'ordering': ('title',),
},
bases=(shared.models.SubpageMixin, wagtailmetadata.models.WagtailImageMetadataMixin, 'wagtailcore.page', models.Model),
),
migrations.CreateModel(
name='UniwebPeoplePage',
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')),
('content', wagtail.fields.StreamField([('text', wagtail.blocks.RichTextBlock(features=['h2', 'h3', 'h4', 'h5', 'bold', 'italic', 'ol', 'ul', 'hr', 'link', 'document-link', 'image', 'superscript', 'subscript', 'strikethrough', 'blockquote', 'embed'], label='Textový editor')), ('people_group', wagtail.blocks.StructBlock([('group_title', wagtail.blocks.CharBlock(label='Titulek', required=True)), ('person_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('position', wagtail.blocks.CharBlock(label='Název pozice', required=False)), ('person', wagtail.blocks.PageChooserBlock(label='Osoba', page_type=['uniweb.UniwebPersonPage']))]), label='List osob'))]))], blank=True, use_json_field=True, verbose_name='Obsah stránky')),
('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': 'Lidé',
},
bases=(shared.models.SubpageMixin, wagtailmetadata.models.WagtailImageMetadataMixin, 'wagtailcore.page', models.Model),
),
]
# Generated by Django 4.1.6 on 2023-03-13 09:58
from django.db import migrations
import wagtail.blocks
import wagtail.fields
class Migration(migrations.Migration):
dependencies = [
('uniweb', '0038_uniwebpersonpage_uniwebpeoplepage'),
]
operations = [
migrations.AlterField(
model_name='uniwebhomepage',
name='top_menu',
field=wagtail.fields.StreamField([('item', wagtail.blocks.StructBlock([('name', wagtail.blocks.CharBlock(label='název')), ('page', wagtail.blocks.PageChooserBlock(label='stránka', page_type=['uniweb.UniwebHomePage', 'uniweb.UniwebFlexiblePage', 'uniweb.UniwebArticlesIndexPage', 'uniweb.UniwebFormPage', 'uniweb.UniwebPeoplePage', 'uniweb.UniwebPersonPage']))]))], blank=True, use_json_field=True, verbose_name='horní menu'),
),
]
......@@ -17,13 +17,14 @@ from wagtail.admin.panels import (
from wagtail.contrib.forms.models import AbstractForm, AbstractFormField
from wagtail.contrib.forms.panels import FormSubmissionsPanel
from wagtail.contrib.table_block.blocks import TableBlock
from wagtail.fields import StreamField
from wagtail.fields import RichTextField, StreamField
from wagtail.images.blocks import ImageChooserBlock
from wagtail.models import Page
from wagtailmetadata.models import MetadataPageMixin
from calendar_utils.models import CalendarMixin
from shared.blocks import ChartBlock
from shared.const import RICH_TEXT_DEFAULT_FEATURES
from shared.models import (
ArticleMixin,
ExtendedMetadataHomePageMixin,
......@@ -33,6 +34,11 @@ from shared.models import (
from shared.utils import make_promote_panels
from tuning import admin_help
from .blocks import (
PersonCustomPositionBlock,
PeopleGroupListBlock,
PersonUrlBlock,
)
from .constants import (
ALIGN_CHOICES,
ALIGN_CSS,
......@@ -196,6 +202,8 @@ class MenuItemBlock(blocks.StructBlock):
"uniweb.UniwebFlexiblePage",
"uniweb.UniwebArticlesIndexPage",
"uniweb.UniwebFormPage",
"uniweb.UniwebPeoplePage",
"uniweb.UniwebPersonPage",
],
)
......@@ -381,6 +389,7 @@ class UniwebHomePage(
"uniweb.UniwebFlexiblePage",
"uniweb.UniwebArticlesIndexPage",
"uniweb.UniwebFormPage",
"uniweb.UniwebPeoplePage",
]
### OTHERS
......@@ -580,3 +589,204 @@ class UniwebFormPage(
form = super().get_form_class()
form.base_fields["captcha"] = CaptchaField(label="opište písmena z obrázku")
return form
# Don't waste time making a new mixin for this,
# we'll be doing Octopus imports within a short while.
class UniwebPersonPage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS
job = models.CharField(
"Povolání",
max_length=128,
blank=True,
null=True,
help_text="Např. 'Informatik'",
)
job_function = models.CharField(
"Funkce", max_length=128, blank=True, null=True, help_text="Např. 'Předseda'"
)
background_photo = models.ForeignKey(
"wagtailimages.Image",
on_delete=models.PROTECT,
blank=True,
null=True,
related_name="+",
verbose_name="obrázek do záhlaví",
)
profile_photo = models.ForeignKey(
"wagtailimages.Image",
on_delete=models.PROTECT,
blank=True,
null=True,
related_name="+",
verbose_name="profilová fotka",
)
text = RichTextField("text", blank=True, features=RICH_TEXT_DEFAULT_FEATURES)
email = models.EmailField("Email", null=True, blank=True)
show_email = models.BooleanField("Zobrazovat email na stránce?", default=True)
phone = models.CharField("Telefon", max_length=16, blank=True, null=True)
city = models.CharField("Město/obec", max_length=64, blank=True, null=True)
age = models.IntegerField("Věk", blank=True, null=True)
is_pirate = models.BooleanField("Je členem Pirátské strany?", default=True)
other_party = models.CharField(
"Strana",
max_length=64,
blank=True,
null=True,
help_text="Vyplňte pokud osoba není Pirát",
)
other_party_logo = models.ForeignKey(
"wagtailimages.Image",
on_delete=models.PROTECT,
blank=True,
null=True,
related_name="+",
verbose_name="Logo strany",
help_text="Vyplňte pokud osoba není Pirát",
)
facebook_url = models.URLField("Odkaz na Facebook", blank=True, null=True)
instagram_url = models.URLField("Odkaz na Instagram", blank=True, null=True)
twitter_url = models.URLField("Odkaz na Twitter", blank=True, null=True)
youtube_url = models.URLField("Odkaz na Youtube kanál", blank=True, null=True)
flickr_url = models.URLField("Odkaz na Flickr", blank=True, null=True)
custom_web_url = models.URLField("Odkaz na vlastní web", blank=True, null=True)
other_urls = StreamField(
[("other_url", PersonUrlBlock())],
verbose_name="Další odkaz",
blank=True,
use_json_field=True,
)
### PANELS
content_panels = Page.content_panels + [
MultiFieldPanel(
[
FieldPanel("job"),
FieldPanel("job_function"),
],
"Základní údaje",
),
MultiFieldPanel(
[
FieldPanel("profile_photo"),
FieldPanel("background_photo"),
],
"Fotky",
),
FieldPanel("text"),
MultiFieldPanel(
[
FieldPanel("email"),
FieldPanel("show_email"),
FieldPanel("phone"),
FieldPanel("city"),
FieldPanel("age"),
FieldPanel("is_pirate"),
FieldPanel("other_party"),
FieldPanel("other_party_logo"),
],
"Kontaktní informace",
),
MultiFieldPanel(
[
FieldPanel("facebook_url"),
FieldPanel("instagram_url"),
FieldPanel("twitter_url"),
FieldPanel("youtube_url"),
FieldPanel("flickr_url"),
FieldPanel("custom_web_url"),
FieldPanel("other_urls"),
],
"Sociální sítě",
),
]
settings_panels = []
### RELATIONS
parent_page_types = ["uniweb.UniwebPeoplePage"]
subpage_types = []
### OTHERS
class Meta:
verbose_name = "Detail osoby"
ordering = ("title",)
def get_background_photo(self):
"""
Vrací background_photo pro pozadí na stránce, pokud není nastaveno,
vezme falbback z homepage
"""
return (
self.background_photo
if self.background_photo
else self.root_page.fallback_image
)
def get_context(self, request):
context = super().get_context(request)
# Na strance detailu cloveka se vpravo zobrazuji 3 dalsi nahodne profily
context["random_people"] = list(
self.get_siblings(inclusive=False).live().specific()
)
random.shuffle(context["random_people"])
context["random_people"] = context["random_people"][:3]
return context
def get_meta_image(self):
return self.search_image or self.profile_photo
def get_meta_description(self):
if self.search_description:
return self.search_description
if self.text:
return trim_to_length(strip_all_html_tags(self.text))
return None
class UniwebPeoplePage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
### FIELDS
content = StreamField(
[
(
"text",
blocks.RichTextBlock(
label="Textový editor", features=RICH_TEXT_DEFAULT_FEATURES
),
),
("people_group", PeopleGroupListBlock()),
],
verbose_name="Obsah stránky",
blank=True,
use_json_field=True,
)
### PANELS
content_panels = Page.content_panels + [FieldPanel("content")]
promote_panels = make_promote_panels()
settings_panels = []
### RELATIONS
parent_page_types = ["uniweb.UniwebHomePage"]
subpage_types = ["uniweb.UniwebPersonPage"]
### OTHERS
class Meta:
verbose_name = "Lidé"
<section>
<h2 class="head-heavy-base mb-4">
{{ self.group_title }}
</h2>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 row-gap-8 col-gap-8">
{% for person_details in self.person_list %}
{% with person_details.person as person_page %}
{% include "shared/person_badge_snippet.html" with title=person_details.position|default:person_page.job_function %}
{% endwith %}
{% endfor %}
</div>
</section>
{% extends "uniweb/base.html" %}
{% load wagtailcore_tags wagtailimages_tags shared_filters %}
{% block content %}
<header>
<h1 itemprop="headline" class="head-alt-md md:head-alt-lg max-w-5xl mb-8">
{{ page.title }}
</h1>
</header>
{% for block in page.content %}
{% include_block block %}
{% if not forloop.last %}
<hr class="hr--big">
{% endif %}
{% endfor %}
{% endblock %}
{% extends "uniweb/base.html" %}
{% load static wagtailcore_tags wagtailimages_tags shared_filters %}
{% block subheader %}
{% image page.get_background_photo fill-1920x500-c75 jpegquality-80 as bg_img %}
<header class="hero hero--image pt-16 pb-24 lg:pt-32 pb-24" style="--image-url: url({{ bg_img.full_url }})">
<div class="container container--default text-center lg:text-left">
<h1 class="head-alt-lg md:head-alt-xl text-shadow-lg max-w-2xl">
{{ page.title }}
</h1>
<h2 class="head-xs text-shadow-lg mt-2 max-w-xl">
{{ page.job | default_if_none:"" }}
</h2>
</div>
</header>
{% endblock %}
{% block container_spacing %}py-8 lg:pb-16{% endblock %}
{% block content %}
<div class="flex flex-col lg:flex-row lg:space-x-8 xl:space-x-16">
<section class="lg:w-3/5 xl:w-2/3">
<div class="content-block w-full">
{{ page.text|richtext }}
</div>
</section>
<section class="lg:w-2/5 xl:w-1/3 pt-8 lg:pt-0 order-first lg:order-last candidate-detail__sidebar">
<div class="container-padding--zero lg:card lg:elevation-10 lg:container-padding--auto">
<div class="card__body p-4 lg:p-8">
<div class="text-center mb-8">
<div class="avatar avatar--2xl lg:avatar--3xl avatar--bordered candidate-detail__avatar">
{% if page.profile_photo %}
{% image page.profile_photo fill-208x208 as profile_img %}
{% image page.profile_photo fill-416x416 as profile_img_2x %}
<img src="{{ profile_img.url }}" srcset="{{ profile_img.url }}, {{ profile_img_2x.url }} 2x" alt="{{ page.profile_photo }}">
{% else %}
<img src="{% static "shared/img/unknown_pirate_416x416.jpg" %}" alt="{{ person_page.title }}"/>
{% endif%}
</div>
</div>
{% if page.facebook_url or page.instagram_url or page.twitter_url or page.youtube_url or page.flickr_url or page.custom_web_url or page.other_urls %}
<div class="social-icon-group space-x-2 text-lg">
{% if page.facebook_url %}
<a href="{{ page.facebook_url }}" target="_blank" class="social-icon" rel="noreferrer noopener">
<i class="ico--facebook"></i>
</a>
{% endif %}
{% if page.instagram_url %}
<a href="{{ page.instagram_url }}" target="_blank" class="social-icon" rel="noreferrer noopener">
<i class="ico--instagram"></i></a>
{% endif %}
{% if page.twitter_url %}
<a href="{{ page.twitter_url }}" target="_blank" class="social-icon" rel="noreferrer noopener">
<i class="ico--twitter"></i>
</a>
{% endif %}
{% if page.youtube_url %}
<a href="{{ page.youtube_url }}" target="_blank" class="social-icon" rel="noreferrer noopener">
<i class="ico--youtube"></i>
</a>
{% endif %}
{% if page.flickr_url %}
<a href="{{ page.flickr_url }}" target="_blank" class="social-icon" rel="noreferrer noopener">
<i class="ico--flickr"></i>
</a>
{% endif %}
{% if page.custom_web_url %}
<a href="{{ page.custom_web_url }}" target="_blank" class="social-icon" rel="noreferrer noopener">
<i class="ico--globe"></i>
</a>
{% endif %}
{% for person_link_block in page.other_urls %}
<a
href="{{ person_link_block.value.url }}"
target="_blank"
class="social-icon"
rel="noreferrer noopener"
title="{{ person_link_block.value.title }}"
>
<i class="{% firstof person_link_block.value.custom_icon 'ico--globe' %}"></i>
</a>
{% endfor %}
</div>
{% endif %}
{% if page.is_pirate %}
<hr>
<div class="flex items-center">
<div class="avatar w-6 mr-2">
<img src="{% static "elections2021/images/logo-pirati-21px.svg" %}">
</div>
<span class="font-bold font-condensed">Pirátská strana</span>
</div>
{% endif %}
{% if not page.is_pirate and page.other_party %}
<hr>
<div class="flex items-center">
{% if page.other_party_logo %}
{% image page.other_party_logo width-48 as logo_img %}
<div class="avatar w-6 mr-2">
<img src="{{ logo_img.url }}" alt="{{ page.other_party }}">
</div>
{% endif %}
<span class="font-bold font-condensed">{{ page.other_party }}</span>
</div>
{% endif %}
{% if page.phone or page.email and page.show_email %}
<hr>
<div class="content-block">
<div class="space-y-4">
{% if page.phone %}
<div>
<h4>Telefon</h4>
<a href="tel:{{ page.phone }}" class="contact-line icon-link content-block--nostyle">
<i class="ico--phone"></i><span>{{ page.phone }}</span>
</a>
</div>
{% endif %}
{% if page.email and page.show_email %}
<div>
<h4>Email</h4>
<a href="mailto:{{ page.email }}" class="contact-line icon-link content-block--nostyle">
<i class="ico--envelope"></i><span>{{ page.email }}</span>
</a>
</div>
{% endif %}
</div>
</div>
{% endif %}
{% if random_people %}
<hr>
<div class="content-block">
<h2>Lidé</h2>
<div class="space-y-4 mt-4">
{% for person in random_people %}
{% include "shared/person_badge_snippet.html" with person_page=person skipcontacts=1 %}
{% endfor %}
</div>
<a href="{{ page.root_page.people_page.url }}"
class="btn btn--icon btn--violet-500 btn--fullwidth btn--hoveractive pt-4">
<div class="btn__body-wrap">
<div class="btn__body ">Poznejte celý náš tým</div>
<div class="btn__icon ">
<i class="ico--chevron-right"></i>
</div>
</div>
</a>
</div>
{% endif %}
{% comment %} <hr> {% endcomment %}
{# <h2>Kancelář</h2>#}
{# <h4>Poslanecká sněmovna</h4>#}
{# <p>#}
{# Jiřího náměstí 39, 290 33 Poděbrady#}
{# </p>#}
{# <iframe#}
{# src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d82007.99920528589!2d15.688131074078123!3d50.034780639742856!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x470dc94b239307b5%3A0x12d59894ccf624ae!2sPardubice!5e0!3m2!1scs!2scz!4v1589382658695!5m2!1scs!2scz"#}
{# width="100%" height="300" id="mapa-mobile" frameborder="0" style="border:0;" allowfullscreen=""#}
{# aria-hidden="false" tabindex="0"></iframe>#}
{# <h4>Otevírací doba</h4>#}
{# <p>Pondělí 14:00 - 18:00 objednat se přes: kancelář-podebrady@pirati.cz nebo 778 111 462.</p>#}
<!-- Mobile divider -->
<hr class="block lg:hidden">
</div>
</div>
</section>
</div>
{% endblock %}