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

Target

Select target project
  • to/majak
  • b1242/majak
2 results
Select Git revision
Show changes
Commits on Source (28)
Showing
with 6546 additions and 46 deletions
......@@ -3,4 +3,4 @@
line_length = 88
multi_line_output = 3
include_trailing_comma = true
known_third_party = PyPDF2,arrow,bleach,bs4,captcha,celery,dateutil,django,environ,faker,fastjsonschema,icalevents,markdown,modelcluster,pirates,pytest,pytz,requests,sentry_sdk,taggit,wagtail,wagtailmetadata,weasyprint,yaml
known_third_party = PyPDF2,arrow,bleach,bs4,captcha,celery,dateutil,django,environ,faker,fastjsonschema,icalevents,instaloader,markdown,modelcluster,pirates,pytest,pytz,requests,sentry_sdk,taggit,wagtail,wagtailmetadata,weasyprint,yaml
......@@ -92,19 +92,31 @@ class CalendarMixin(models.Model):
def get_fullcalendar_data(self) -> str:
calendar_format_events = []
for event in self.calendar.past_events + self.calendar.future_events:
for event in (
self.calendar.past_events if self.calendar.past_events is not None else []
) + (
self.calendar.future_events
if self.calendar.future_events is not None
else []
):
parsed_event = {
"allDay": event["all_day"],
"start": event["start"].isoformat(),
"end": event["end"].isoformat(),
}
if event["summary"] is not None:
if event["summary"] not in ("", None):
parsed_event["title"] = event["summary"]
if event["url"] is not None:
if event["url"] not in ("", None):
parsed_event["url"] = event["url"]
if event["location"] not in ("", None):
parsed_event["location"] = event["location"]
if event["description"] not in ("", None):
parsed_event["description"] = event["description"]
calendar_format_events.append(parsed_event)
return json.dumps(calendar_format_events)
......
......@@ -89,10 +89,10 @@
<ui-footer-collapsible label="Podpoř nás">
<ul class="mt-6 space-y-2 text-grey-200">
<li>
<a href="https://nalodeni.pirati.cz/">Naloď se</a>
<a href="https://nalodeni.pirati.cz/">Nalodit</a>
</li>
<li>
<a href="https://dary.pirati.cz/">Přispěj</a>
<a href="https://dary.pirati.cz/">Darovat</a>
</li>
<li>
<a href="https://www.piratskyobchod.cz/">Pirátský obchod</a>
......@@ -146,7 +146,7 @@
<a href="https://dary.pirati.cz/">
<button class="btn btn--icon btn--white btn--hoveractive text-lg btn--fullwidth sm:btn--autowidth">
<div class="btn__body-wrap">
<div class="btn__body ">Přispěj</div>
<div class="btn__body ">Darovat</div>
<div class="btn__icon ">
<i class="ico--pig">
</i>
......@@ -157,7 +157,7 @@
<a href="https://nalodeni.pirati.cz/">
<button class="btn btn--icon btn--cyan-200 btn--hoveractive text-lg btn--fullwidth sm:btn--autowidth">
<div class="btn__body-wrap">
<div class="btn__body ">Naloď se</div>
<div class="btn__body ">Nalodit</div>
<div class="btn__icon ">
<i class="ico--anchor">
</i>
......
......@@ -4,11 +4,9 @@ from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('district', '0110_remove_districtpersonpage_ical_calendar_url_and_more'),
('district', '0113_merge_20230502_1854'),
("district", "0110_remove_districtpersonpage_ical_calendar_url_and_more"),
("district", "0113_merge_20230502_1854"),
]
operations = [
]
operations = []
# Generated by Django 4.1.8 on 2023-07-09 22:59
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("district", "0114_merge_20230502_2140"),
]
operations = [
migrations.AlterField(
model_name="districthomepage",
name="donation_page",
field=models.URLField(
blank=True,
default="https://dary.pirati.cz",
null=True,
verbose_name="URL pro příjem darů (tlačítko Darovat)",
),
),
]
# Generated by Django 4.1.8 on 2023-07-11 14:09
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("district", "0115_alter_districtcustompage_content_and_more"),
("district", "0115_alter_districthomepage_donation_page"),
]
operations = []
......@@ -40,9 +40,9 @@ from shared.blocks import (
ButtonGroupBlock,
ChartBlock,
FigureBlock,
FooterLinksBlock,
FullSizeHeaderBlock,
HeadlineBlock,
NewsletterSubscriptionBlock,
YouTubeVideoBlock,
)
from shared.const import RICH_TEXT_DEFAULT_FEATURES
......@@ -98,6 +98,10 @@ class DistrictHomePage(
),
),
("headline", HeadlineBlock()),
(
"newsletter",
NewsletterSubscriptionBlock(),
),
],
verbose_name="Obsah stránky",
blank=True,
......@@ -180,7 +184,7 @@ class DistrictHomePage(
)
donation_page = models.URLField(
"URL pro příjem darů (tlačítko Přispěj)",
"URL pro příjem darů (tlačítko Darovat)",
blank=True,
null=True,
default="https://dary.pirati.cz",
......@@ -1403,7 +1407,11 @@ class DistrictCrossroadPage(
class DistrictCustomPage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
ExtendedMetadataPageMixin,
SubpageMixin,
MetadataPageMixin,
RoutablePageMixin,
Page,
):
### FIELDS
......@@ -1412,6 +1420,7 @@ class DistrictCustomPage(
+ [
("badge", blocks.PersonBadgeBlock()),
("people_group", blocks.PeopleGroupListBlock()),
("newsletter", NewsletterSubscriptionBlock()),
],
verbose_name="Obsah",
blank=True,
......
......@@ -19,8 +19,9 @@
<!-- Bootstrap CSS -->
<!-- Styles -->
<link rel="stylesheet" href="https://styleguide.pirati.cz/2.12.x/css/styles.css">
<link rel="stylesheet" href="https://styleguide.pirati.cz/2.13.x/css/styles.css">
<link href="{% static "shared/vendor/fancybox/jquery.fancybox.min.css" %}" rel="stylesheet">
<link rel="stylesheet" href="{% static "shared/vendor/vue-formulate-2.5.3/css/snow.min.css" %}">
<link rel="stylesheet" href="{% static "shared/css/helpers.css" %}">
{% block styles %}{% endblock %}
......@@ -131,7 +132,7 @@
<a href="{{ page.root_page.donation_page }}" rel="noopener noreferrer" target="_blank"
class="btn btn--icon btn--cyan-200 btn--hoveractive btn--condensed btn--fullwidth md:btn--autowidth lg:text-sm xl:text-base">
<div class="btn__body-wrap">
<div class="btn__body ">Přispěj</div>
<div class="btn__body ">Darovat</div>
<div class="btn__icon ">
<i class="ico--pig"></i>
</div>
......@@ -142,7 +143,7 @@
<a href="{{ page.root_page.contact_newcomers }}" rel="noopener noreferrer" target="_blank"
class="btn btn--icon btn--blue-300 btn--hoveractive btn--condensed btn--fullwidth md:btn--autowidth lg:text-sm xl:text-base">
<div class="btn__body-wrap">
<div class="btn__body ">Naloď se</div>
<div class="btn__body ">Nalodit</div>
<div class="btn__icon ">
<i class="ico--anchor"></i>
</div>
......@@ -306,7 +307,7 @@
{% if page.root_page.donation_page %}
<a href="{{ page.root_page.donation_page }}" rel="noopener noreferrer" target="_blank" class="btn btn--icon btn--cyan-200 btn--hoveractive text-lg btn--fullwidth sm:btn--autowidth px-0 mx-0">
<div class="btn__body-wrap">
<div class="btn__body ">Přispěj</div>
<div class="btn__body ">Darovat</div>
<div class="btn__icon "><i class="ico--pig"></i></div>
</div>
</a>
......@@ -315,7 +316,7 @@
{% if page.root_page.contact_newcomers %}
<a href="{{ page.root_page.contact_newcomers }}" rel="noopener noreferrer" target="_blank" class="btn btn--icon btn--blue-300 btn--hoveractive text-lg btn--fullwidth sm:btn--autowidth mt-0 px-0 mx-0">
<div class="btn__body-wrap">
<div class="btn__body ">Naloď se</div>
<div class="btn__body ">Nalodit</div>
<div class="btn__icon "><i class="ico--anchor"></i></div>
</div>
</a>
......@@ -347,10 +348,13 @@
</footer>
<script src="{% static "styleguide291/assets/js/vue.2.6.11.js" %}"></script>
<script src="https://styleguide.pirati.cz/2.10.x/js/main.bundle.js"></script>
<script src="https://styleguide.pirati.cz/2.13.x/js/main.bundle.js"></script>
<script src="{% static "shared/vendor/jquery/jquery-3.4.1.min.js" %}"></script>
<script src="{% static "shared/vendor/lazysizes/lazysizes.min.js" %}"></script>
<script src="{% static "shared/vendor/fancybox/jquery.fancybox.min.js" %}"></script>
<script src="{% static "shared/vendor/vue-formulate-2.5.3/js/formulate.min.js" %}"></script>
<script src="{% static "shared/vendor/vue-formulate-i18n-1.16.0/js/cs.min.js" %}"></script>
<script src="{% static "shared/js/vue-formulate-helper.js" %}"></script>
{% include "maps_utils/includes/scripts.html" %}
......
......@@ -27,7 +27,9 @@
{% if page.calendar %}
<section>
<h2 class="head-alt-md mb-3"><i class="ico--calendar mr-4"></i>Kalendář</h2>
<ui-person-calendar events='{{ page.get_fullcalendar_data|safe }}'></ui-person-calendar>
<div class="__js-root">
<ui-month-calendar events='{{ page.get_fullcalendar_data|safe }}'></ui-month-calendar>
</div>
</section>
{% endif %}
</section>
......
from wagtail.blocks import CharBlock, DateBlock, IntegerBlock, ListBlock, StructBlock
from wagtail.blocks import (
CharBlock,
DateBlock,
IntegerBlock,
ListBlock,
RichTextBlock,
StructBlock,
URLBlock,
)
from wagtail.images.blocks import ImageChooserBlock
from donate.constants import RICH_TEXT_FEATURES
class CrowdfundingRewardBlock(StructBlock):
title = CharBlock(label="Název odměny")
......@@ -21,3 +31,14 @@ class CrowdfundingRewardBlock(StructBlock):
template = "donate/blocks/crowdfunding_reward_block.html"
icon = "pick"
label = "Odměna"
class CustomContentBlock(StructBlock):
title = CharBlock(label="Nadpis")
content = RichTextBlock(label="Obsah", features=RICH_TEXT_FEATURES)
link = URLBlock(label="Odkaz")
class Meta:
template = "donate/blocks/custom_content_block.html"
icon = "doc-full"
label = "Obecný blok"
from shared.const import RICH_TEXT_DEFAULT_FEATURES
# Select colors for rich text editors font color from style guide
font_colors = [
("Green", "#4ca971"),
("Yellow", "#fde119"),
("Blue", "#027da8"),
("Cyan", "#004958"),
("Violet", "#670047"),
("Red", "#d60d53"),
("Grey", "#262626"),
]
RICH_TEXT_FEATURES = RICH_TEXT_DEFAULT_FEATURES + list(
map(lambda color: "font_color_" + color[1], font_colors)
)
# Generated by Django 4.1.8 on 2023-05-30 20:06
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("donate", "0025_alter_donateprojectpage_crowdfunding_and_more"),
]
operations = [
migrations.AddField(
model_name="donateprojectpage",
name="until",
field=models.DateField(blank=True, null=True, verbose_name="běží do"),
),
]
# Generated by Django 4.1.8 on 2023-06-13 22:19
import wagtail.blocks
import wagtail.fields
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("donate", "0026_donateprojectpage_until"),
]
operations = [
migrations.AddField(
model_name="donatehomepage",
name="custom_blocks",
field=wagtail.fields.StreamField(
[
(
"content",
wagtail.blocks.StructBlock(
[
("title", wagtail.blocks.CharBlock(label="Nadpis")),
(
"content",
wagtail.blocks.RichTextBlock(label="Obsah"),
),
("link", wagtail.blocks.URLBlock(label="Odkaz")),
]
),
)
],
blank=True,
use_json_field=True,
verbose_name="Obecné bloky",
),
),
]
# Generated by Django 4.1.8 on 2023-07-01 00:13
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("donate", "0027_donatehomepage_custom_blocks"),
]
operations = [
migrations.AddField(
model_name="donatehomepage",
name="faq_page",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.PROTECT,
related_name="FAQ",
to="donate.donatetextpage",
verbose_name="Stránka s FAQ",
),
),
]
......@@ -27,7 +27,7 @@ from shared.models import (
from shared.utils import get_subpage_url, make_promote_panels
from tuning import admin_help
from .blocks import CrowdfundingRewardBlock
from .blocks import CrowdfundingRewardBlock, CustomContentBlock
from .forms import DonateForm
from .utils import get_donated_amount_from_api
......@@ -128,7 +128,22 @@ class DonateHomePage(
# regions section
region_title = models.CharField("podpoř kraj nadpis", max_length=250, blank=True)
region_body = models.TextField("podpoř kraj popis", blank=True)
# custom section
custom_blocks = StreamField(
[("content", CustomContentBlock())],
blank=True,
use_json_field=True,
verbose_name="Obecné bloky",
)
# settings
faq_page = models.ForeignKey(
"donate.DonateTextPage",
on_delete=models.PROTECT,
blank=True,
null=True,
related_name="FAQ",
verbose_name="Stránka s FAQ",
)
custom_url_1 = models.URLField("Vlastní odkaz 1", blank=True, null=True)
custom_url_1_text = models.CharField(
"Text vlastního odkazu 1", max_length=128, blank=True
......@@ -173,6 +188,7 @@ class DonateHomePage(
[FieldPanel("region_title"), FieldPanel("region_body")],
"podpoř kraj",
),
FieldPanel("custom_blocks"),
]
promote_panels = make_promote_panels(admin_help.build(admin_help.IMPORTANT_TITLE))
......@@ -214,6 +230,7 @@ class DonateHomePage(
],
"nastavení darů",
),
FieldPanel("faq_page"),
]
### RELATIONS
......@@ -432,6 +449,7 @@ class DonateProjectPage(
### FIELDS
date = models.DateField("běží od")
until = models.DateField("běží do", null=True, blank=True)
perex = models.TextField("krátký popis")
body = RichTextField("obsah")
is_new = models.BooleanField('označení "nový projekt"', default=False)
......@@ -477,7 +495,13 @@ class DonateProjectPage(
[FieldPanel("is_new"), FieldPanel("perex"), FieldPanel("photo")],
"info do přehledu projektů",
),
FieldPanel("date"),
MultiFieldPanel(
[
FieldPanel("date"),
FieldPanel("until"),
],
"Časový interval projektu",
),
FieldPanel("body"),
FieldPanel("gallery"),
]
......
......@@ -213,6 +213,10 @@ h3.page-subheading {
color: #ffffff;
}
.section--custom {
display: flow-root;
}
/* SECTION SIZING */
section {
......@@ -1199,3 +1203,13 @@ img.full-width {
font-style: italic;
font-weight: inherit;
}
/* OVERRIDE RICHTEXT IMAGES */
.richtext-image.left {
float: left;
margin-right: 1.5rem;
}
.richtext-image.right {
float: right;
margin-left: 1.5rem;
}
......@@ -139,6 +139,9 @@
<img src="{% static "donate/img/logo_napis_white.svg" %}" alt="Logo podpoř piráty">
</div>
<ul class="footer__menu mt-5">
{% if page.root_page.faq_page %}
<li><a href={{ page.root_page.faq_page.url }}>FAQ - pravidla pro přijímání darů</a></li>
{% endif %}
<li><a href="/osobni-udaje/">Zásady zpracování osobních údajů</a></li>
<li><a href="/obchodni-podminky/">Obchodní podmínky</a></li>
</ul>
......@@ -180,7 +183,7 @@
{% endif %}
</div>
<div class="row">
<a href="https://nalodeni.pirati.cz" class="btn btn-success ml-2 my-3">Naloď se <i class="icon-chevron-right ml-2"></i></a>
<a href="https://nalodeni.pirati.cz" class="btn btn-success ml-2 my-3">Nalodit <i class="icon-chevron-right ml-2"></i></a>
</div>
</div><!-- /column -->
</div> <!-- /row -->
......
{% load wagtailcore_tags wagtailimages_tags %}
<div class="container">
<h2 class="lead page-subheading mb-4">{{ self.title }}</h2>
<div class="mb-4 clearfix">
{{ self.content|richtext }}
</div>
<a href="{{ self.link }}" class="btn btn-dark btn-lg my-2">Chci vědět více <i class="icon-chevron-right ml-2"></i></a>
</div>
{% extends "donate/base.html" %}
{% load static wagtailimages_tags wagtailcore_tags %}
{% load static wagtailimages_tags wagtailcore_tags donate_tags %}
{% block content %}
<!-- CONTENT -->
<main role="main">
<section class="section--alternate section--lead" id="uvod">
<section class="section--{% get_section_kind %} section--lead" id="uvod">
<div class="container">
<div class="row align-items-center">
......@@ -39,7 +38,7 @@
</section>
{% if page.show_donate_form %}
<section class="section--primary" id="strana">
<section class="section--{% get_section_kind %}" id="strana">
<div class="container">
<h2 class="lead page-subheading mb-4">{{ page.support_title }}</h2>
<p class="mb-4">{{ page.support_body }}</p>
......@@ -101,8 +100,20 @@
</section>
{% endif %}
<section class="section--{% get_section_kind %}" id="kraje">
<div class="container">
<h2 class="lead page-subheading mb-4">{{ page.region_title }}</h2>
<p class="mb-4">{{ page.region_body }}</p>
<div class="row mb-4">
{% include "donate/region_map_snippet.html" with index_url=page.regions_page_url %}
</div> <!-- /row -->
</div> <!-- /container -->
</section>
{% if page.has_projects %}
<section class="section--alternate" id="projekty">
<section class="section--{% get_section_kind %}" id="projekty">
<div class="container">
<h2 class="lead page-subheading mb-4">{{ page.project_title }}</h2>
......@@ -118,22 +129,13 @@
<a href="{{ page.projects_page_url }}" class="btn btn-dark btn-lg my-2">Všechny projekty a kampaně <i class="icon-chevron-right ml-2"></i></a>
</div> <!-- /container -->
</section>
<section class="section--primary" id="kraje">
{% else %}
<section class="section--alternate" id="kraje">
{% endif %}
<div class="container">
<h2 class="lead page-subheading mb-4">{{ page.region_title }}</h2>
<p class="mb-4">{{ page.region_body }}</p>
<div class="row mb-4">
{% include "donate/region_map_snippet.html" with index_url=page.regions_page_url %}
</div> <!-- /row -->
</div> <!-- /container -->
</section>
{% for content in page.custom_blocks %}
<section class="section--{% get_section_kind %} section--custom" id="custom">
{% include_block content %}
</section>
{% endfor %}
</main>
<!-- /CONTENT -->
......