Skip to content
Snippets Groups Projects
Verified Commit f4730658 authored by jan.hamal.dvorak's avatar jan.hamal.dvorak
Browse files

elections2021: Improve banner orders


- Fix legalese
- Add a note field
- Use stable export ordering

Signed-off-by: default avatarJan Hamal Dvořák <mordae@anilinux.org>
parent 85783ee3
Branches
No related tags found
2 merge requests!354elections2021: Improve banner orders,!352elections2021: Improve banner orders
Pipeline #4876 passed
...@@ -6,13 +6,13 @@ from django.db import migrations ...@@ -6,13 +6,13 @@ from django.db import migrations
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('elections2021', '0039_elections2021mappage_subtitle'), ("elections2021", "0039_elections2021mappage_subtitle"),
] ]
operations = [ operations = [
migrations.RenameField( migrations.RenameField(
model_name='bannerorder', model_name="bannerorder",
old_name='place_of_birth', old_name="place_of_birth",
new_name='residency', new_name="residency",
), ),
] ]
...@@ -6,17 +6,25 @@ from django.db import migrations, models ...@@ -6,17 +6,25 @@ from django.db import migrations, models
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('elections2021', '0040_rename_place_of_birth_bannerorder_residency'), ("elections2021", "0040_rename_place_of_birth_bannerorder_residency"),
] ]
operations = [ operations = [
migrations.CreateModel( migrations.CreateModel(
name='Token', name="Token",
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), (
('scope', models.CharField(max_length=127)), "id",
('bearer', models.CharField(max_length=40)), models.AutoField(
('comment', models.CharField(max_length=255)), auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("scope", models.CharField(max_length=127)),
("bearer", models.CharField(max_length=40)),
("comment", models.CharField(max_length=255)),
], ],
), ),
] ]
# Generated by Django 3.2.5 on 2021-08-18 14:19
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("elections2021", "0041_token"),
]
operations = [
migrations.AddField(
model_name="bannerorder",
name="note",
field=models.CharField(blank=True, max_length=255),
),
]
...@@ -2477,6 +2477,7 @@ class BannerOrder(models.Model): ...@@ -2477,6 +2477,7 @@ class BannerOrder(models.Model):
date_of_birth = models.DateField() date_of_birth = models.DateField()
phone = models.CharField(max_length=20) phone = models.CharField(max_length=20)
email = models.EmailField(max_length=70) email = models.EmailField(max_length=70)
note = models.CharField(max_length=255, blank=True)
class BannerForm(forms.ModelForm): class BannerForm(forms.ModelForm):
...@@ -2490,6 +2491,7 @@ class BannerForm(forms.ModelForm): ...@@ -2490,6 +2491,7 @@ class BannerForm(forms.ModelForm):
"date_of_birth", "date_of_birth",
"phone", "phone",
"email", "email",
"note",
] ]
......
...@@ -70,8 +70,9 @@ ...@@ -70,8 +70,9 @@
<p class="my-5"> <p class="my-5">
Pokud nám pomůžete v&nbsp;kampani vyvěšením venkovní reklamy, Pokud nám pomůžete v&nbsp;kampani vyvěšením venkovní reklamy,
musíme o&nbsp;tomto Vašem nefinančním daru informovat stát, jedná se o&nbsp;nefinační dar. Výše uvedené informace o&nbsp;vás
který vaše údaje uveřejní. uveřejníme, abychom splnili svou zákonnou povinnost.
Tato data budeme uchovávat 10&nbsp;let od&nbsp;poskytnutí daru.
</p> </p>
<h2 class="head-alt-sm my-5">Kontaktní údaje</h2> <h2 class="head-alt-sm my-5">Kontaktní údaje</h2>
...@@ -95,12 +96,22 @@ ...@@ -95,12 +96,22 @@
<div class="form-field__error">{{error}}</div> <div class="form-field__error">{{error}}</div>
{% endfor %} {% endfor %}
</div> </div>
<div class="form-field col-span-4 form-field-required {% if request.banner_form.errors.note %}form-field--error{% endif %}">
<label class="form-field__label" for="note">Poznámka</label>
<div class="form-field__wrapper form-field__wrapper--shadowed">
<input type="text" class="text-input form-field__control text-black" id="note" name="note" value="{{request.banner_form.note.value|default_if_none:""}}" placeholder="" />
</div>
{% for error in request.banner_form.errors.note %}
<div class="form-field__error">{{error}}</div>
{% endfor %}
</div>
</div> </div>
<p class="my-5"> <p class="my-5">
Kontaktní údaje využijí naši koordinátoři k tomu, aby se s vámi Kontaktní údaje využijí naší koordinátoři k tomu,
domluvili na podrobnostech předání. Po skončení této volební kampaně aby se s Vámi domluvili na podrobnostech předání.
vaše kontaktní údaje vymažeme. Po skončení této volební kampaně Vaše kontaktní údaje vymažeme
a&nbsp;to nejpozději k&nbsp;1.&nbsp;1.&nbsp;2022.
</p> </p>
<div class="mt-5 text-center lg:text-right"> <div class="mt-5 text-center lg:text-right">
......
import csv import csv
from .models import BannerOrder, Token
from django.http import HttpResponse, HttpResponseForbidden from django.http import HttpResponse, HttpResponseForbidden
from .models import BannerOrder, Token
def banner_orders_csv(request): def banner_orders_csv(request):
response = HttpResponse(content_type='text/csv;charset=utf-8') response = HttpResponse(content_type="text/csv;charset=utf-8")
tokens = Token.objects.filter(bearer=request.GET.get('token'), scope="banner-orders") tokens = Token.objects.filter(
bearer=request.GET.get("token"), scope="banner-orders"
)
if not tokens: if not tokens:
return HttpResponseForbidden() return HttpResponseForbidden()
w = csv.writer(response) w = csv.writer(response)
w.writerow(["ID", "Plachta", "Jméno", "Příjmení", "Bydliště", "Narozen", "Telefon", "Mail"]) w.writerow(
[
"ID",
"Plachta",
"Jméno",
"Příjmení",
"Bydliště",
"Narozen",
"Telefon",
"Mail",
"Poznámka",
]
)
for row in BannerOrder.objects.all(): for row in BannerOrder.objects.order_by("id").all():
w.writerow([str(row.id), row.code, row.name, row.surname, row.residency, w.writerow(
str(row.date_of_birth), row.phone, row.email]) [
str(row.id),
row.code,
row.name,
row.surname,
row.residency,
str(row.date_of_birth),
row.phone,
row.email,
row.note,
]
)
return response return response
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment