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
Showing
with 434 additions and 25 deletions
{% extends "styleguide2/person_page.html" %}
{% block navbar %}
{% include 'styleguide2/includes/organisms/layout/district/navbar.html' with selected_item=page.root_page.people_page.get_menu_title is_transparent=True is_on_dark_background=True %}
{% endblock %}
{% block header %}
{% include 'styleguide2/includes/organisms/header/district/person_header.html' with first_nav_text=page.root_page.people_page.title first_nav_link=page.root_page.people_page.url second_nav_text=page.primary_group degree_before=page.before_name name=page.title degree_after=page.after_name function=page.position job=page.job main_image=page.main_image profile_image=page.get_profile_image is_pirate=page.is_pirate other_party_image_source=page.other_party_logo other_party_name=page.other_party %}
{% endblock %}
{% block newsletter %}{% endblock %}
{% extends "styleguide2/simple_page.html" %}
{% block navbar %}
{% include 'styleguide2/includes/organisms/layout/district/navbar.html' with selected_item=page.get_menu_title %}
{% endblock %}
{% block inner_content %}
<div class="__inner-content">
{% include "shared/pdf_snippet.html" with download_link=True %}
</div>
{% endblock %}
{% extends "styleguide2/people_page.html" %}
{% block navbar %}
{% include 'styleguide2/includes/organisms/layout/district/navbar.html' with selected_item=page.get_menu_title %}
{% endblock %}
{% block newsletter %}{% endblock %}
{% extends "styleguide2/person_page.html" %}
{% block navbar %}
{% include 'styleguide2/includes/organisms/layout/district/navbar.html' with selected_item=page.root_page.people_page.get_menu_title is_transparent=True is_on_dark_background=True %}
{% endblock %}
{% block header %}
{% include 'styleguide2/includes/organisms/header/district/person_header.html' with first_nav_text=page.root_page.people_page.title first_nav_link=page.root_page.people_page.url second_nav_text=page.primary_group degree_before=page.before_name name=page.title degree_after=page.after_name function=page.position job=page.job main_image=page.main_image profile_image=page.get_profile_image is_pirate=page.is_pirate other_party_image_source=page.other_party_logo other_party_name=page.other_party %}
{% endblock %}
{% block newsletter %}{% endblock %}
{% extends "district/base.html" %}
{% load wagtailcore_tags wagtailimages_tags shared_filters %}
{% block content %}
<div class="lg:flex lg:mt-8 space-y-16 lg:space-y-0 lg:space-x-8 xl:space-x-16 mb-5">
<section>
<header>
<h1 itemprop="headline" class="head-alt-md md:head-alt-lg max-w-5xl mb-8">
{{ page.title }}
</h1>
</header>
<p>
{{ page.perex }}
</p>
{% for block in page.content %}
{% include_block block %}
{% endfor %}
</section>
</div>
{% endblock %}
{% extends "styleguide2/search_page.html" %}
{% block navbar %}
{% include 'styleguide2/includes/organisms/layout/district/navbar.html' with selected_item=page.get_menu_title %}
{% endblock %}
{% extends "district/base.html" %}
{% load wagtailroutablepage_tags %}
{% block content %}
{% routablepageurl page "tags" as articles_tag_page_url %}
<h1 class="head-alt-md md:head-alt-lg max-w-5xl mb-4">
{% if tag %}{{ page.title }} "{{ tag.name }}"{% else %}Výběr z článků{% endif %}
</h1>
<div class="space-y-8">
<div class="article-card-list grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 lg:gap-8">
{% for a in article_page_list %}
{% include "shared/article_preview.html" with article=a %}
{% endfor %}
</div>
{% include 'styleguide/2.3.x/pagination.html' with page_url=articles_tag_page_url paginator=article_page_list %}
<div>
<h2 class="head-heavy-base mb-4">Další štítky</h2>
<nav class="inline-block-nogap">
{% for tag in tag_list %}
<a
href="{{ articles_tag_page_url }}?tag={{ tag.slug }}"
class="btn btn--condensed font-light text-sm btn--grey-{% if tag.slug == request.GET.tag %}500{% else %}125{% endif %} btn--hoveractive mr-1 mb-1 inline-block"
>
<div class="btn__body ">{{ tag.name }} ({{ tag.count }})</div>
</a>
{% endfor %}
</nav>
</div>
</div>
{% endblock %}
from django import template
from django.db import models
register = template.Library()
@register.filter
def get_block_octopus_person_list(block):
from district.models import DistrictOctopusPersonPage
filter = (
models.Q(originating_groups__name=block.value["group_shortcut"])
if "group_shortcut" in block.value
else (
models.Q(
originating_teams__name=block.value["team_shortcut"],
originating_role__in=block.value["roles"].split(","),
)
if block.value["roles"]
else models.Q(originating_teams__name=block.value["team_shortcut"])
)
)
return (
DistrictOctopusPersonPage.objects.filter(filter)
.order_by("person__order", "title")
# Hacky, but should work all of the time with our current members.
.distinct("person__order", "title")
.live()
.all()
)
from django.templatetags.static import static
from django.utils.html import format_html
from wagtail import hooks
from district.models import DistrictCenterPage, DistrictHomePage
@hooks.register("after_copy_page")
def handle_copy_calendar(request, origin_page, copied_page):
if (
isinstance(copied_page, DistrictHomePage)
or isinstance(copied_page, DistrictCenterPage)
) and origin_page.specific.calendar_id:
# get current calendar from origin page
calendar = origin_page.specific.calendar
# create copy of calendar
calendar.pk = None
calendar.save()
# set new copy of calendar
copied_page.calendar_id = calendar.id
copied_page.save()
@hooks.register("insert_global_admin_css", order=100)
def global_admin_css():
return format_html(
'<link rel="stylesheet" href="{}">',
static("district/css/district_custom_admin.css"),
)
......@@ -6,7 +6,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
......@@ -49,7 +48,9 @@ class Migration(migrations.Migration):
),
),
],
options={"verbose_name": "Krajský rozcestník",},
options={
"verbose_name": "Krajský rozcestník",
},
bases=(
wagtailmetadata.models.MetadataMixin,
"wagtailcore.page",
......
# Generated by Django 4.0.3 on 2022-04-27 13:27
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("districts", "0001_initial"),
]
operations = [
migrations.AddField(
model_name="districtshomepage",
name="title_suffix",
field=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",
),
),
]
# Generated by Django 5.0.6 on 2024-06-13 10:02
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("districts", "0002_districtshomepage_title_suffix"),
]
operations = [
migrations.AlterField(
model_name="districtshomepage",
name="title_suffix",
field=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', výsledný titulek bude 'Kontakt | Piráti MS Pardubice'. Pokud příponu nevyplníte, použije se název domovské stránky a text 'Piráti', např. 'Kontakt | Piráti Pardubice'.",
max_length=100,
null=True,
verbose_name="Přípona titulku stránky",
),
),
]
# Generated by Django 5.0.6 on 2024-07-02 06:13
from django.db import migrations, models
def prefill_title_suffix(apps, schema_editor):
DistrictsHomePage = apps.get_model("districts", "DistrictsHomePage")
for page in DistrictsHomePage.objects.all():
page.meta_title_suffix = page.title_suffix
page.save()
class Migration(migrations.Migration):
dependencies = [
("districts", "0003_alter_districtshomepage_title_suffix"),
]
operations = [
migrations.AddField(
model_name="districtshomepage",
name="meta_title_suffix",
field=models.CharField(
blank=True,
help_text='Umožňuje přidat příponu k titulku stránky běžně zobrazovanému na záložce s touto stránkou. Pokud vyplníš například "Piráti Pardubicko", záložka s kontakty bude nadepsaná "Kontakty | Piráti Pardubicko".',
max_length=100,
null=True,
verbose_name="Přípona meta titulku stránky",
),
),
migrations.AlterField(
model_name="districtshomepage",
name="title_suffix",
field=models.CharField(
blank=True,
help_text='Umožňuje přidat příponu k názvu stránky. Pokud vyplníš například "Pardubicko", v levém horním rohu bude logo Pirátské strany a text "| Pardubicko".',
max_length=100,
null=True,
verbose_name="Přípona názvu stránky",
),
),
migrations.RunPython(prefill_title_suffix),
]
from django.db import models
from django.utils.translation import gettext_lazy
from wagtail.admin.edit_handlers import FieldPanel, HelpPanel, MultiFieldPanel
from wagtail.core.models import Page
from wagtail.images.edit_handlers import ImageChooserPanel
from wagtail.admin.panels import CommentPanel, FieldPanel, HelpPanel, MultiFieldPanel
from wagtail.models import Page
from wagtailmetadata.models import MetadataPageMixin
from tuning import help
from shared.models import ExtendedMetadataHomePageMixin
from tuning import admin_help
class DistrictsHomePage(MetadataPageMixin, Page):
class DistrictsHomePage(ExtendedMetadataHomePageMixin, MetadataPageMixin, Page):
### FIELDS
matomo_id = models.IntegerField(
......@@ -22,8 +22,8 @@ class DistrictsHomePage(MetadataPageMixin, Page):
[
FieldPanel("seo_title"),
FieldPanel("search_description"),
ImageChooserPanel("search_image"),
HelpPanel(help.build(help.IMPORTANT_TITLE)),
FieldPanel("search_image"),
HelpPanel(admin_help.build(admin_help.IMPORTANT_TITLE)),
],
gettext_lazy("Common page configuration"),
),
......@@ -31,6 +31,9 @@ class DistrictsHomePage(MetadataPageMixin, Page):
settings_panels = [
FieldPanel("matomo_id"),
FieldPanel("title_suffix"),
FieldPanel("meta_title_suffix"),
CommentPanel(),
]
### RELATIONS
......
......@@ -2,6 +2,9 @@
<!doctype html>
<html lang="cs">
<head>
{% if request.in_preview_panel %}
<base target="_blank">
{% endif %}
<!-- Font loader -->
<script type="text/javascript">
......@@ -71,7 +74,14 @@
<div class="container">
<div class="row">
<div class="col-12 col-md-6 mb-3 mb-md-0">
<p class="mb-0">&copy; {% now "Y" %} Piráti. Všechna práva vyhlazena.<br/>Sdílejte a nechte ostatní sdílet za stejných podmínek.</p>
<p class="mb-0">
<span class="inline-block" style="transform: scale(-1, 1);">&copy;</span>
{% now "Y" %} Piráti. <a href="https://wiki.pirati.cz/rules/prah#licence" target="_blank" class="underline">CC-BY-SA 4.0</a>.<br>
<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><!-- /row -->
</div><!-- /container -->
......
......@@ -11,9 +11,9 @@
<div class="region-map col-xl-7 col-lg-8 d-none d-md-block">
<svg height="400" width="600" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
{# <a href="https://praha.pirati.cz"> #}
<a href="https://praha.pirati.cz">
<path data-info="Praha" d="M256.167,247.61L263.167,244.11L265.83399999999995,245.61C265.83399999999995,245.61,270.00299999999993,246.41500000000002,270.5009999999999,245.943S269.33399999999995,241.61,269.33399999999995,241.61L272.33399999999995,239.77700000000002L276.5009999999999,240.61L281.1679999999999,238.11L283.6679999999999,234.77700000000002L289.1679999999999,234.94400000000002L290.5009999999999,237.27700000000002L293.6679999999999,238.27700000000002L294.6679999999999,239.77700000000002L298.33499999999987,238.94400000000002L297.33499999999987,242.61100000000002L302.1679999999999,243.77800000000002L304.33499999999987,247.27800000000002H307.50199999999984L310.50199999999984,251.11100000000002L310.00199999999984,254.11100000000002L305.1689999999998,254.61100000000002L301.8359999999998,256.944L304.1689999999998,258.944L304.6689999999998,264.111L301.1689999999998,267.27799999999996L297.1689999999998,264.611L292,263.944L289.5,266.444L284.833,267.611L282.16600000000005,271.444L278.4990000000001,271.611L274.9990000000001,273.27799999999996L273.9990000000001,275.94499999999994L269.4990000000001,276.94499999999994L266.16600000000005,273.27799999999996L267.833,267.94499999999994L263.16600000000005,265.6119999999999L264.4990000000001,262.6119999999999L260.66600000000005,260.1119999999999L257.66600000000005,255.7789999999999L259.9990000000001,252.2789999999999L256.167,247.61Z" transform="matrix(0.75,0,0,0.75,0,0)" stroke-width="1.3333333333333333" />
{# </a> #}
</a>
<a href="https://jihocesky.pirati.cz">
<path data-info="Jihočeský" d="M173.5,445.61L179.5,447.36L185.61599999999999,452.692L184.61599999999999,455.789L188.963,462.31L196.57,463.669L198.743,470.46099999999996L203.905,477.25299999999993L206.079,483.50199999999995L211.78400000000002,483.77299999999997L221.56500000000003,493.01L226.72700000000003,494.911L232.43333330000002,501.704L228.35800000000003,506.051L237.32400000000004,515.0169999999999H247.64800000000005L257.97200000000004,516.9179999999999L266.39400000000006,521.8089999999999L278.34800000000007,511.75599999999986L280.79300000000006,505.50799999999987L287.0420000000001,510.9419999999999L293.83400000000006,512.2999999999998L299.2680000000001,510.94199999999984L308.2340000000001,516.9189999999999L311.7660000000001,511.2139999999999L310.68000000000006,505.77999999999986L311.76700000000005,496.54299999999984L319.3740000000001,490.29499999999985L322.09100000000007,482.4159999999998L329.1550000000001,482.68699999999984L338.9360000000001,485.67499999999984L340.5660000000001,482.68699999999984L338.1210000000001,478.33999999999986L339.4790000000001,472.36199999999985L341.9240000000001,465.02599999999984L341.1090000000001,455.5169999999998L340.5660000000001,445.4639999999998L343.5540000000001,439.75899999999984L352.5200000000001,442.74699999999984L360.1270000000001,444.3779999999998L362.5720000000001,452.5279999999998L374.2550000000001,449.8109999999998L377.5150000000001,445.4629999999998L385.3940000000001,445.7349999999998L397.3490000000001,451.9829999999998L401.4240000000001,453.88499999999976L405.5010000000001,459.85699999999974L408.7510000000001,452.85699999999974L404.7510000000001,446.60699999999974L400.2510000000001,442.60699999999974L405.7510000000001,436.85699999999974L406.7510000000001,430.60699999999974L412.0010000000001,429.60699999999974L412.7510000000001,425.10699999999974L405.5010000000001,419.35699999999974L398.5010000000001,420.85699999999974L390.0010000000001,420.60699999999974L383.5010000000001,414.10699999999974L384.5010000000001,408.60699999999974L381.2510000000001,404.10699999999974L374.0010000000001,405.35699999999974L366.0010000000001,402.35699999999974L361.0010000000001,405.10699999999974L355.5010000000001,400.10699999999974L352.7510000000001,395.10699999999974L346.5010000000001,391.60699999999974L341.7510000000001,394.35699999999974L336.2510000000001,389.85699999999974L333.5010000000001,384.85699999999974L334.7510000000001,380.35699999999974L332.0010000000001,374.60699999999974V366.85699999999974L335.0010000000001,363.10699999999974L335.2510000000001,356.10699999999974L333.5010000000001,349.60699999999974L330.2510000000001,344.85699999999974L328.0010000000001,339.35699999999974L323.7510000000001,339.85699999999974L316.0010000000001,333.35699999999974L310.7510000000001,337.10699999999974L312.2510000000001,344.85699999999974L305.7510000000001,348.35699999999974L302.2510000000001,352.35699999999974L295.0010000000001,349.35699999999974L287.0010000000001,347.35699999999974L282.5010000000001,348.10699999999974L276.0010000000001,345.10699999999974L269.7510000000001,348.85699999999974C269.7510000000001,348.85699999999974,266.10300000000007,348.62199999999973,265.5010000000001,348.60699999999974S261.5010000000001,343.60699999999974,261.5010000000001,343.60699999999974H255.5010000000001L252.5010000000001,347.35699999999974L239.0010000000001,348.85699999999974L235.2510000000001,344.85699999999974H230.5010000000001L227.7510000000001,349.60699999999974L220.7510000000001,353.10699999999974L216.2510000000001,350.85699999999974L202.5010000000001,350.35699999999974L199.7510000000001,354.35699999999974L201.2510000000001,359.85699999999974V364.35699999999974L200.5010000000001,372.10699999999974L204.0010000000001,377.85699999999974L199.5010000000001,384.85699999999974L196.0010000000001,387.60699999999974V391.35699999999974L193.0010000000001,394.10699999999974L196.7510000000001,398.35699999999974L192.0010000000001,400.85699999999974L195.0010000000001,406.85699999999974L192.5010000000001,412.85699999999974L186.5010000000001,415.10699999999974L185.0010000000001,417.85699999999974L180.5010000000001,416.35699999999974L179.2510000000001,426.10699999999974L181.7510000000001,430.10699999999974L180.5010000000001,433.60699999999974L175.2510000000001,435.85699999999974L173.57600000000008,441.83199999999977L173.5,445.61Z" transform="matrix(0.75,0,0,0.75,0,0)" stroke-width="1.3333333333333333" />
</a>
......@@ -60,18 +60,18 @@
<div class="row">
<div class="col-6">
<ul class="region-list mt-4">
{# <li><a href="https://praha.pirati.cz">Praha</a></li> #}
<li><a href="https://praha.pirati.cz">Praha</a></li>
<li><a href="https://jihocesky.pirati.cz">Jihočeský</a></li>
<li><a href="https://jihomoravsky.pirati.cz">Jihomoravský</a></li>
<li><a href="https://karlovarsky.pirati.cz">Karlovarský</a></li>
<li><a href="https://kralovehradecky.pirati.cz">Královéhradecký</a></li>
<li><a href="https://liberecky.pirati.cz">Liberecký</a></li>
<li><a href="https://moravskoslezsky.pirati.cz">Moravskoslezský</a></li>
<li><a href="https://olomoucky.pirati.cz">Olomoucký</a></li>
</ul>
</div>
<div class="col-6">
<ul class="region-list mt-4">
<li><a href="https://olomoucky.pirati.cz">Olomoucký</a></li>
<li><a href="https://pardubicky.pirati.cz">Pardubický</a></li>
<li><a href="https://plzensky.pirati.cz">Plzeňský</a></li>
<li><a href="https://stredocesky.pirati.cz">Středočeský</a></li>
......
from wagtail.blocks import (
CharBlock,
DateBlock,
IntegerBlock,
ListBlock,
PageChooserBlock,
RichTextBlock,
StructBlock,
URLBlock,
)
from wagtail.images.blocks import ImageChooserBlock
from donate.constants import RICH_TEXT_FEATURES
from shared_legacy.blocks import MenuItemBlock as MenuItemBlockBase
class MenuItemBlock(MenuItemBlockBase):
class Meta:
label = "Položka v menu"
template = "donate/blocks/menu_item.html"
class MenuParentBlock(StructBlock):
title = CharBlock(label="Titulek", required=True)
menu_items = ListBlock(MenuItemBlock(), label="Položky menu")
class Meta:
label = "Podmenu"
template = "donate/blocks/navbar_submenu.html"
class CustomLinkBlock(StructBlock):
text = CharBlock(label="Nadpis")
url = URLBlock(label="Odkaz")
class Meta:
label = "Extra odkaz"
class ProjectIndexBlock(StructBlock):
page = PageChooserBlock(
label="Stránka se seznamem",
page_type="donate.DonateProjectIndexPage",
)
class Meta:
template = "donate/blocks/project_index_block.html"
label = "Seznam projektů"
class DistrictDonationBlock(StructBlock):
heading = CharBlock(label="Nadpis")
description = RichTextBlock(label="Obsah", features=RICH_TEXT_FEATURES)
class Meta:
template = "donate/blocks/district_donation_block.html"
label = "Podpora krajů"
class PartySupportFormBlock(StructBlock):
heading = CharBlock(label="Nadpis")
description = RichTextBlock(label="Obsah", features=RICH_TEXT_FEATURES)
image = ImageChooserBlock(label="Obrázek")
class Meta:
template = "donate/blocks/party_support_form_block.html"
label = "Podpoř stranu"
class CrowdfundingRewardBlock(StructBlock):
title = CharBlock(label="Název odměny")
description = CharBlock(label="Popis", max_length=255, required=False)
amount = IntegerBlock(label="Částka")
image = ImageChooserBlock(label="Obrázek")
delivery_date = DateBlock(label="Datum dodání", required=False)
reward_id = IntegerBlock(
label="ID odměny",
required=True,
)
variant_list = ListBlock(
CharBlock(label="Varianta", max_length=12, help_text="Například velikost: S"),
label="Varianty",
)
class Meta:
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_legacy.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)
)
......@@ -2,29 +2,48 @@ import urllib.parse
from django import forms
from django.conf import settings
from django.utils.text import slugify
class DonateForm(forms.Form):
CUSTOM_AMOUNT = -1
DEFAULT_CUSTOM_AMOUNT = 1000
ALLOWED_PERIODICITY = [730, 99999]
PORTAL_ID_IN_SELECT = -1
amount = forms.IntegerField()
amount = forms.IntegerField(required=False)
crowdfunding = forms.IntegerField(required=False)
custom_amount = forms.IntegerField(required=False)
periodicity = forms.IntegerField()
portal_project_id = forms.IntegerField()
product = forms.CharField(required=False)
select_portal_project_id = forms.IntegerField(required=False)
def clean_periodicity(self):
value = self.cleaned_data["periodicity"]
if value not in self.ALLOWED_PERIODICITY:
raise forms.ValidationError("Wrong periodicity!")
if self.cleaned_data["crowdfunding"] and value != 99999:
raise forms.ValidationError("Wrong periodicity!")
return value
def clean(self):
cleaned_data = super().clean()
if (
cleaned_data["portal_project_id"] == self.PORTAL_ID_IN_SELECT
and cleaned_data["select_portal_project_id"] is None
):
raise forms.ValidationError("Není zadán účel daru.")
if not cleaned_data["amount"] and not cleaned_data["custom_amount"]:
raise forms.ValidationError("Nebyla zadána částka.")
if cleaned_data["crowdfunding"] and not cleaned_data["product"]:
raise forms.ValidationError("Nebyla zadána produkt.")
if cleaned_data["product"] and not cleaned_data["crowdfunding"]:
raise forms.ValidationError("Nebyla zadána typ odměny.")
return cleaned_data
def get_amount(self):
amount = self.cleaned_data["amount"]
if amount == self.CUSTOM_AMOUNT:
if not amount:
amount = (
abs(self.cleaned_data["custom_amount"]) or self.DEFAULT_CUSTOM_AMOUNT
)
......@@ -32,16 +51,25 @@ class DonateForm(forms.Form):
def get_redirect_url(self):
amount = self.get_amount()
crowdfunding = self.cleaned_data["crowdfunding"]
product = self.cleaned_data["product"]
periodicity = self.cleaned_data["periodicity"]
portal_project_id = self.cleaned_data["portal_project_id"]
if portal_project_id == self.PORTAL_ID_IN_SELECT:
portal_project_id = self.cleaned_data["select_portal_project_id"]
query = urllib.parse.urlencode(
{
query_dict = {
"amount": amount,
"periodicity": periodicity,
"projectAccount": portal_project_id,
"source": settings.DONATE_PORTAL_REDIRECT_SOURCE,
}
)
if crowdfunding:
product = slugify(product)
query_dict.update(crowdfunding=crowdfunding, product=product)
query = urllib.parse.urlencode(query_dict)
return f"{settings.DONATE_PORTAL_REDIRECT_URL}?{query}"