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
  • fix1
  • localwebs
  • master
  • pdp
  • seo1
  • target-groups
  • test
7 results
Show changes
Showing
with 1690 additions and 200 deletions
......@@ -33,53 +33,45 @@
{% if page.show_donate_form %}
<form id="js-donate-form" method="post">
{% csrf_token %}
<input type="hidden" name="portal_project_id" value="{{ page.portal_project_id }}">
<div class="form-group row mb-2 align-items-center">
<legend class="col-form-label col-md-12 col-form-label-lg">Částka</legend>
<legend class="col-form-label col-md-12 col-form-label-lg">Typ příspěvku</legend>
<div class="col-md-12">
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount1" name="amount" value="100" class="custom-control-input" checked>
<label class="custom-control-label col-form-label-lg" for="amount1">100 Kč</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount2" name="amount" value="200" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="amount2">200 Kč</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount3" name="amount" value="500" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="amount3">500 Kč</label>
<input type="radio" id="periodicity1" name="periodicity" value="730" class="custom-control-input" checked>
<label class="custom-control-label col-form-label-lg" for="periodicity1">Měsíční</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount4" name="amount" value="-1" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="amount4">Jiná částka</label>
<input type="radio" id="periodicity2" name="periodicity" value="99999" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="periodicity2">Jednorázový</label>
</div>
</div>
</div>
<div class="form-group row mb-2 align-items-center" id="js-custom-amount-input" style="display: none;">
<div class="form-group row mb-4 align-items-center">
<legend class="col-form-label col-md-12 col-form-label-lg">Částka</legend>
<div class="col-md-12">
<div class="input-group input-group-lg mb-3 custom-amount">
<input type="number" class="form-control" id="customamount" name="custom_amount" placeholder="1000" aria-describedby="customamount-currency">
<div class="input-group-append">
<span class="input-group-text" id="customamount-currency"></span>
<div id="monthlyAmounts" data-default-selected="{{ page.form_monthly_preselected }}">
{% include "donate/form_monthly_amounts_snippet.html" %}
</div>
<div id="oneTimeAmounts" style="display: None"
data-default-selected="{{ page.form_preselected }}">
{% include "donate/form_amounts_snippet.html" %}
</div>
</div>
</div>
<div class="form-group row mb-4 align-items-center">
<legend class="col-form-label col-md-12 col-form-label-lg">Typ příspěvku</legend>
<div class="form-group row mb-2 align-items-center" id="js-custom-amount-input">
<div class="col-md-12">
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="periodicity1" name="periodicity" value="730" class="custom-control-input" checked>
<label class="custom-control-label col-form-label-lg" for="periodicity1">Měsíční</label>
<div class="input-group input-group-lg mb-3 custom-amount">
<input type="number" class="form-control" id="customamount" placeholder="Jiná částka" name="custom_amount" aria-describedby="customamount-currency">
<div class="input-group-append">
<span class="input-group-text" id="customamount-currency"></span>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="periodicity2" name="periodicity" value="99999" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="periodicity2">Jednorázový</label>
</div>
</div>
</div>
<div class="form-group row mb-0">
<div class="col-12">
<button type="submit" class="btn btn-success btn-lg">Darovat</button>
<button type="submit" class="btn btn-danger btn-lg">Darovat</button>
</div>
</div>
</form>
......@@ -88,21 +80,6 @@
</div><!-- /project-donate-form__right -->
</div>
<div class="article__sharing-box">
<div class="card-body">
<div class="sharing-box__content">
<div class="icon"><i class="icon-heart"></i></div>
<div class="text"><h3 class="lead">Sdílení je aktem lásky</h3></div>
</div>
<div class="sharing-buttons">
<a href="https://www.facebook.com/sharer/sharer.php?u={{ page.full_url }}" target="_blank" class="btn btn-facebook"><i class="icon-facebook-f"></i></a>
<a href="https://twitter.com/intent/tweet?text=Podpoř projekt {{ page.title }}&url={{ page.full_url }}" target="_blank" class="btn btn-twitter"><i class="icon-twitter"></i></a>
<a href="https://www.linkedin.com/sharing/share-offsite/?url={{ page.full_url }}" target="_blank" class="btn btn-linkedin"><i class="icon-linkedin"></i></a>
</div>
</div>
<div class="image"><img data-src="{% static "donate/img/vlajka.jpg" %}" class="img-fluid lazyload" alt="Vlajka pirátů"></div>
</div><!-- /article__sharing-box -->
</div><!-- /column -->
</div> <!-- /row -->
</div> <!-- /container -->
......
......@@ -7,7 +7,7 @@
<section class="section--primary">
<div class="container">
<h1 class="lead homepage-heading mb-4">{{ page.title }}</h1>
<h1 class="lead homepage-heading mb-4">{{ page.heading }}</h1>
<div class="row projects mb-4">
{% for project in projects %}
......@@ -18,20 +18,31 @@
</div> <!-- /row -->
{% comment %} {# TODO #}
<nav aria-label="Stránkování projektů">
{% if projects.paginator.num_pages > 1 %}
<nav aria-label="Stránkování aktualit">
<ul class="pagination justify-content-center">
{% if projects.has_previous %}
<li class="page-item"><a class="page-link" href="?page={{ projects.previous_page_number }}">Předchozí</a></li>
{% endif %}
{% for page_num in projects.paginator.page_range %}
{% if page_num == projects.number %}
<li class="page-item active">
<a class="page-link" href="#">1 <span class="sr-only">(current)</span></a>
</li>
<li class="page-item"><a class="page-link" href="#">2</a></li>
<li class="page-item"><a class="page-link" href="#">3</a></li>
<li class="page-item">
<a class="page-link" href="#">Další</a>
<a class="page-link" href="#">{{ page_num }} <span class="sr-only">(current)</span></a>
</li>
{% else %}
<li class="page-item"><a class="page-link" href="?page={{ page_num }}">{{ page_num }}</a></li>
{% endif %}
{% endfor %}
{% if projects.has_next %}
<li class="page-item"><a class="page-link" href="?page={{ projects.next_page_number }}">Další</a></li>
{% endif %}
</ul>
</nav>
{% endcomment %}
{% endif %}
</div> <!-- /container -->
</section>
......
{% extends "donate/base.html" %}
{% load static wagtailcore_tags wagtailimages_tags %}
{% load static wagtailcore_tags wagtailimages_tags humanize %}
{% block content %}
......@@ -12,7 +12,11 @@
<div class="row align-items-center">
<div class="col-12 col-md-6 mb-3 mb-md-0">
{% if page.until %}
<p class="project__date">běží od {{ page.date|date:"j.n.Y" }} do {{ page.until|date:"j.n.Y" }}</p>
{% else %}
<p class="project__date">běží od {{ page.date|date:"j.n.Y" }}</p>
{% endif %}
</div><!-- /column -->
<div class="col-12 col-md-6 text-md-right">
<div class="project__badges">
......@@ -29,14 +33,15 @@
<section class="section--primary">
<div class="container">
<div class="row">
<div class="col-12 col-lg-8 col-xl-7 mb-4 mb-lg-0 richtext">
<div class="col-12 col-lg-8 col-xl-7 mb-4 mb-lg-0 order-2 order-lg-1 richtext">
{% if page.gallery %}
<div class="row project-images mb-3">
{% for block in page.gallery %}
{% image block.value width-2000 as img %}
{% image block.value fill-150x100 as thumb %}
<div class="col-6 col-md-3">
{% image block.value max-150x100 as thumb %}
<div>
<a data-fancybox="gallery" href="{{ img.url }}"><img data-src="{{ thumb.url }}" class="lazyload img-fluid" alt="{{ img.alt }}"></a>
</div><!-- /column -->
{% endfor %}
......@@ -47,77 +52,91 @@
</div><!-- /column -->
<div class="col-12 col-lg-4 offset-xl-1"><!-- /column -->
<div class="project-donate-form mb-4">
<div class="col-12 col-lg-4 offset-xl-1 order-1 order-lg-2">
<div class="sticky-top mb-5">
<div class="project-donate-form mb-5">
<div class="project-donate-form__left">
<div class="project-donate-form__left-content">
<h2 class="lead mb-0">Podpoř projekt</h2>
<h2 class="lead mb-0">{{ page.form_title }}</h2>
</div><!-- /project-donate-form__left-content -->
</div><!-- /project-donate-form__left -->
<div class="project-donate-form__right">
{% comment %} {# TODO #}
<h5>Vybráno <strong>4 963 Kč</strong> z <strong>250 000 Kč</strong></h5>
{% if page.expected_amount %}
<h5>
Vybráno <strong>{{ page.get_donated_amount|intcomma }}&nbsp;</strong>
z <strong>{{ page.expected_amount|intcomma }}&nbsp;</strong>
</h5>
<div class="progress">
<div class="progress-bar" role="progressbar" style="width: 25%" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
<div class="progress-bar" role="progressbar" style="width: {{ page.donated_percentage }}%" aria-valuenow="{{ page.donated_percentage }}" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<hr>
{% comment %}
<h5><strong>24 lidí</strong> přispělo</h5>
<h5><strong>40 dní</strong> do konce</h5>
<hr>
{% endcomment %}
{% else %}
<h5>Zatím vybráno <strong>{{ page.get_donated_amount|intcomma }}&nbsp;</strong></h5>
{% endif %}
{% if page.show_donate_form %}
<form id="js-donate-form" method="post">
{% csrf_token %}
<input type="hidden" name="portal_project_id" value="{{ page.portal_project_id }}">
{% if page.allow_periodic_donations %}
<div class="form-group row mb-2 align-items-center">
<legend class="col-form-label col-md-12 col-form-label-lg">Částka</legend>
<legend class="col-form-label col-md-12 col-form-label-lg">Typ příspěvku</legend>
<div class="col-md-12">
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount1" name="amount" value="100" class="custom-control-input" checked>
<label class="custom-control-label col-form-label-lg" for="amount1">100 Kč</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount2" name="amount" value="200" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="amount2">200 Kč</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount3" name="amount" value="500" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="amount3">500 Kč</label>
<input type="radio" id="periodicity1" name="periodicity" value="730" class="custom-control-input" checked>
<label class="custom-control-label col-form-label-lg" for="periodicity1">Měsíční</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount4" name="amount" value="-1" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="amount4">Jiná částka</label>
<input type="radio" id="periodicity2" name="periodicity" value="99999" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="periodicity2">Jednorázový</label>
</div>
</div>
</div>
<div class="form-group row mb-2 align-items-center" id="js-custom-amount-input" style="display: none;">
{% else %}
<input type="hidden" name="periodicity" value="99999">
{% endif %}
<div class="form-group row mb-4 align-items-center">
<legend class="col-form-label col-md-12 col-form-label-lg">
{% if self.crowdfunding %}
Částka bez odměny
{% else %}
Částka
{% endif %}
</legend>
<div class="col-md-12">
<div class="input-group input-group-lg mb-3 custom-amount">
<input type="number" class="form-control" id="customamount" name="custom_amount" placeholder="1000" aria-describedby="customamount-currency">
<div class="input-group-append">
<span class="input-group-text" id="customamount-currency"></span>
{% if page.allow_periodic_donations %}
<div id="monthlyAmounts" data-default-selected="{{ page.form_monthly_preselected }}">
{% include "donate/form_monthly_amounts_snippet.html" %}
</div>
<div id="oneTimeAmounts" style="display: None"
data-default-selected="{{ page.form_preselected }}">
{% include "donate/form_amounts_snippet.html" %}
</div>
{% else %}
{% include "donate/form_amounts_snippet.html" with show_selected=True %}
{% endif %}
</div>
</div>
<div class="form-group row mb-4 align-items-center">
<legend class="col-form-label col-md-12 col-form-label-lg">Typ příspěvku</legend>
<div class="form-group row mb-2 align-items-center" id="js-custom-amount-input">
<div class="col-md-12">
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="periodicity1" name="periodicity" value="730" class="custom-control-input" checked>
<label class="custom-control-label col-form-label-lg" for="periodicity1">Měsíční</label>
<div class="input-group input-group-lg mb-3 custom-amount">
<input type="number" class="form-control" id="customamount" placeholder="Jiná částka" name="custom_amount" aria-describedby="customamount-currency">
<div class="input-group-append">
<span class="input-group-text" id="customamount-currency"></span>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="periodicity2" name="periodicity" value="99999" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="periodicity2">Jednorázový</label>
</div>
</div>
</div>
<div class="form-group row mb-0">
<div class="form-group row mb-0 mt-4">
<div class="col-12">
<button type="submit" class="btn btn-success btn-lg">Darovat</button>
<button type="submit" class="btn btn-danger btn-lg">Darovat</button>
</div>
</div>
</form>
......@@ -126,22 +145,12 @@
</div><!-- /project-donate-form__right -->
</div>
<div class="article__sharing-box">
<div class="card-body">
<div class="sharing-box__content">
<div class="icon"><i class="icon-heart"></i></div>
<div class="text"><h3 class="lead">Sdílení je aktem lásky</h3></div>
</div>
<div class="sharing-buttons">
<a href="https://www.facebook.com/sharer/sharer.php?u={{ page.full_url }}" target="_blank" class="btn btn-facebook"><i class="icon-facebook-f"></i></a>
<a href="https://twitter.com/intent/tweet?text=Podpoř projekt {{ page.title }}&url={{ page.full_url }}" target="_blank" class="btn btn-twitter"><i class="icon-twitter"></i></a>
<a href="https://www.linkedin.com/sharing/share-offsite/?url={{ page.full_url }}" target="_blank" class="btn btn-linkedin"><i class="icon-linkedin"></i></a>
</div>
{% for block in self.crowdfunding %}
{% include_block block %}
{% endfor %}
</div>
<div class="image"><img data-src="{% static "donate/img/vlajka.jpg" %}" class="img-fluid lazyload" alt="Vlajka pirátů"></div>
</div><!-- /article__sharing-box -->
</div><!-- /column -->
</div> <!-- /row -->
</div> <!-- /container -->
</section>
......
{% extends "donate/base.html" %}
{% load static wagtailcore_tags wagtailimages_tags humanize %}
{% block extra_head %}
<style>
.spec-link svg{height: 17px;}.spec-link:hover{text-decoration: underline;}.unordered-list {font-family: 'Roboto';font-weight: 200;}p {font-family: 'Roboto'!important;font-weight: 300;line-height: 1.5;}.ordered-list-colored li::marker{color:#adc90e}.project__header{background:#fbdd12}@media only screen and (min-width:800px){.project__header{background:linear-gradient(90deg,#adc90e 48px,#fbdd12 48px)}}.btn-danger{font-family:"Bebas Neue",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";background:#adc90f;text-transform:uppercase;border-color:#adc90f}.btn-danger:active,.btn-danger:focus,.btn-danger:hover{background-color:#8ea50c!important;border-color:#8ea50c!important}.project-donate-form__right-inner{padding:1.8rem;padding-bottom:0}.project-donate-form__right{padding:0;padding-bottom:1.8rem}.coalition-btn{width:100%;background:#adc90f;text-transform:uppercase;font-family:"Bebas Neue",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";line-height:1;font-size:2.8rem;color:#000;padding-top:1.5rem;padding-bottom:1.5rem;border-color:#adc90f}.coalition-btn:active,.coalition-btn:focus,.coalition-btn:hover{color:#000!important}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#adc90f;background-color:#adc90f}.navbar-dark{background:#000}.text-black{color:#000!important}.content-block .unordered-list-colored li::before,.unordered-list-colored li::before{color:#adc90e;width:8px;height:8px;background:#adc90e;top:4px;content:""!important}/*! CSS Used from: http://localhost:3000/css/styles.css?1620501902059 ; media=all */@media all{*,::after,::before{box-sizing:border-box}strong{font-weight:bolder}table{text-indent:0;border-color:inherit}::-moz-focus-inner{border-style:none;padding:0}:-moz-focusring{outline:1px dotted ButtonText}blockquote,figure,h1,h2,h3,h4,h5,p{margin:0}ol,ul{list-style:none;margin:0;padding:0}*,::after,::before{box-sizing:border-box;border-width:0;border-style:solid;border-color:currentColor}img{border-style:solid}table{border-collapse:collapse}h1,h2,h3,h4,h5{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}img{display:block;vertical-align:middle}img{max-width:100%;height:auto}.content-block figure,.figure{position:relative}.content-block figure img,.figure img{width:100%}.content-block figure figcaption,.figure figcaption{display:flex;align-items:flex-end;height:100%;font-size:.875rem;line-height:1.25;padding-top:1rem;padding-bottom:1rem;padding-left:1rem;padding-right:1rem;position:absolute;bottom:0;left:0;--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity));width:100%;z-index:10}.content-block figure figcaption:before,.figure figcaption:before{display:block;opacity:1;pointer-events:none;position:absolute;top:0;right:0;bottom:0;left:0;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms;transition-duration:.2s;content:"";z-index:-1;background:linear-gradient(to bottom,rgba(0,0,0,0) 40%,rgba(0,0,0,.8))}@media (min-width:576px){.content-block figure figcaption:before,.figure figcaption:before{background:linear-gradient(to bottom,rgba(0,0,0,0) 60%,rgba(0,0,0,.8))}}.content-block figure:focus figcaption:before,.content-block figure:hover figcaption:before,.figure:focus figcaption:before,.figure:hover figcaption:before{opacity:0}.content-block ol,.ordered-list{padding-left:1rem}.content-block ul,.unordered-list{display:grid;gap:1rem}.content-block ul li,.unordered-list li{list-style-type:none;position:relative;padding-left:1em}.content-block ul li:before,.unordered-list li:before{position:absolute;left:0;--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity));font-family:pirati-ui;content:"\e919";font-size:.6em;font-weight:600;margin-top:.6ex}.content-block ul{row-gap:0}.content-block ol,.ordered-list{list-style-type:decimal}.content-block .unordered-list-colored li,.unordered-list-colored li{padding-left:2rem}.content-block .unordered-list-colored li::before,.unordered-list-colored li::before{color:#adc90e}.content-block p{font-family:Roboto,Helvetica,Arial,sans-serif;font-weight:400;line-height:1.5}.content-block blockquote,.quote{--tw-border-opacity:1;border-color:rgba(0,0,0,var(--tw-border-opacity));border-left-width:2px;line-height:1.625;margin-left:1.5rem;padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-style:italic}.content-block blockquote,.quote{width:80%;max-width:60em}.quote-pirati-stan{--tw-border-opacity:1!important;border-color:rgba(173,201,14,var(--tw-border-opacity))!important;border-left-width:4px!important;margin-left:0!important;padding-left:1.25rem!important}.content-block table td,.content-block table thead td,.table td,.table thead td{padding-top:1rem;padding-bottom:1rem;padding-left:1.5rem;padding-right:1.5rem}.content-block table thead td,.table thead td{--tw-bg-opacity:1;background-color:rgba(0,0,0,var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.content-block table tr:nth-child(even) td,.table--striped tr:nth-child(even) td{--tw-bg-opacity:1;background-color:rgba(243,243,243,var(--tw-bg-opacity))}.content-block table thead td{--tw-border-opacity:1;border-color:rgba(48,49,50,var(--tw-border-opacity));border-width:1px}.content-block table td{--tw-border-opacity:1;border-color:rgba(240,240,240,var(--tw-border-opacity));border-width:1px}.content-block .table-head-lemon thead td,.table-head-lemon thead td{--tw-bg-opacity:1;background-color:rgba(251,221,9,var(--tw-bg-opacity));font-weight:700;--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}.content-block .table-head-center thead td,.table-head-center thead td{text-align:center}.content-block .table-more-padding td,.content-block .table-more-padding thead td,.table-more-padding td,.table-more-padding thead td{padding-top:2rem;padding-bottom:2rem;padding-left:2.75rem;padding-right:2.75rem}.content-block .table--unbordered,.table--unbordered{border-collapse:collapse;border-style:none}.content-block .table--unbordered thead td,.table--unbordered thead td{border-color:transparent;border-right-width:1px;border-left-width:1px;position:relative}.content-block .table--unbordered thead td::after,.table--unbordered thead td::after{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity));content:"";width:1px;height:50%;position:absolute;right:-1px;top:25%}.content-block .table--unbordered td,.table--unbordered td{border-color:transparent;border-right-width:1px;border-left-width:1px;position:relative}.content-block .table--unbordered td::after,.table--unbordered td::after{--tw-bg-opacity:1;background-color:rgba(240,240,240,var(--tw-bg-opacity));content:"";width:1px;height:50%;position:absolute;right:-1px;top:25%}.content-block .table--unbordered tr:nth-child(2n) td,.table--unbordered tr:nth-child(2n) td{--tw-bg-opacity:1;background-color:rgba(240,240,240,var(--tw-bg-opacity))}.content-block .table--unbordered tr:nth-child(2n) td::after,.table--unbordered tr:nth-child(2n) td::after{background-color:#f7f7f7}.content-block .table--unbordered td:last-child::after,.content-block .table--unbordered thead td:last-child::after,.table--unbordered td:last-child::after,.table--unbordered thead td:last-child::after{display:none}.content-block h1,.content-block h2,.content-block h3,.content-block h4{font-family:Roboto Condensed,Helvetica,Arial,sans-serif;font-weight:700;line-height:1.25}.content-block h5{font-family:Roboto Condensed,Helvetica,Arial,sans-serif;line-height:1.25;text-transform:uppercase}.content-block h1,.content-block h2,.content-block h3{margin-bottom:.4em}.content-block h2:not(:first-child),.content-block h3:not(:first-child){margin-top:.95em}.content-block h4,.content-block h5{margin-bottom:.3em}.content-block h4:not(:first-child),.content-block h5:not(:first-child){margin-top:.95em}.content-block h1{font-size:1.875rem}.content-block h2{font-size:1.6rem}.content-block h3{font-size:1.3rem}.content-block h4{font-size:1.125rem}.content-block h5{font-size:1rem}.content-block a:not(.contact-line):not(.content-block--nostyle){text-decoration:underline}.content-block ol,.content-block p,.content-block ul{line-height:1.5}.content-block p:not(:last-child){margin-bottom:1em}.content-block strong{font-weight:700}.content-block blockquote:not(:first-child),.content-block figure:not(:first-child),.content-block ol:not(:first-child),.content-block table:not(:first-child),.content-block ul:not(:first-child){margin-top:1em}.content-block blockquote:not(:last-child),.content-block figure:not(:last-child),.content-block ol:not(:last-child),.content-block table:not(:last-child),.content-block ul:not(:last-child){margin-bottom:1em}.bg-lemon{--tw-bg-opacity:1;background-color:rgba(251,221,9,var(--tw-bg-opacity))}.table{display:table}.max-w-2xl{max-width:42rem}*{--tw-shadow:0 0 #0000}*{--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000}.underline{text-decoration:underline}::-moz-selection{color:#000;background:#adc90e}::-moz-selection{color:#000;background:#adc90e}::selection{color:#000;background:#adc90e}a:hover{text-decoration:underline}}/*! CSS Used from: http://localhost:3000/styleguide/css/styleguide.min.css?1620501902059 ; media=all */@media all{*{-webkit-box-sizing:border-box;box-sizing:border-box}}/*! CSS Used fontfaces */@font-face{font-family:pirati-ui;src:url(http://localhost:3000/fonts/pirati-ui.eot?771b799f40ffd207e5b655696931496d);src:url(http://localhost:3000/fonts/pirati-ui.eot?771b799f40ffd207e5b655696931496d#iefix) format('embedded-opentype'),url(http://localhost:3000/fonts/pirati-ui.ttf?771b799f40ffd207e5b655696931496d) format('truetype'),url(http://localhost:3000/fonts/pirati-ui.woff?771b799f40ffd207e5b655696931496d) format('woff'),url(http://localhost:3000/fonts/pirati-ui.svg?771b799f40ffd207e5b655696931496d#pirati-ui) format('svg');font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Roboto;font-style:italic;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOjCnqEu92Fr1Mu51TjASc3CsTYl4BOQ3o.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:italic;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOjCnqEu92Fr1Mu51TjASc-CsTYl4BOQ3o.woff2) format('woff2');unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:italic;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOjCnqEu92Fr1Mu51TjASc2CsTYl4BOQ3o.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:italic;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOjCnqEu92Fr1Mu51TjASc5CsTYl4BOQ3o.woff2) format('woff2');unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:italic;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOjCnqEu92Fr1Mu51TjASc1CsTYl4BOQ3o.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:italic;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOjCnqEu92Fr1Mu51TjASc0CsTYl4BOQ3o.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:italic;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOjCnqEu92Fr1Mu51TjASc6CsTYl4BO.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto;font-style:italic;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOkCnqEu92Fr1Mu51xFIzIXKMnyrYk.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:italic;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOkCnqEu92Fr1Mu51xMIzIXKMnyrYk.woff2) format('woff2');unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:italic;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOkCnqEu92Fr1Mu51xEIzIXKMnyrYk.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:italic;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOkCnqEu92Fr1Mu51xLIzIXKMnyrYk.woff2) format('woff2');unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:italic;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOkCnqEu92Fr1Mu51xHIzIXKMnyrYk.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:italic;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOkCnqEu92Fr1Mu51xGIzIXKMnyrYk.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:italic;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOkCnqEu92Fr1Mu51xIIzIXKMny.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto;font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOmCnqEu92Fr1Mu72xKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOlCnqEu92Fr1MmWUlfCRc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOlCnqEu92Fr1MmWUlfABc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOlCnqEu92Fr1MmWUlfCBc4AMP6lbBP.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOlCnqEu92Fr1MmWUlfBxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOlCnqEu92Fr1MmWUlfCxc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOlCnqEu92Fr1MmWUlfChc4AMP6lbBP.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v27/KFOlCnqEu92Fr1MmWUlfBBc4AMP6lQ.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Roboto Condensed';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/robotocondensed/v19/ieVi2ZhZI2eCN5jzbjEETS9weq8-33mZGCkYb9lecyVC4A.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Roboto Condensed';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/robotocondensed/v19/ieVi2ZhZI2eCN5jzbjEETS9weq8-33mZGCAYb9lecyVC4A.woff2) format('woff2');unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Roboto Condensed';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/robotocondensed/v19/ieVi2ZhZI2eCN5jzbjEETS9weq8-33mZGCgYb9lecyVC4A.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Roboto Condensed';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/robotocondensed/v19/ieVi2ZhZI2eCN5jzbjEETS9weq8-33mZGCcYb9lecyVC4A.woff2) format('woff2');unicode-range:U+0370-03FF}@font-face{font-family:'Roboto Condensed';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/robotocondensed/v19/ieVi2ZhZI2eCN5jzbjEETS9weq8-33mZGCsYb9lecyVC4A.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Roboto Condensed';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/robotocondensed/v19/ieVi2ZhZI2eCN5jzbjEETS9weq8-33mZGCoYb9lecyVC4A.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Roboto Condensed';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/robotocondensed/v19/ieVi2ZhZI2eCN5jzbjEETS9weq8-33mZGCQYb9lecyU.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Roboto Condensed';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/robotocondensed/v19/ieVl2ZhZI2eCN5jzbjEETS9weq8-19-7DQk6YvNkeg.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Roboto Condensed';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/robotocondensed/v19/ieVl2ZhZI2eCN5jzbjEETS9weq8-19a7DQk6YvNkeg.woff2) format('woff2');unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Roboto Condensed';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/robotocondensed/v19/ieVl2ZhZI2eCN5jzbjEETS9weq8-1967DQk6YvNkeg.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Roboto Condensed';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/robotocondensed/v19/ieVl2ZhZI2eCN5jzbjEETS9weq8-19G7DQk6YvNkeg.woff2) format('woff2');unicode-range:U+0370-03FF}@font-face{font-family:'Roboto Condensed';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/robotocondensed/v19/ieVl2ZhZI2eCN5jzbjEETS9weq8-1927DQk6YvNkeg.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Roboto Condensed';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/robotocondensed/v19/ieVl2ZhZI2eCN5jzbjEETS9weq8-19y7DQk6YvNkeg.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Roboto Condensed';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/robotocondensed/v19/ieVl2ZhZI2eCN5jzbjEETS9weq8-19K7DQk6YvM.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Roboto Condensed';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/robotocondensed/v19/ieVi2ZhZI2eCN5jzbjEETS9weq8-32meGCkYb9lecyVC4A.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Roboto Condensed';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/robotocondensed/v19/ieVi2ZhZI2eCN5jzbjEETS9weq8-32meGCAYb9lecyVC4A.woff2) format('woff2');unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Roboto Condensed';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/robotocondensed/v19/ieVi2ZhZI2eCN5jzbjEETS9weq8-32meGCgYb9lecyVC4A.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Roboto Condensed';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/robotocondensed/v19/ieVi2ZhZI2eCN5jzbjEETS9weq8-32meGCcYb9lecyVC4A.woff2) format('woff2');unicode-range:U+0370-03FF}@font-face{font-family:'Roboto Condensed';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/robotocondensed/v19/ieVi2ZhZI2eCN5jzbjEETS9weq8-32meGCsYb9lecyVC4A.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Roboto Condensed';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/robotocondensed/v19/ieVi2ZhZI2eCN5jzbjEETS9weq8-32meGCoYb9lecyVC4A.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Roboto Condensed';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/robotocondensed/v19/ieVi2ZhZI2eCN5jzbjEETS9weq8-32meGCQYb9lecyU.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}/*! CSS Used from: http://localhost:3000/css/styles.css?1620501902059 ; media=all */@media all{*,::after,::before{box-sizing:border-box}::-moz-focus-inner{border-style:none;padding:0}:-moz-focusring{outline:1px dotted ButtonText}ul{list-style:none;margin:0;padding:0}*,::after,::before{box-sizing:border-box;border-width:0;border-style:solid;border-color:currentColor}a{color:inherit;text-decoration:inherit}.content-block ul,.unordered-list{display:grid;gap:1rem}.content-block ul li,.unordered-list li{list-style-type:none;position:relative;padding-left:1em}.content-block ul li:before,.unordered-list li:before{position:absolute;left:0;--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity));font-family:pirati-ui;content:"\e919";font-size:.6em;font-weight:600;margin-top:.6ex}.content-block ul{row-gap:0}.content-block .unordered-list-colored li,.unordered-list-colored li{padding-left:2rem}.content-block .unordered-list-colored li::before,.unordered-list-colored li::before{color:#adc90e}.content-block a:not(.contact-line):not(.content-block--nostyle){text-decoration:underline}.content-block ul{line-height:1.5}.content-block ul:not(:first-child){margin-top:1em}.content-block ul:not(:last-child){margin-bottom:1em}*{--tw-shadow:0 0 #0000}*{--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000}.underline{text-decoration:underline}::-moz-selection{color:#000;background:#adc90e}::-moz-selection{color:#000;background:#adc90e}::selection{color:#000;background:#adc90e}a:hover{text-decoration:underline}}/*! CSS Used from: http://localhost:3000/styleguide/css/styleguide.min.css?1620501902059 ; media=all */@media all{*{-webkit-box-sizing:border-box;box-sizing:border-box}}/*! CSS Used fontfaces */@font-face{font-family:pirati-ui;src:url(http://localhost:3000/fonts/pirati-ui.eot?771b799f40ffd207e5b655696931496d);src:url(http://localhost:3000/fonts/pirati-ui.eot?771b799f40ffd207e5b655696931496d#iefix) format('embedded-opentype'),url(http://localhost:3000/fonts/pirati-ui.ttf?771b799f40ffd207e5b655696931496d) format('truetype'),url(http://localhost:3000/fonts/pirati-ui.woff?771b799f40ffd207e5b655696931496d) format('woff'),url(http://localhost:3000/fonts/pirati-ui.svg?771b799f40ffd207e5b655696931496d#pirati-ui) format('svg');font-weight:400;font-style:normal;font-display:block}
</style>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w==" crossorigin="anonymous" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/js/all.min.js" integrity="sha512-RXf+QSDCUQs5uwRKaDoXt55jygZZm2V++WUZduaU/Ui/9EGp3f/2KZVahFZBKGH0s774sd3HmrhUy+SgOFQLVQ==" crossorigin="anonymous"></script>
{% endblock %}
{% block header %}
<nav class="navbar navbar-expand-xl navbar-dark py-4">
<div class="container">
<div class="brand-wrapper">
<a class="navbar-brand" href="http://www.piratiastarostove.cz">
<img src="{% static "elections2021/images/logo-koalicni.svg" %}" style="height: 64px!important;">
</a>
</div>
<button class="navbar-toggler collapsed" type="button" data-toggle="collapse" data-target="#mainNavigation" aria-controls="mainNavigation" aria-expanded="false" aria-label="Otevřít menu">
<span></span>
<span></span>
<span></span>
</button>
<div class="collapse navbar-collapse" id="mainNavigation">
<ul class="navbar-nav ml-auto mt-5 mt-lg-0">
<li class="nav-item">
<a class="nav-link spec-link" href="https://www.piratiastarostove.cz"><i class="fas fa-chevron-left"></i> zpět na web www.piratiastarostove.cz</a>
</li>
</ul>
</div>
</div>
</nav>
{% endblock %}
{% block content %}
<!-- CONTENT -->
<main role="main">
<section class="section--alternate project__header">
<div class="container">
<h1 class="lead heading pb-4">{{ page.title }}</h1>
</div>
</section>
<section class="section--primary">
<div class="container">
<div class="row">
<div class="col-12 col-lg-8 col-xl-7 mb-4 mb-lg-0 order-2 order-lg-1 richtext content-block">
{% if page.gallery %}
<div class="row project-images mb-3">
{% for block in page.gallery %}
{% image block.value width-2000 as img %}
{% image block.value max-150x100 as thumb %}
<div class="col-6 col-md-3">
<a data-fancybox="gallery" href="{{ img.url }}"><img data-src="{{ thumb.url }}" class="lazyload img-fluid" alt="{{ img.alt }}"></a>
</div><!-- /column -->
{% endfor %}
</div><!-- /row -->
{% endif %}
{{ page.body|richtext }}
</div><!-- /column -->
<div class="col-12 col-lg-4 offset-xl-1 order-1 order-lg-2">
<div class="sticky-top mb-5">
<div class="project-donate-form mb-5">
<div class="project-donate-form__left">
<div class="project-donate-form__left-content">
<h2 class="lead mb-0">{{ page.form_title }}</h2>
</div><!-- /project-donate-form__left-content -->
</div><!-- /project-donate-form__left -->
<div class="project-donate-form__right p-0">
{% if page.show_donate_form %}
<form id="js-donate-form" method="post">
<div class="project-donate-form__right-inner">
<h5>Zatím vybráno <strong>{{ page.get_donated_amount|intcomma }}&nbsp;</strong></h5>
{% csrf_token %}
<input type="hidden" name="portal_project_id" value="{{ page.portal_project_id }}">
{% if page.allow_periodic_donations %}
<div class="form-group row mb-2 align-items-center">
<legend class="col-form-label col-md-12 col-form-label-lg">Typ příspěvku</legend>
<div class="col-md-12">
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="periodicity1" name="periodicity" value="730" class="custom-control-input" checked>
<label class="custom-control-label col-form-label-lg" for="periodicity1">Měsíční</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="periodicity2" name="periodicity" value="99999" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="periodicity2">Jednorázový</label>
</div>
</div>
</div>
{% else %}
<input type="hidden" name="periodicity" value="99999">
{% endif %}
<div class="form-group row mb-4 align-items-center">
<legend class="col-form-label col-md-12 col-form-label-lg">Částka</legend>
<div class="col-md-12">
{% if page.allow_periodic_donations %}
<div id="monthlyAmounts" data-default-selected="{{ page.form_monthly_preselected }}">
{% include "donate/form_monthly_amounts_snippet.html" %}
</div>
<div id="oneTimeAmounts" style="display: None"
data-default-selected="{{ page.form_preselected }}">
{% include "donate/form_amounts_snippet.html" %}
</div>
{% else %}
{% include "donate/form_amounts_snippet.html" with show_selected=True %}
{% endif %}
</div>
</div>
<div class="form-group row mb-2 align-items-center" id="js-custom-amount-input">
<div class="col-md-12">
<div class="input-group input-group-lg mb-3 custom-amount">
<input type="number" class="form-control" id="customamount" placeholder="Jiná částka" name="custom_amount" aria-describedby="customamount-currency">
<div class="input-group-append">
<span class="input-group-text" id="customamount-currency"></span>
</div>
</div>
</div>
</div>
</div>
<div class="form-group row mb-0 mt-4">
<div class="col-12">
<button type="submit" class="btn btn-danger btn-lg w-100 coalition-btn">Darovat</button>
</div>
</div>
</form>
{% endif %}
</div>
</div>
</div><!-- /column -->
</div>
</div>
</section>
</main>
{% endblock %}
{% block footer %}
<footer id="kontakt">
<div class="footer__bottom">
<div class="container">
<div class="row">
<div class="col-12 col-md-6 mb-3 mb-md-0">
<p class="mb-0">
<span class="inline-block" style="transform: scale(-1, 1);">&copy;</span>
{% now "Y" %} Piráti a Starostové. <a href="https://wiki.pirati.cz/rules/prah#licence" target="_blank" class="underline">CC-BY-SA 4.0</a>.
<br>
Všechna práva vyhlazena. Sdílejte a nechte ostatní sdílet za stejných podmínek.
<br>
Zadavatel | zpracovatel: Česká pirátská strana
</p>
</div><!-- /column -->
<div class="col-12 col-md-6 text-md-right">
<p class="mb-0">Tento web využívá soubory cookies - <a href="/soubory-cookies/">více informací</a></p>
<p><a href="/osobni-udaje/">Zásady zpracování osobních údajů</a></p>
<p><a href="/obchodni-podminky/">Obchodní podmínky</a></p>
</div><!-- /column -->
</div><!-- /column -->
</div><!-- /row -->
</div><!-- /container -->
</div><!-- /footer_bottom -->
</footer>
{% endblock %}
......@@ -16,91 +16,81 @@
<div class="container">
<div class="row">
<div class="col-12 col-lg-7 mb-5 mb-lg-0 richtext">
{% if page.has_targeted_donations %}
<div class="col-12 d-lg-none">
{% include "donate/donate_targeted_donations_snippet.html" %}
</div>
{% endif %}
<div class="col-12 col-lg-7 mb-5 mb-lg-0 order-2 order-lg-1 richtext">
{% if page.has_targeted_donations %}
<div class="d-none d-lg-block">
{% include "donate/donate_targeted_donations_snippet.html" %}
</div>
{% endif %}
{{ page.body|richtext }}
</div><!-- /column -->
<div class="col-12 col-lg-5 col-xl-4 offset-xl-1"><!-- /column -->
<div class="region-donate-form mb-4">
<div class="col-12 col-lg-5 col-xl-4 offset-xl-1 order-1 order-lg-2"><!-- /column -->
<div class="sticky-top mb-5">
<div class="project-donate-form mb-4">
<div class="region-donate-form__left">
<div class="region-donate-form__left-content">
<div class="project-donate-form__left">
<div class="project-donate-form__left-content">
<h2 class="lead mb-0">Podpoř kraj</h2>
</div><!-- /region-donate-form__left-content -->
</div><!-- /region-donate-form__left -->
</div><!-- /project-donate-form__left-content -->
</div><!-- /project-donate-form__left -->
<div class="region-donate-form__right">
<div class="project-donate-form__right">
{% if page.show_donate_form %}
<form id="js-donate-form" method="post">
{% csrf_token %}
<input type="hidden" name="portal_project_id" value="{{ page.portal_project_id }}">
<div class="form-group row mb-2 align-items-center">
<legend class="col-form-label col-md-12 col-form-label-lg">Částka</legend>
<legend class="col-form-label col-md-12 col-form-label-lg">Typ příspěvku</legend>
<div class="col-md-12">
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount1" name="amount" value="100" class="custom-control-input" checked>
<label class="custom-control-label col-form-label-lg" for="amount1">100 Kč</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount2" name="amount" value="200" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="amount2">200 Kč</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount3" name="amount" value="500" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="amount3">500 Kč</label>
<input type="radio" id="periodicity1" name="periodicity" value="730" class="custom-control-input" checked>
<label class="custom-control-label col-form-label-lg" for="periodicity1">Měsíční</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount4" name="amount" value="-1" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="amount4">Jiná částka</label>
<input type="radio" id="periodicity2" name="periodicity" value="99999" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="periodicity2">Jednorázový</label>
</div>
</div>
</div>
<div class="form-group row mb-2 align-items-center" id="js-custom-amount-input" style="display: none;">
<div class="form-group row mb-4 align-items-center">
<legend class="col-form-label col-md-12 col-form-label-lg">Částka</legend>
<div class="col-md-12">
<div class="input-group input-group-lg mb-3 custom-amount">
<input type="number" class="form-control" id="customamount" name="custom_amount" placeholder="1000" aria-describedby="customamount-currency">
<div class="input-group-append">
<span class="input-group-text" id="customamount-currency"></span>
<div id="monthlyAmounts" data-default-selected="{{ page.form_monthly_preselected }}">
{% include "donate/form_monthly_amounts_snippet.html" %}
</div>
<div id="oneTimeAmounts" style="display: None"
data-default-selected="{{ page.form_preselected }}">
{% include "donate/form_amounts_snippet.html" %}
</div>
</div>
</div>
<div class="form-group row mb-4 align-items-center">
<legend class="col-form-label col-md-12 col-form-label-lg">Typ příspěvku</legend>
<div class="form-group row mb-2 align-items-center" id="js-custom-amount-input">
<div class="col-md-12">
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="periodicity1" name="periodicity" value="730" class="custom-control-input" checked>
<label class="custom-control-label col-form-label-lg" for="periodicity1">Měsíční</label>
<div class="input-group input-group-lg mb-3 custom-amount">
<input type="number" class="form-control" id="customamount" placeholder="Jiná částka" name="custom_amount" aria-describedby="customamount-currency">
<div class="input-group-append">
<span class="input-group-text" id="customamount-currency"></span>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="periodicity2" name="periodicity" value="99999" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="periodicity2">Jednorázový</label>
</div>
</div>
</div>
<div class="form-group row mb-0">
<div class="col-12">
<button type="submit" class="btn btn-success btn-lg">Darovat</button>
<button type="submit" class="btn btn-danger btn-lg">Darovat</button>
</div>
</div>
</form>
{% endif %}
</div><!-- /region-donate-form__right -->
</div>
<div class="article__sharing-box">
<div class="card-body">
<div class="sharing-box__content">
<div class="icon"><i class="icon-heart"></i></div>
<div class="text"><h3 class="lead">Sdílení je aktem lásky</h3></div>
</div>
<div class="sharing-buttons">
<a href="https://www.facebook.com/sharer/sharer.php?u={{ page.full_url }}" target="_blank" class="btn btn-facebook"><i class="icon-facebook-f"></i></a>
<a href="https://twitter.com/intent/tweet?text={{ page.main_title }}&url={{ page.full_url }}" target="_blank" class="btn btn-twitter"><i class="icon-twitter"></i></a>
<a href="https://www.linkedin.com/sharing/share-offsite/?url={{ page.full_url }}" target="_blank" class="btn btn-linkedin"><i class="icon-linkedin"></i></a>
</div><!-- /project-donate-form__right -->
</div>
</div>
<div class="image"><img data-src="{% static "donate/img/vlajka.jpg" %}" class="img-fluid lazyload" alt="Vlajka pirátů"></div>
</div><!-- /article__sharing-box -->
</div><!-- /column -->
</div> <!-- /row -->
......
{% extends "donate/base.html" %}
{% load wagtailcore_tags %}
{% block content %}
<!-- CONTENT -->
<main role="main">
<section class="section--alternate region__header">
<div class="container">
<h1 class="lead heading">{{ page.title }}</h1>
</div> <!-- /container -->
</section>
<section class="section--primary section--form">
<div class="container">
{% if main_targets or other_targets %}
<form id="js-donate-form" class="sharing-link" method="post">
{% csrf_token %}
<div class="form-group row mb-4 align-items-center">
<div class="col-12">
{% for target in main_targets %}
{% if target.portal_project_id %}
<div class="custom-control custom-radio my-3">
<input type="radio" id="main_target{{ forloop.counter }}" name="portal_project_id" value="{{ target.portal_project_id }}" class="custom-control-input target-radio"{% if forloop.first %} checked required{% endif %}>
<label class="custom-control-label col-form-label-lg" for="main_target{{ forloop.counter }}">{{ target.title }}<br> <span class="small">{{ target.description|default:"" }}</span></label>
</div>
{% endif %}
{% endfor %}
{% if other_targets %}
<div class="custom-control custom-radio my-3">
<input type="radio" id="other_target" name="portal_project_id" value="-1" class="custom-control-input target-radio"{% if not main_targets %} checked required{% endif %}>
<label class="custom-control-label col-form-label-lg custom-control-label-for-select" for="other_target">
Dar pro:
<select id="other_target_select" name="select_portal_project_id" class="custom-control-select">
<option value="">--- vybrat ---</option>
{% for target in other_targets %}
<option value="{{ target.portal_project_id }}">{{ target.title }}</option>
{% endfor %}
</select>
</label>
</div>
{% endif %}
</div>
</div>
<div class="form-group row mb-4 align-items-center">
<legend class="col-form-label col-md-3 col-form-label-lg">Typ příspěvku</legend>
<div class="col-md-9">
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="periodicity1" name="periodicity" value="730" class="custom-control-input" checked required>
<label class="custom-control-label col-form-label-lg" for="periodicity1">Měsíční</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="periodicity2" name="periodicity" value="99999" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="periodicity2">Jednorázový</label>
</div>
</div>
</div>
<div class="form-group row mb-4 align-items-center">
<legend class="col-form-label col-md-3 col-form-label-lg">Částka</legend>
<div class="col-md-9">
<div id="monthlyAmounts" data-default-selected="{{ page.form_monthly_preselected }}">
{% include "donate/form_monthly_amounts_snippet.html" %}
</div>
<div id="oneTimeAmounts" style="display: None"
data-default-selected="{{ page.form_preselected }}">
{% include "donate/form_amounts_snippet.html" %}
</div>
</div>
</div>
<div class="form-group row mb-0 align-items-center" id="js-custom-amount-input">
<div class="col-md-3 order-md-0 order-1">
<button type="submit" class="btn btn-danger btn-lg">Darovat</button>
</div>
<div class="col-md-3 mb-4 mb-md-0">
<div class="input-group input-group-lg mb-0 custom-amount">
<input type="number" class="form-control" id="customamount" placeholder="Jiná částka" name="custom_amount" aria-describedby="customamount-currency">
<div class="input-group-append">
<span class="input-group-text" id="customamount-currency"></span>
</div>
</div>
</div>
</div>
</form>
<div class="mt-5">
{% if is_preselected %}
<a href="{% pageurl page %}">ukaž všechny adresné dary pro kraj</a>
{% else %}
<a id="target_sharing_link" href="{% pageurl page %}?p={{ initial_project_id }}">odkaz pro sdílení vybraného účelu</a>
{% endif %}
</div>
{% else %}
<div class="row mb-4">
<p>Krajské sdružení momentálně nepřijímá adresné dary. Místo toho <a href="{% pageurl page.get_parent %}">podpořte celý kraj!</a></p>
</div>
{% endif %}
</div> <!-- /container -->
</section>
</main>
<!-- /CONTENT -->
{% endblock %}
<div class="mb-5">
<a href="{{ page.targeted_donations_page_url }}" class="btn btn-dark btn-lg my-2">Adresné dary pro kraj <i class="icon-chevron-right ml-2"></i></a>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount1" name="amount" value="{{ page.form_amount_1 }}" class="custom-control-input"{% if show_selected and page.form_preselected == page.FIRST %} checked{% endif %}>
<label class="custom-control-label col-form-label-lg" for="amount1">{{ page.form_amount_1 }} Kč</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount2" name="amount" value="{{ page.form_amount_2 }}" class="custom-control-input"{% if show_selected and page.form_preselected == page.SECOND %} checked{% endif %}>
<label class="custom-control-label col-form-label-lg" for="amount2">{{ page.form_amount_2 }} Kč</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount3" name="amount" value="{{ page.form_amount_3 }}" class="custom-control-input"{% if show_selected and page.form_preselected == page.THIRD %} checked{% endif %}>
<label class="custom-control-label col-form-label-lg" for="amount3">{{ page.form_amount_3 }} Kč</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount4" name="amount" value="{{ page.form_amount_4 }}" class="custom-control-input"{% if show_selected and page.form_preselected == page.FOURTH %} checked{% endif %}>
<label class="custom-control-label col-form-label-lg" for="amount4">{{ page.form_amount_4 }} Kč</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount5" name="amount" value="{{ page.form_monthly_amount_1 }}" class="custom-control-input"{% if page.form_monthly_preselected == page.FIRST %} checked{% endif %}>
<label class="custom-control-label col-form-label-lg" for="amount5">{{ page.form_monthly_amount_1 }} Kč</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount6" name="amount" value="{{ page.form_monthly_amount_2 }}" class="custom-control-input"{% if page.form_monthly_preselected == page.SECOND %} checked{% endif %}>
<label class="custom-control-label col-form-label-lg" for="amount6">{{ page.form_monthly_amount_2 }} Kč</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount7" name="amount" value="{{ page.form_monthly_amount_3 }}" class="custom-control-input"{% if page.form_monthly_preselected == page.THIRD %} checked{% endif %}>
<label class="custom-control-label col-form-label-lg" for="amount7">{{ page.form_monthly_amount_3 }} Kč</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount8" name="amount" value="{{ page.form_monthly_amount_4 }}" class="custom-control-input"{% if page.form_monthly_preselected == page.FOURTH %} checked{% endif %}>
<label class="custom-control-label col-form-label-lg" for="amount8">{{ page.form_monthly_amount_4 }} Kč</label>
</div>
{% load wagtailcore_tags wagtailimages_tags %}
{% load wagtailcore_tags wagtailimages_tags humanize %}
<div class="col-12 col-md-4 mb-4">
<a class="card project" href="{% pageurl project %}">
......@@ -8,14 +8,20 @@
<h5>{{ project.title }}</h5>
<p>{{ project.perex }}</p>
</div>
{% comment %} {# TODO #}
<div class="card-footer">
{% if project.expected_amount %}
<div class="progress">
<div class="progress-bar" role="progressbar" style="width: 90%" aria-valuenow="90" aria-valuemin="0" aria-valuemax="100"></div>
<div class="progress-bar" role="progressbar" style="width: {{ project.donated_percentage }}%" aria-valuenow="{{ project.donated_percentage }}" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<p>Vybráno <strong>4 963 Kč</strong> z <strong>250 000 Kč</strong></p>
<p>
Vybráno <strong>{{ project.get_donated_amount|intcomma }}&nbsp;</strong>
z <strong>{{ project.expected_amount|intcomma }}&nbsp;</strong>
</p>
{% else %}
<p>Zatím vybráno <strong>{{ project.get_donated_amount|intcomma }}&nbsp;</strong></p>
{% endif %}
</div>
{% endcomment %}
{% if project.is_new %}
<ul class="project__flags">
<li class="project__flag new">Nový projekt</li>
......
from django import template
register = template.Library()
@register.simple_tag(takes_context=True)
def get_section_kind(context):
if "current_section" not in context or context["current_section"] == "primary":
context["current_section"] = "alternate"
else:
context["current_section"] = "primary"
return context["current_section"]
import logging
import os.path
import requests
from django.conf import settings
logger = logging.getLogger(__name__)
def get_donated_amount_from_api(portal_project_id):
url = os.path.join(
settings.DONATE_PORTAL_API_URL, "donate/bar", str(portal_project_id)
)
try:
response = requests.get(url, timeout=settings.DONATE_PORTAL_API_TIMEOUT)
response.raise_for_status()
_, amount = response.json()
return amount
except requests.exceptions.Timeout:
logger.warning("Donate portal API call timed out for %s", url)
except requests.exceptions.RequestException:
logger.warning("Donate portal API call failed for %s", url)
return None
import wagtail.admin.rich_text.editors.draftail.features as draftail_features
from django.utils.html import escape
from wagtail import hooks
from wagtail.admin.rich_text.converters.html_to_contentstate import (
InlineStyleElementHandler,
)
from wagtail.rich_text import LinkHandler
from donate.constants import font_colors
class ExternalLinkHandler(LinkHandler):
identifier = "external"
@classmethod
def expand_db_attributes(cls, attrs):
href = attrs["href"]
return '<a href="%s" target="_blank" rel="noopener nofollower">' % escape(href)
@hooks.register("register_rich_text_features")
def register_external_link(features):
features.register_link_type(ExternalLinkHandler)
@hooks.register("register_rich_text_features")
def register_font_color_feature(features):
for color_name, color_value in font_colors:
feature_name = "font_color_" + color_value
type_ = "FONT_COLOR_" + color_value
tag = f"span{color_name.lower()}" # This must be a "custom" HTML element in order for wagtail to correctly save it :-)
control = {
"type": type_,
"label": color_name,
"description": color_name + " text color",
"style": {"color": color_value},
}
features.register_editor_plugin(
"draftail", feature_name, draftail_features.InlineStyleFeature(control)
)
db_conversion = {
"from_database_format": {tag: InlineStyleElementHandler(type_)},
"to_database_format": {
"style_map": {
type_: {"element": tag, "props": {"style": "color: " + color_value}}
}
},
}
features.register_converter_rule("contentstate", feature_name, db_conversion)
from django.apps import AppConfig
class ElectionsConfig(AppConfig):
name = "elections"
from wagtail.blocks import (
CharBlock,
ListBlock,
PageChooserBlock,
StreamBlock,
StructBlock,
TextBlock,
URLBlock,
)
from wagtail.images.blocks import ImageChooserBlock
from shared.blocks import CandidateBlock as SharedCandidateBlockMixin
from shared.blocks import CandidateListBlock as SharedCandidateListBlockMixin
from shared.blocks import (
CandidateSecondaryListBlock as SharedCandidateSecondaryListBlockMixin,
)
from shared.blocks import CustomSecondaryCandidateBlock
from shared.blocks import SecondaryCandidateBlock as SharedSecondaryCandidateBlockMixin
class ElectionsCarouselBlock(StructBlock):
desktop_image = ImageChooserBlock(
label="Obrázek na pozadí (desktop)",
help_text="Pokud není vybráno video, ukáže se na desktopu.",
)
mobile_image = ImageChooserBlock(
label="Obrázek (mobil)",
help_text="Pokud je vybrán, ukáže se místo videa na mobilu.",
required=False,
)
video_url = URLBlock(
label="URL videa",
help_text="Pokud je vybráno, ukáže se na desktopech s povoleným autoplayem místo obrázku.",
required=False,
)
mobile_line_1 = TextBlock(label="První mobilní řádek")
mobile_line_2 = TextBlock(label="Druhý mobilní řádek")
class Meta:
template = "styleguide2/includes/molecules/menus/elections/carousel.html"
icon = "form"
label = "Carousel"
class CandidateBlock(SharedCandidateBlockMixin):
page = PageChooserBlock(
label="Stránka", page_type=["elections.ElectionsCandidatePage"]
)
class SecondaryCandidateBlock(SharedSecondaryCandidateBlockMixin):
page = PageChooserBlock(
label="Stránka", page_type=["elections.ElectionsCandidatePage"]
)
class CandidateListBlock(SharedCandidateListBlockMixin):
candidates = ListBlock(
CandidateBlock(),
required=False,
label=" ", # Hacky way to show no label
)
class CandidateSecondaryListBlock(SharedCandidateSecondaryListBlockMixin):
new_candidates = StreamBlock(
[
("candidate_page", SecondaryCandidateBlock()),
("candidate_custom", CustomSecondaryCandidateBlock()),
],
required=False,
label=" ", # Hacky way to show no label
)
class Meta:
template = "styleguide2/includes/organisms/candidates/elections/candidate_secondary_list.html"
class CalendarBlock(StructBlock):
heading = CharBlock(label="Nadpis")
class Meta:
template = "styleguide2/includes/organisms/main_section/elections/calendar.html"
icon = "calendar"
label = "Kalendář"
class PersonFaqAnswerBlock(StructBlock):
question = CharBlock(label="Otázka")
answer = TextBlock(label="Odpověď")
class Meta:
icon = "form"
label = "Odpověď kandidáta na otázku"
class PersonFaqAnswersBlock(StructBlock):
section_name = CharBlock(
label="Název sekce", help_text="Např. 'Otevřenost a transparentnost'"
)
topic = CharBlock(label="Téma", help_text="Např. 'téma Markéty Gregorové'")
person_page = PageChooserBlock(
label="Stránka kandidáta", page_type=["elections.ElectionsCandidatePage"]
)
image = ImageChooserBlock(
label="Obrázek",
help_text="Pokud není vybrán, použije se obrázek ze stránky kandidáta",
required=False,
)
questions = ListBlock(PersonFaqAnswerBlock(label="Odpověď"), label="Otázky")
class Meta:
icon = "form"
label = "Odpovědi kandidáta na otázky"
template = "styleguide2/includes/organisms/faq/faq_answer.html"
import os
import tempfile
from shared.forms import ArticlesPageForm as SharedArticlesPageForm
from shared.forms import JekyllImportForm as SharedJekyllImportForm
from .tasks import import_jekyll_articles
class JekyllImportForm(SharedJekyllImportForm):
def handle_import(self):
lock_file_name = os.path.join(
tempfile.gettempdir(), f".{self.instance.id}.articles-import-lock"
)
if os.path.isfile(lock_file_name):
return
open(lock_file_name, "w").close()
import_jekyll_articles.delay(
article_parent_page_id=self.instance.id,
collection_id=self.cleaned_data["collection"].id,
url=self.cleaned_data["jekyll_repo_url"],
dry_run=self.cleaned_data["dry_run"],
use_git=True,
)
class ElectionsArticlesPageForm(SharedArticlesPageForm, JekyllImportForm):
def __init__(self, *args, **kwargs):
from shared.models import SharedTag
from .models import ElectionsArticleTag
super().__init__(*args, **kwargs)
self.fields["shared_tags"].queryset = SharedTag.objects.order_by("name")
if self.instance.pk:
valid_tag_ids = (
ElectionsArticleTag.objects.filter(
content_object__in=self.instance.get_children().specific()
)
.values_list("tag_id", flat=True)
.distinct()
)
valid_shared_tag_ids = (
self.instance.shared_tags.values_list("id", flat=True).distinct().all()
)
self.fields["displayed_tags"].queryset = (
ElectionsArticleTag.objects.filter(id__in=valid_tag_ids)
.order_by("tag__name")
.distinct("tag__name")
)
self.fields["displayed_shared_tags"].queryset = (
SharedTag.objects.filter(id__in=valid_shared_tag_ids)
.order_by("name")
.distinct("name")
)
else:
self.fields["displayed_tags"].queryset = ElectionsArticleTag.objects.filter(
id=-1
)
self.fields["displayed_shared_tags"].queryset = SharedTag.objects.filter(
id=-1
)
# Generated by Django 4.1.10 on 2024-01-06 16:43
import django.db.models.deletion
import django.utils.timezone
import modelcluster.fields
import wagtail.blocks
import wagtail.contrib.routable_page.models
import wagtail.documents.blocks
import wagtail.fields
import wagtail.images.blocks
import wagtailmetadata.models
from django.db import migrations, models
import shared.blocks
import shared.models.legacy
class Migration(migrations.Migration):
initial = True
dependencies = [
("main", "0065_alter_mainarticlepage_content_and_more"),
("wagtailimages", "0025_alter_image_file_alter_rendition_file"),
("shared", "0003_initial"),
("calendar_utils", "0004_auto_20220505_1228"),
("taggit", "0005_auto_20220424_2025"),
("wagtailcore", "0083_workflowcontenttype"),
]
operations = [
migrations.CreateModel(
name="ElectionsArticlePage",
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",
),
),
(
"date",
models.DateField(
default=django.utils.timezone.now, verbose_name="datum"
),
),
("perex", models.TextField(verbose_name="perex")),
(
"author",
models.CharField(
blank=True, max_length=250, null=True, verbose_name="autor"
),
),
("shared_type", models.TextField(blank=True, null=True)),
(
"content",
wagtail.fields.StreamField(
[
(
"text",
wagtail.blocks.RichTextBlock(
template="styleguide2/includes/atoms/text/prose_richtext.html"
),
),
(
"quote",
wagtail.blocks.StructBlock(
[
(
"quote",
wagtail.blocks.CharBlock(label="Citace"),
),
(
"autor_name",
wagtail.blocks.CharBlock(
label="Jméno autora"
),
),
]
),
),
(
"download",
wagtail.blocks.StructBlock(
[
(
"file",
wagtail.documents.blocks.DocumentChooserBlock(
label="Stáhnutelný soubor"
),
)
]
),
),
],
blank=True,
use_json_field=True,
verbose_name="Článek",
),
),
],
options={
"verbose_name": "Aktualita",
"abstract": False,
},
bases=(
shared.models.main.SubpageMixin,
wagtailmetadata.models.WagtailImageMetadataMixin,
"wagtailcore.page",
models.Model,
),
),
migrations.CreateModel(
name="ElectionsSearchPage",
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",
),
),
(
"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": "Vyhledávací stránka",
"abstract": False,
},
bases=(
shared.models.main.SubpageMixin,
wagtailmetadata.models.WagtailImageMetadataMixin,
"wagtailcore.page",
models.Model,
),
),
migrations.CreateModel(
name="ElectionsHomePage",
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",
),
),
(
"title_suffix",
models.CharField(
blank=True,
help_text="Umožňuje přidat příponu k základnímu titulku stránky. Pokud je např. titulek stránky pojmenovaný 'Kontakt' a do přípony vyplníte 'MS Pardubice | Piráti', výsledný titulek bude 'Kontakt | MS Pardubice | Piráti'. Pokud příponu nevyplníte, použije se název webu.",
max_length=100,
null=True,
verbose_name="Přípona titulku stránky",
),
),
(
"important_item_name",
models.CharField(
blank=True,
help_text="Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.",
max_length=16,
null=True,
verbose_name="Jméno",
),
),
(
"important_item_url",
models.URLField(blank=True, null=True, verbose_name="Adresa"),
),
(
"menu",
wagtail.fields.StreamField(
[
(
"menu_item",
wagtail.blocks.StructBlock(
[
(
"title",
wagtail.blocks.CharBlock(
help_text="Pokud není odkazovaná stránka na Majáku, použij možnost zadání samotné adresy níže.",
label="Titulek",
required=True,
),
),
(
"page",
wagtail.blocks.PageChooserBlock(
label="Stránka", required=False
),
),
(
"link",
wagtail.blocks.URLBlock(
label="Odkaz", required=False
),
),
]
),
)
],
blank=True,
use_json_field=True,
verbose_name="Položky",
),
),
(
"menu_button_name",
models.CharField(
max_length=16, verbose_name="Text na tlačítku pro zapojení"
),
),
(
"menu_button_content",
wagtail.fields.StreamField(
[
(
"navbar_menu_item",
wagtail.blocks.StructBlock(
[
(
"button_link",
wagtail.blocks.URLBlock(
label="Odkaz tlačítka"
),
),
(
"button_text",
wagtail.blocks.CharBlock(
label="Text tlačítka"
),
),
]
),
)
],
blank=True,
use_json_field=True,
verbose_name="Obsah menu pro zapojení se",
),
),
(
"footer_other_links",
wagtail.fields.StreamField(
[
(
"other_links",
wagtail.blocks.StructBlock(
[
(
"title",
wagtail.blocks.CharBlock(label="Titulek"),
),
(
"list",
wagtail.blocks.ListBlock(
shared.blocks.LinkBlock,
label="Seznam odkazů s titulkem",
),
),
]
),
)
],
blank=True,
use_json_field=True,
verbose_name="Odkazy v zápatí webu",
),
),
(
"footer_person_list",
wagtail.fields.StreamField(
[
(
"person",
wagtail.blocks.StructBlock(
[
(
"position",
wagtail.blocks.CharBlock(
label="Název pozice", required=False
),
),
(
"person",
wagtail.blocks.PageChooserBlock(
label="Osoba",
page_type=["main.MainPersonPage"],
),
),
]
),
)
],
blank=True,
use_json_field=True,
verbose_name="Osoby v zápatí webu",
),
),
(
"matomo_id",
models.IntegerField(
blank=True,
null=True,
verbose_name="Matomo ID pro sledování návštěvnosti",
),
),
(
"social_links",
wagtail.fields.StreamField(
[
(
"social_links",
wagtail.blocks.StructBlock(
[
(
"text",
wagtail.blocks.CharBlock(label="Název"),
),
(
"link",
wagtail.blocks.URLBlock(label="Odkaz"),
),
(
"icon",
wagtail.blocks.CharBlock(
help_text="Seznam ikon - https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons <br/>Název ikony zadejte bez tečky na začátku",
label="Ikona",
),
),
]
),
)
],
blank=True,
use_json_field=True,
verbose_name="Odkazy na sociální sítě",
),
),
(
"content",
wagtail.fields.StreamField(
[
(
"carousel",
wagtail.blocks.StructBlock(
[
(
"image",
wagtail.images.blocks.ImageChooserBlock(
label="Obrázek na pozadí"
),
)
]
),
),
(
"candidate",
wagtail.blocks.StructBlock(
[
(
"candidates",
wagtail.blocks.ListBlock(
wagtail.blocks.StructBlock(
[
(
"page",
wagtail.blocks.PageChooserBlock(
label="Stránka",
page_type=[
"elections.ElectionsCandidatePage"
],
),
),
(
"image",
wagtail.images.blocks.ImageChooserBlock(
help_text="Pokud není vybrán, použije se obrázek ze stránky kandidáta",
label="Obrázek",
required=False,
),
),
(
"description",
wagtail.blocks.TextBlock(
label="Popis"
),
),
]
),
label="Kandidáti",
),
)
]
),
),
(
"program",
wagtail.blocks.StructBlock(
[
(
"categories",
wagtail.blocks.ListBlock(
wagtail.blocks.StructBlock(
[
(
"number",
wagtail.blocks.IntegerBlock(
label="Číslo"
),
),
(
"name",
wagtail.blocks.CharBlock(
label="Název"
),
),
(
"points",
wagtail.blocks.ListBlock(
wagtail.blocks.StructBlock(
[
(
"number",
wagtail.blocks.IntegerBlock(
label="Číslo"
),
),
(
"content",
wagtail.blocks.TextBlock(
label="Obsah"
),
),
]
),
label="Body",
),
),
]
),
label="Kategorie",
),
),
(
"long_version_url",
wagtail.blocks.URLBlock(
label="Odkaz na celou verzi programu"
),
),
(
"long_version_text",
wagtail.blocks.CharBlock(
label="Nadpis odkazu na celou verzi programu"
),
),
]
),
),
(
"news",
wagtail.blocks.StructBlock(
[
(
"title",
wagtail.blocks.CharBlock(
help_text="Nejnovější články se načtou automaticky",
label="Titulek",
),
),
(
"description",
wagtail.blocks.TextBlock(label="Popis"),
),
],
template="styleguide2/includes/organisms/articles/elections/articles_section.html",
),
),
],
blank=True,
use_json_field=True,
verbose_name="Hlavní obsah",
),
),
(
"gdpr_and_cookies_page",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.PROTECT,
to="main.mainsimplepage",
verbose_name="Stránka pro GDPR",
),
),
(
"important_item_page",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.PROTECT,
related_name="+",
to="wagtailcore.page",
verbose_name="Stránka",
),
),
(
"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": "Volební web",
},
bases=(
wagtail.contrib.routable_page.models.RoutablePageMixin,
wagtailmetadata.models.WagtailImageMetadataMixin,
shared.models.legacy.ArticlesMixin,
"wagtailcore.page",
models.Model,
),
),
migrations.CreateModel(
name="ElectionsCandidatesPage",
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",
),
),
(
"calendar_url",
models.URLField(
blank=True,
help_text="Kalendář se po uložení stránky aktualizuje na pozadí. U plnějších kalendářů to může trvat i desítky sekund.",
null=True,
verbose_name="URL kalendáře ve formátu iCal",
),
),
(
"calendar",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.PROTECT,
to="calendar_utils.calendar",
),
),
(
"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": "Kandidáti",
},
bases=(
shared.models.main.SubpageMixin,
wagtailmetadata.models.WagtailImageMetadataMixin,
"wagtailcore.page",
models.Model,
),
),
migrations.CreateModel(
name="ElectionsCandidatePage",
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",
),
),
(
"calendar_url",
models.URLField(
blank=True,
help_text="Kalendář se po uložení stránky aktualizuje na pozadí. U plnějších kalendářů to může trvat i desítky sekund.",
null=True,
verbose_name="URL kalendáře ve formátu iCal",
),
),
(
"position",
models.CharField(
blank=True,
max_length=64,
null=True,
verbose_name="Pozice/povolání",
),
),
("perex", wagtail.fields.RichTextField()),
(
"email",
models.CharField(
blank=True, max_length=128, null=True, verbose_name="E-mail"
),
),
(
"phone",
models.CharField(
blank=True,
max_length=16,
null=True,
verbose_name="Telefonní kontakt",
),
),
(
"social_links",
wagtail.fields.StreamField(
[
(
"social_links",
wagtail.blocks.StructBlock(
[
(
"text",
wagtail.blocks.CharBlock(label="Název"),
),
(
"link",
wagtail.blocks.URLBlock(label="Odkaz"),
),
(
"icon",
wagtail.blocks.CharBlock(
help_text="Seznam ikon - https://styleguide.pirati.cz/latest/?p=viewall-atoms-icons <br/>Název ikony zadejte bez tečky na začátku",
label="Ikona",
),
),
]
),
)
],
blank=True,
use_json_field=True,
verbose_name="Odkazy na sociální sítě",
),
),
(
"articles_heading",
models.CharField(
help_text='Např. "Aktuality Mikuláše Peksy".',
max_length=32,
verbose_name="Nadpis sekce s články",
),
),
(
"related_candidates",
wagtail.fields.StreamField(
[
(
"candidate",
wagtail.blocks.PageChooserBlock(
label="Detail kandidáta",
page_type=["elections.ElectionsCandidatePage"],
),
)
],
blank=True,
use_json_field=True,
verbose_name="Další kandidáti",
),
),
(
"calendar",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.PROTECT,
to="calendar_utils.calendar",
),
),
(
"image",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.PROTECT,
related_name="+",
to="wagtailimages.image",
verbose_name="Obrázek",
),
),
(
"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": "Kandidát",
},
bases=(
shared.models.main.SubpageMixin,
wagtailmetadata.models.WagtailImageMetadataMixin,
"wagtailcore.page",
models.Model,
),
),
migrations.CreateModel(
name="ElectionsArticleTag",
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,
related_name="elections_tagged_items",
to="elections.electionsarticlepage",
),
),
(
"tag",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="%(app_label)s_%(class)s_items",
to="taggit.tag",
),
),
],
options={
"abstract": False,
},
),
migrations.CreateModel(
name="ElectionsArticlesPage",
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",
),
),
(
"last_import_log",
models.TextField(
blank=True,
null=True,
verbose_name="Výstup z posledního importu",
),
),
("perex", models.TextField()),
(
"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",
),
),
(
"shared_tags",
modelcluster.fields.ParentalManyToManyField(
blank=True,
help_text="Pro výběr jednoho tagu klikněte na tag a uložte nebo publikujte stránku. Pro výběr více tagů využijte podržte Ctrl a vyberte příslušné tagy.",
to="shared.sharedtag",
verbose_name="Výběr tagů pro články sdílené mezi sítěmi",
),
),
],
options={
"verbose_name": "Rozcestník článků",
"abstract": False,
},
bases=(
wagtail.contrib.routable_page.models.RoutablePageMixin,
shared.models.main.SubpageMixin,
wagtailmetadata.models.WagtailImageMetadataMixin,
shared.models.legacy.ArticlesMixin,
"wagtailcore.page",
models.Model,
),
),
migrations.AddField(
model_name="electionsarticlepage",
name="author_page",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="elections.electionscandidatepage",
verbose_name="Stránka autora (kandidáta)",
),
),
migrations.AddField(
model_name="electionsarticlepage",
name="image",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.PROTECT,
to="wagtailimages.image",
verbose_name="obrázek",
),
),
migrations.AddField(
model_name="electionsarticlepage",
name="search_image",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="+",
to="wagtailimages.image",
verbose_name="Search image",
),
),
migrations.AddField(
model_name="electionsarticlepage",
name="shared_from",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.PROTECT,
related_name="+",
to="wagtailcore.page",
),
),
]