Skip to content
Snippets Groups Projects
Commit e180d205 authored by jan.bednarik's avatar jan.bednarik
Browse files

donate: Customizable amounts for home page and projects

parent 296d5f9d
No related branches found
No related tags found
2 merge requests!165Release,!164Dary
Pipeline #2112 passed
# Generated by Django 3.1.3 on 2021-01-15 21:48
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("donate", "0012_auto_20200915_0114"),
]
operations = [
migrations.AddField(
model_name="donatehomepage",
name="form_amount_1",
field=models.IntegerField(default=100, verbose_name="pevná částka 1"),
),
migrations.AddField(
model_name="donatehomepage",
name="form_amount_2",
field=models.IntegerField(default=200, verbose_name="pevná částka 2"),
),
migrations.AddField(
model_name="donatehomepage",
name="form_amount_3",
field=models.IntegerField(default=500, verbose_name="pevná částka 3"),
),
migrations.AddField(
model_name="donatehomepage",
name="form_preselected",
field=models.IntegerField(
choices=[(1, "první"), (2, "druhá"), (3, "třetí")],
default=1,
verbose_name="výchozí částka",
),
),
migrations.AddField(
model_name="donateregionpage",
name="form_amount_1",
field=models.IntegerField(default=100, verbose_name="pevná částka 1"),
),
migrations.AddField(
model_name="donateregionpage",
name="form_amount_2",
field=models.IntegerField(default=200, verbose_name="pevná částka 2"),
),
migrations.AddField(
model_name="donateregionpage",
name="form_amount_3",
field=models.IntegerField(default=500, verbose_name="pevná částka 3"),
),
migrations.AddField(
model_name="donateregionpage",
name="form_preselected",
field=models.IntegerField(
choices=[(1, "první"), (2, "druhá"), (3, "třetí")],
default=1,
verbose_name="výchozí částka",
),
),
]
......@@ -65,6 +65,29 @@ class DonateFormMixin(models.Model):
return bool(self.portal_project_id)
class DonateFormAmountsMixin(models.Model):
"""Amounts setup for donate forms."""
FIRST = 1
SECOND = 2
THIRD = 3
FORM_CHOICES = [
(FIRST, "první"),
(SECOND, "druhá"),
(THIRD, "třetí"),
]
form_amount_1 = models.IntegerField("pevná částka 1", default=100)
form_amount_2 = models.IntegerField("pevná částka 2", default=200)
form_amount_3 = models.IntegerField("pevná částka 3", default=500)
form_preselected = models.IntegerField(
"výchozí částka", default=FIRST, choices=FORM_CHOICES
)
class Meta:
abstract = True
def get_url(page, dest_page_type):
try:
return page.get_children().type(dest_page_type).live().first().get_url()
......@@ -72,7 +95,7 @@ def get_url(page, dest_page_type):
return "#"
class DonateHomePage(DonateFormMixin, Page, MetadataPageMixin):
class DonateHomePage(DonateFormMixin, DonateFormAmountsMixin, Page, MetadataPageMixin):
### FIELDS
# lead section
......@@ -155,7 +178,16 @@ class DonateHomePage(DonateFormMixin, Page, MetadataPageMixin):
"sociální sítě",
),
FieldPanel("matomo_id"),
FieldPanel("portal_project_id"),
MultiFieldPanel(
[
FieldPanel("portal_project_id"),
FieldPanel("form_amount_1"),
FieldPanel("form_amount_2"),
FieldPanel("form_amount_3"),
FieldPanel("form_preselected"),
],
"nastavení darů",
),
]
### RELATIONS
......@@ -247,7 +279,9 @@ class DonateRegionIndexPage(Page, SubpageMixin, MetadataPageMixin):
return context
class DonateRegionPage(DonateFormMixin, Page, SubpageMixin, MetadataPageMixin):
class DonateRegionPage(
DonateFormMixin, DonateFormAmountsMixin, Page, SubpageMixin, MetadataPageMixin
):
### FIELDS
main_title = models.CharField("hlavní nadpis na stránce", max_length=250)
......@@ -279,7 +313,18 @@ class DonateRegionPage(DonateFormMixin, Page, SubpageMixin, MetadataPageMixin):
),
]
settings_panels = [FieldPanel("portal_project_id")]
settings_panels = [
MultiFieldPanel(
[
FieldPanel("portal_project_id"),
FieldPanel("form_amount_1"),
FieldPanel("form_amount_2"),
FieldPanel("form_amount_3"),
FieldPanel("form_preselected"),
],
"nastavení darů",
),
]
### RELATIONS
......@@ -351,16 +396,9 @@ class DonateProjectIndexPage(Page, SubpageMixin, MetadataPageMixin):
return context
class DonateProjectPage(DonateFormMixin, Page, SubpageMixin, MetadataPageMixin):
FIRST = 1
SECOND = 2
THIRD = 3
FORM_CHOICES = [
(FIRST, "první"),
(SECOND, "druhá"),
(THIRD, "třetí"),
]
class DonateProjectPage(
DonateFormMixin, DonateFormAmountsMixin, Page, SubpageMixin, MetadataPageMixin
):
### FIELDS
date = models.DateField("běží od")
......@@ -384,12 +422,6 @@ class DonateProjectPage(DonateFormMixin, Page, SubpageMixin, MetadataPageMixin):
)
expected_amount = models.IntegerField("očekávaná částka", blank=True, null=True)
donated_amount = models.IntegerField("vybraná částka", blank=True, null=True)
form_amount_1 = models.IntegerField("pevná částka 1", default=100)
form_amount_2 = models.IntegerField("pevná částka 2", default=200)
form_amount_3 = models.IntegerField("pevná částka 3", default=500)
form_preselected = models.IntegerField(
"výchozí částka", default=FIRST, choices=FORM_CHOICES
)
# we will use photo as search image
search_image = None
......
......@@ -69,22 +69,7 @@
<div class="form-group row mb-4 align-items-center">
<legend class="col-form-label col-md-4 col-form-label-lg">Částka</legend>
<div class="col-md-8">
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount1" name="amount" value="200" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="amount1">200 Kč</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount2" name="amount" value="500" class="custom-control-input" checked required>
<label class="custom-control-label col-form-label-lg" for="amount2">500 Kč</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount3" name="amount" value="1000" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="amount3">1000 Kč</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>
</div>
{% include "donate/form_amounts_snippet.html" %}
</div>
</div>
<div class="form-group row mb-4 align-items-center" id="js-custom-amount-input" style="display: none;">
......
......@@ -99,22 +99,7 @@
<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="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount1" name="amount" value="{{ page.form_amount_1 }}" class="custom-control-input"{% if 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 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 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="-1" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="amount4">Jiná částka</label>
</div>
{% include "donate/form_amounts_snippet.html" %}
</div>
</div>
<div class="form-group row mb-2 align-items-center" id="js-custom-amount-input" style="display: none;">
......
......@@ -56,22 +56,7 @@
<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="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount1" name="amount" value="200" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="amount1">200 Kč</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount2" name="amount" value="500" class="custom-control-input" checked>
<label class="custom-control-label col-form-label-lg" for="amount2">500 Kč</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="amount3" name="amount" value="1000" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="amount3">1000 Kč</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>
</div>
{% include "donate/form_amounts_snippet.html" %}
</div>
</div>
<div class="form-group row mb-2 align-items-center" id="js-custom-amount-input" style="display: none;">
......
<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 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 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 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="-1" class="custom-control-input">
<label class="custom-control-label col-form-label-lg" for="amount4">Jiná částka</label>
</div>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment