More data in payment form.
authorRadek Czajka <rczajka@rczajka.pl>
Fri, 30 Jul 2021 12:54:01 +0000 (14:54 +0200)
committerRadek Czajka <rczajka@rczajka.pl>
Fri, 30 Jul 2021 12:54:01 +0000 (14:54 +0200)
22 files changed:
requirements/requirements.txt
src/club/admin.py
src/club/forms.py
src/club/locale/de/LC_MESSAGES/django.po
src/club/locale/en/LC_MESSAGES/django.po
src/club/locale/es/LC_MESSAGES/django.po
src/club/locale/fr/LC_MESSAGES/django.po
src/club/locale/it/LC_MESSAGES/django.po
src/club/locale/lt/LC_MESSAGES/django.po
src/club/locale/pl/LC_MESSAGES/django.mo
src/club/locale/pl/LC_MESSAGES/django.po
src/club/locale/ru/LC_MESSAGES/django.po
src/club/locale/uk/LC_MESSAGES/django.po
src/club/migrations/0032_auto_20210730_1104.py [new file with mode: 0644]
src/club/migrations/0033_auto_20210730_1145.py [new file with mode: 0644]
src/club/migrations/0034_auto_20210730_1407.py [new file with mode: 0644]
src/club/migrations/0035_schedule_postal_town.py [new file with mode: 0644]
src/club/migrations/0036_auto_20210730_1437.py [new file with mode: 0644]
src/club/models.py
src/club/static/club/club.scss
src/club/templates/club/payment_form.html
src/wolnelektury/settings/apps.py

index 1e0c944..42e2634 100644 (file)
@@ -17,6 +17,7 @@ djangorestframework==3.9.4
 djangorestframework-xml
 django-admin-ordering==0.10.0
 django-machina==1.0.2
+django-countries==7.2.1
 
 # A version compatible with Django 2.2, with long help text and editable max_length.
 -e git+https://github.com/rczajka/django-forms-builder@8ec4022f2a185658b4b23c3d020e0d5c3cb88774#egg=django-forms-builder
index 4d65c3c..1f3c837 100644 (file)
@@ -61,6 +61,7 @@ class ScheduleAdmin(admin.ModelAdmin):
     ]
     search_fields = ['email']
     list_filter = ['is_cancelled', 'monthly', 'yearly', 'method', PayedFilter, ExpiredFilter, 'source']
+    filter_horizontal = ['consent']
     date_hierarchy = 'started_at'
     raw_id_fields = ['membership']
     inlines = [PayUOrderInline, PayUCardTokenInline]
@@ -159,3 +160,13 @@ class DirectDebitAdmin(admin.ModelAdmin):
         'amount'
     ]
     
+
+@admin.register(models.Consent)
+class ConsentAdmin(admin.ModelAdmin):
+    list_display = ['text', 'order', 'active', 'required']
+
+    def get_readonly_fields(self, request, obj=None):
+        if obj:
+            return ['text']
+        else:
+            return []
index d1bebe8..fe38c7b 100644 (file)
@@ -10,21 +10,72 @@ from .payu.forms import CardTokenForm
 
 
 class ScheduleForm(forms.ModelForm, NewsletterForm):
-    data_processing = '''Administratorem danych osobowych jest Fundacja Nowoczesna Polska (ul. Marszałkowska 84/92 lok. 125, 00-514 Warszawa). Podanie danych osobowych jest dobrowolne, ale konieczne do przeprowadzenia wpłaty. Dane są przetwarzane w zakresie niezbędnym do zaksięgowania darowizny i przekazywania Tobie powiadomień dotyczących wpłaty, a także wysyłania Tobie wiadomości mailowych promujących zbiórki i inne formy wsparcia Fundacji. W przypadku wyrażenia dodatkowej zgody adres e-mail zostanie wykorzystany także w zakresie niezbędnym do wysyłania newslettera odbiorcom. Osobom, których dane są zbierane, przysługuje prawo dostępu do treści swoich danych oraz ich poprawiania.'''
+    data_processing = '''Informacja o przetwarzaniu danych osobowych
+
+<div class='more-expand'>Administratorem Twoich danych osobowych jest Fundacja Nowoczesna Polska z siedzibą w Warszawie, przy ul. Marszałkowskiej 84/92 lok.125, 00-514 Warszawa (dalej: Fundacja).
+
+Z Fundacją można się kontaktować we wszystkich sprawach dotyczących przetwarzania danych osobowych oraz korzystania z praw związanych z przetwarzaniem danych, w szczególności w zakresie wycofania udzielonej zgody na przetwarzanie danych poprzez adres e-mail fundacja@nowoczesnapolska.org.pl, telefonicznie pod numerem +48 22 621 30 17 (w dni powszednie w godz. 9-17) lub listownie pisząc na adres siedziby Fundacji.
+Podanie danych osobowych jest dobrowolne, jednak konieczne do przeprowadzenia płatności oraz realizacji innych celów wskazanych poniżej.
+
+Twoje dane będą przetwarzane w celu:
+    • rozliczeniowym, księgowym, i innych sprawach związanych z Twoją darowizną na podstawie art. 6 ust. 1 lit. b i c RODO,
+    • kontaktu telefonicznego, przez media elektroniczne oraz listownie, celem informowania o działalności oraz prośby o wsparcie na podstawie art. 6 ust. 1 lit. a,
+    • przesyłania e-mailem newslettera: regularnej informacji o działalności fundacji oraz próśb o wsparcie na podstawie art. 6 ust. 1 lit. a RODO,
+    • ewentualnego ustalenia i dochodzenia roszczeń lub obrony przed nimi; zapewnienia bezpieczeństwa u Administratora oraz realizacji wewnętrznych celów administracyjnych, analitycznych i statystycznych na podstawie art. 6 ust. 1 lit. f RODO; uzasadnionym interesem Administratora jest możliwość obrony przed ewentualnymi roszczeniami, zapewnienia bezpieczeństwa u Administratora oraz możliwość realizacji wewnętrznych celów administracyjnych, analitycznych i statystycznych przez Fundację.
+
+Fundacja nie udostępnia Twoich danych osobowych podmiotom trzecim. Fundacja może korzystać z usług podwykonawców w celu realizacji kontaktu w ramach wyrażonej zgody. W szczególności Twoje dane mogą być przekazywane podmiotom takim jak banki, firma obsługująca księgowość i firmy współpracujące przy prowadzeniu akcji informacyjnych i edukacyjnych – przy czym takie podmioty przetwarzają dane wyłącznie na podstawie umowy z administratorem, wyłącznie zgodnie z poleceniami administratora i wyłącznie zgodnie z zakresem udzielonej zgody.
+
+Twoje dane osobowe będą przechowywane do momentu wycofania zgody, rozliczenia darowizn, a po tym okresie przez okres przedawnienia ewentualnych roszczeń lub przez okres, który wynika z przepisów prawa, w szczególności obowiązku przechowywania dokumentów księgowych (rachunkowych).
+
+Przysługuje Ci prawo dostępu do Twoich danych oraz prawo żądania ich sprostowania, ich usunięcia lub ograniczenia ich przetwarzania. W zakresie, w jakim podstawą przetwarzania Twoich danych osobowych jest przesłanka prawnie uzasadnionego interesu administratora, przysługuje Ci prawo wniesienia sprzeciwu wobec przetwarzania Twoich danych osobowych. W zakresie, w jakim podstawą przetwarzania Twoich danych osobowych jest zgoda, masz prawo wycofania zgody. Wycofanie zgody nie ma wpływu na zgodność z prawem przetwarzania, którego dokonano na podstawie zgody przed jej wycofaniem. W celu skorzystania z powyższych praw należy skontaktować się z fundacją w dowolny wskazany powyżej sposób.
+
+Masz prawo do wniesienia skargi do organu nadzorczego, jeżeli uważasz, że Twoje dane osobowe są przetwarzane w niewłaściwy sposób.
+
+Twoje dane osobowe nie będą profilowane, ani przesyłane do państw trzecich i organizacji międzynarodowych.
+
+</div>
+'''.replace('\n', '<br>')
 
     class Meta:
         model = models.Schedule
-        fields = ['monthly', 'amount', 'email', 'method']
+        fields = ['monthly', 'amount',
+                  'first_name', 'last_name',
+                  'email', 'phone',
+                  'postal',
+                  'postal_code', 'postal_town', 'postal_country',
+                  'method']
         widgets = {
             'amount': forms.HiddenInput,
             'monthly': forms.HiddenInput,
             'method': forms.HiddenInput,
+
+            'first_name': forms.TextInput(attrs={"placeholder": _('first name')}),
+            'last_name': forms.TextInput(attrs={"placeholder": _('last name')}),
+
+            'postal': forms.Textarea(attrs={"placeholder": _("If you leave your address, we'll be able to send you a postcard and other gadgets.")}),
+            'postal_code': forms.TextInput(attrs={"placeholder": _('postal code')}),
+            'postal_town': forms.TextInput(attrs={"placeholder": _('town')}),
         }
 
     def __init__(self, referer=None, **kwargs):
         self.referer = referer
         super().__init__(**kwargs)
 
+        self.fields['first_name'].required = True
+        self.fields['last_name'].required = True
+        self.fields['phone'].required = True
+        
+        self.consent = []
+        for c in models.Consent.objects.filter(active=True).order_by('order'):
+            key = f'consent{c.id}'
+            self.fields[key] = forms.BooleanField(
+                label=c.text,
+                required=c.required
+            )
+            self.consent.append((
+                c, key, (lambda k: lambda: self[k])(key)
+            ))
+
     def clean_amount(self):
         value = self.cleaned_data['amount']
         club = models.Club.objects.first()
@@ -51,7 +102,14 @@ class ScheduleForm(forms.ModelForm, NewsletterForm):
     def save(self, *args, **kwargs):
         NewsletterForm.save(self, *args, **kwargs)
         self.instance.source = self.referer or ''
-        return super().save(*args, **kwargs)
+        instance = super().save(*args, **kwargs)
+
+        consents = []
+        for consent, key, consent_field in self.consent:
+            if self.cleaned_data[key]:
+                instance.consent.add(consent)
+
+        return instance
 
 
 class PayUCardTokenForm(CardTokenForm):
index 5842795..a720016 100644 (file)
@@ -29,7 +29,7 @@ msgstr ""
 msgid "Club"
 msgstr ""
 
-#: club/forms.py:32
+#: club/forms.py:70
 #, python-format
 msgid "Minimal amount is %(amount)d PLN."
 msgstr ""
@@ -66,142 +66,214 @@ msgstr ""
 msgid "clubs"
 msgstr ""
 
-#: club/models.py:48
+#: club/models.py:61
 msgid "key"
 msgstr ""
 
-#: club/models.py:49
+#: club/models.py:62
 msgid "email"
 msgstr ""
 
-#: club/models.py:50 club/models.py:143
+#: club/models.py:63 club/models.py:182
 msgid "membership"
 msgstr ""
 
-#: club/models.py:51
+#: club/models.py:64 club/models.py:388
 msgid "amount"
 msgstr ""
 
-#: club/models.py:52 club/templates/club/payment_form.html:21
+#: club/models.py:65
+msgid "method"
+msgstr ""
+
+#: club/models.py:68 club/templates/club/payment_form.html:25
 msgid "monthly"
 msgstr ""
 
-#: club/models.py:53
+#: club/models.py:69
 msgid "yearly"
 msgstr ""
 
-#: club/models.py:55
+#: club/models.py:71
 msgid "source"
 msgstr ""
 
-#: club/models.py:57
+#: club/models.py:73
 msgid "cancelled"
 msgstr ""
 
-#: club/models.py:58
+#: club/models.py:74
 msgid "payed at"
 msgstr ""
 
-#: club/models.py:59
+#: club/models.py:75
 msgid "started at"
 msgstr ""
 
-#: club/models.py:60
+#: club/models.py:76
 msgid "expires_at"
 msgstr ""
 
-#: club/models.py:64
+#: club/models.py:85
 msgid "schedule"
 msgstr ""
 
-#: club/models.py:65
+#: club/models.py:86
 msgid "schedules"
 msgstr ""
 
-#: club/models.py:135
+#: club/models.py:174
 msgid "user"
 msgstr ""
 
-#: club/models.py:136
+#: club/models.py:175
 msgid "created at"
 msgstr ""
 
-#: club/models.py:137 club/models.py:198
+#: club/models.py:176 club/models.py:237
 msgid "name"
 msgstr ""
 
-#: club/models.py:138
+#: club/models.py:177
 msgid "manual"
 msgstr ""
 
-#: club/models.py:139
+#: club/models.py:178
 msgid "notes"
 msgstr ""
 
-#: club/models.py:140
+#: club/models.py:179
 msgid "updated at"
 msgstr ""
 
-#: club/models.py:144
+#: club/models.py:183
 msgid "memberships"
 msgstr ""
 
-#: club/models.py:181
+#: club/models.py:220
 msgid "days before"
 msgstr ""
 
-#: club/models.py:182
+#: club/models.py:221
 msgid "subject"
 msgstr ""
 
-#: club/models.py:183 club/payu/models.py:140
+#: club/models.py:222 club/payu/models.py:140
 msgid "body"
 msgstr ""
 
-#: club/models.py:186
+#: club/models.py:225
 msgid "reminder email"
 msgstr ""
 
-#: club/models.py:187
+#: club/models.py:226
 msgid "reminder emails"
 msgstr ""
 
-#: club/models.py:192
+#: club/models.py:231
 #, python-format
 msgid "a day before expiration"
 msgid_plural "%d days before expiration"
 msgstr[0] ""
 msgstr[1] ""
 
-#: club/models.py:194
+#: club/models.py:233
 #, python-format
 msgid "a day after expiration"
 msgid_plural "%d days after expiration"
 msgstr[0] ""
 msgstr[1] ""
 
-#: club/models.py:199
+#: club/models.py:238
 msgid "photo"
 msgstr ""
 
-#: club/models.py:200
+#: club/models.py:239
 msgid "text"
 msgstr ""
 
-#: club/models.py:203
+#: club/models.py:242
 msgid "ambassador"
 msgstr ""
 
-#: club/models.py:204
+#: club/models.py:243
 msgid "ambassadors"
 msgstr ""
 
-#: club/models.py:235 club/templates/club/index.html:7
+#: club/models.py:274 club/templates/club/index.html:7
 #: club/templates/club/index.html:13 club/templates/club/thanks.html:6
 #: club/templates/payu/rec_payment.html:5
 msgid "Towarzystwo Przyjaciół Wolnych Lektur"
 msgstr ""
 
+#: club/models.py:370
+msgid "first name"
+msgstr ""
+
+#: club/models.py:371
+msgid "last name"
+msgstr ""
+
+#: club/models.py:372
+msgid "sex"
+msgstr ""
+
+#: club/models.py:376
+msgid "date of birth"
+msgstr ""
+
+#: club/models.py:377
+msgid "street"
+msgstr ""
+
+#: club/models.py:378
+msgid "building"
+msgstr ""
+
+#: club/models.py:379
+msgid "flat"
+msgstr ""
+
+#: club/models.py:380
+msgid "town"
+msgstr ""
+
+#: club/models.py:381
+msgid "postal code"
+msgstr ""
+
+#: club/models.py:382
+msgid "phone"
+msgstr ""
+
+#: club/models.py:383
+msgid "e-mail"
+msgstr ""
+
+#: club/models.py:384
+msgid "IBAN"
+msgstr ""
+
+#: club/models.py:385
+msgid "payment identifier"
+msgstr ""
+
+#: club/models.py:386
+msgid "agree newsletter"
+msgstr ""
+
+#: club/models.py:387
+msgid "date"
+msgstr ""
+
+#: club/models.py:391
+msgid "direct debit"
+msgstr ""
+
+#: club/models.py:392
+msgid "direct debits"
+msgstr ""
+
 #: club/payu/models.py:17 club/payu/models.py:29
 msgid "POS id"
 msgstr ""
@@ -360,38 +432,50 @@ msgstr ""
 msgid "transfer"
 msgstr ""
 
-#: club/templates/club/payment_form.html:15
+#: club/templates/club/payment_form.html:18
 msgid "Choose your type of support"
 msgstr ""
 
-#: club/templates/club/payment_form.html:20
+#: club/templates/club/payment_form.html:24
 msgid "one-time"
 msgstr ""
 
-#: club/templates/club/payment_form.html:24
+#: club/templates/club/payment_form.html:28
 msgid "Choose the amount"
 msgstr ""
 
-#: club/templates/club/payment_form.html:32
-#: club/templates/club/payment_form.html:45
+#: club/templates/club/payment_form.html:36
+#: club/templates/club/payment_form.html:49
 msgid "different amount"
 msgstr ""
 
-#: club/templates/club/payment_form.html:51
-msgid "Provide an e-mail address"
+#: club/templates/club/payment_form.html:57
+msgid "Provide contact details"
+msgstr ""
+
+#: club/templates/club/payment_form.html:60
+msgid "E-mail:"
 msgstr ""
 
-#: club/templates/club/payment_form.html:58
+#: club/templates/club/payment_form.html:65
+msgid "Phone number:"
+msgstr ""
+
+#: club/templates/club/payment_form.html:70
+msgid "Postal address:"
+msgstr ""
+
+#: club/templates/club/payment_form.html:87
 msgid "I'd like to receive informations about new publications."
 msgstr ""
 
-#: club/templates/club/payment_form.html:62
+#: club/templates/club/payment_form.html:91
 msgid ""
 "You can unsubscribe at any point. More in the <a target=\"_blank\" href="
 "\"https://nowoczesnapolska.org.pl/prywatnosc/\">privacy policy</a>."
 msgstr ""
 
-#: club/templates/club/payment_form.html:65
+#: club/templates/club/payment_form.html:94
 msgid "Donate"
 msgstr ""
 
index 5842795..a720016 100644 (file)
@@ -29,7 +29,7 @@ msgstr ""
 msgid "Club"
 msgstr ""
 
-#: club/forms.py:32
+#: club/forms.py:70
 #, python-format
 msgid "Minimal amount is %(amount)d PLN."
 msgstr ""
@@ -66,142 +66,214 @@ msgstr ""
 msgid "clubs"
 msgstr ""
 
-#: club/models.py:48
+#: club/models.py:61
 msgid "key"
 msgstr ""
 
-#: club/models.py:49
+#: club/models.py:62
 msgid "email"
 msgstr ""
 
-#: club/models.py:50 club/models.py:143
+#: club/models.py:63 club/models.py:182
 msgid "membership"
 msgstr ""
 
-#: club/models.py:51
+#: club/models.py:64 club/models.py:388
 msgid "amount"
 msgstr ""
 
-#: club/models.py:52 club/templates/club/payment_form.html:21
+#: club/models.py:65
+msgid "method"
+msgstr ""
+
+#: club/models.py:68 club/templates/club/payment_form.html:25
 msgid "monthly"
 msgstr ""
 
-#: club/models.py:53
+#: club/models.py:69
 msgid "yearly"
 msgstr ""
 
-#: club/models.py:55
+#: club/models.py:71
 msgid "source"
 msgstr ""
 
-#: club/models.py:57
+#: club/models.py:73
 msgid "cancelled"
 msgstr ""
 
-#: club/models.py:58
+#: club/models.py:74
 msgid "payed at"
 msgstr ""
 
-#: club/models.py:59
+#: club/models.py:75
 msgid "started at"
 msgstr ""
 
-#: club/models.py:60
+#: club/models.py:76
 msgid "expires_at"
 msgstr ""
 
-#: club/models.py:64
+#: club/models.py:85
 msgid "schedule"
 msgstr ""
 
-#: club/models.py:65
+#: club/models.py:86
 msgid "schedules"
 msgstr ""
 
-#: club/models.py:135
+#: club/models.py:174
 msgid "user"
 msgstr ""
 
-#: club/models.py:136
+#: club/models.py:175
 msgid "created at"
 msgstr ""
 
-#: club/models.py:137 club/models.py:198
+#: club/models.py:176 club/models.py:237
 msgid "name"
 msgstr ""
 
-#: club/models.py:138
+#: club/models.py:177
 msgid "manual"
 msgstr ""
 
-#: club/models.py:139
+#: club/models.py:178
 msgid "notes"
 msgstr ""
 
-#: club/models.py:140
+#: club/models.py:179
 msgid "updated at"
 msgstr ""
 
-#: club/models.py:144
+#: club/models.py:183
 msgid "memberships"
 msgstr ""
 
-#: club/models.py:181
+#: club/models.py:220
 msgid "days before"
 msgstr ""
 
-#: club/models.py:182
+#: club/models.py:221
 msgid "subject"
 msgstr ""
 
-#: club/models.py:183 club/payu/models.py:140
+#: club/models.py:222 club/payu/models.py:140
 msgid "body"
 msgstr ""
 
-#: club/models.py:186
+#: club/models.py:225
 msgid "reminder email"
 msgstr ""
 
-#: club/models.py:187
+#: club/models.py:226
 msgid "reminder emails"
 msgstr ""
 
-#: club/models.py:192
+#: club/models.py:231
 #, python-format
 msgid "a day before expiration"
 msgid_plural "%d days before expiration"
 msgstr[0] ""
 msgstr[1] ""
 
-#: club/models.py:194
+#: club/models.py:233
 #, python-format
 msgid "a day after expiration"
 msgid_plural "%d days after expiration"
 msgstr[0] ""
 msgstr[1] ""
 
-#: club/models.py:199
+#: club/models.py:238
 msgid "photo"
 msgstr ""
 
-#: club/models.py:200
+#: club/models.py:239
 msgid "text"
 msgstr ""
 
-#: club/models.py:203
+#: club/models.py:242
 msgid "ambassador"
 msgstr ""
 
-#: club/models.py:204
+#: club/models.py:243
 msgid "ambassadors"
 msgstr ""
 
-#: club/models.py:235 club/templates/club/index.html:7
+#: club/models.py:274 club/templates/club/index.html:7
 #: club/templates/club/index.html:13 club/templates/club/thanks.html:6
 #: club/templates/payu/rec_payment.html:5
 msgid "Towarzystwo Przyjaciół Wolnych Lektur"
 msgstr ""
 
+#: club/models.py:370
+msgid "first name"
+msgstr ""
+
+#: club/models.py:371
+msgid "last name"
+msgstr ""
+
+#: club/models.py:372
+msgid "sex"
+msgstr ""
+
+#: club/models.py:376
+msgid "date of birth"
+msgstr ""
+
+#: club/models.py:377
+msgid "street"
+msgstr ""
+
+#: club/models.py:378
+msgid "building"
+msgstr ""
+
+#: club/models.py:379
+msgid "flat"
+msgstr ""
+
+#: club/models.py:380
+msgid "town"
+msgstr ""
+
+#: club/models.py:381
+msgid "postal code"
+msgstr ""
+
+#: club/models.py:382
+msgid "phone"
+msgstr ""
+
+#: club/models.py:383
+msgid "e-mail"
+msgstr ""
+
+#: club/models.py:384
+msgid "IBAN"
+msgstr ""
+
+#: club/models.py:385
+msgid "payment identifier"
+msgstr ""
+
+#: club/models.py:386
+msgid "agree newsletter"
+msgstr ""
+
+#: club/models.py:387
+msgid "date"
+msgstr ""
+
+#: club/models.py:391
+msgid "direct debit"
+msgstr ""
+
+#: club/models.py:392
+msgid "direct debits"
+msgstr ""
+
 #: club/payu/models.py:17 club/payu/models.py:29
 msgid "POS id"
 msgstr ""
@@ -360,38 +432,50 @@ msgstr ""
 msgid "transfer"
 msgstr ""
 
-#: club/templates/club/payment_form.html:15
+#: club/templates/club/payment_form.html:18
 msgid "Choose your type of support"
 msgstr ""
 
-#: club/templates/club/payment_form.html:20
+#: club/templates/club/payment_form.html:24
 msgid "one-time"
 msgstr ""
 
-#: club/templates/club/payment_form.html:24
+#: club/templates/club/payment_form.html:28
 msgid "Choose the amount"
 msgstr ""
 
-#: club/templates/club/payment_form.html:32
-#: club/templates/club/payment_form.html:45
+#: club/templates/club/payment_form.html:36
+#: club/templates/club/payment_form.html:49
 msgid "different amount"
 msgstr ""
 
-#: club/templates/club/payment_form.html:51
-msgid "Provide an e-mail address"
+#: club/templates/club/payment_form.html:57
+msgid "Provide contact details"
+msgstr ""
+
+#: club/templates/club/payment_form.html:60
+msgid "E-mail:"
 msgstr ""
 
-#: club/templates/club/payment_form.html:58
+#: club/templates/club/payment_form.html:65
+msgid "Phone number:"
+msgstr ""
+
+#: club/templates/club/payment_form.html:70
+msgid "Postal address:"
+msgstr ""
+
+#: club/templates/club/payment_form.html:87
 msgid "I'd like to receive informations about new publications."
 msgstr ""
 
-#: club/templates/club/payment_form.html:62
+#: club/templates/club/payment_form.html:91
 msgid ""
 "You can unsubscribe at any point. More in the <a target=\"_blank\" href="
 "\"https://nowoczesnapolska.org.pl/prywatnosc/\">privacy policy</a>."
 msgstr ""
 
-#: club/templates/club/payment_form.html:65
+#: club/templates/club/payment_form.html:94
 msgid "Donate"
 msgstr ""
 
index 5842795..a720016 100644 (file)
@@ -29,7 +29,7 @@ msgstr ""
 msgid "Club"
 msgstr ""
 
-#: club/forms.py:32
+#: club/forms.py:70
 #, python-format
 msgid "Minimal amount is %(amount)d PLN."
 msgstr ""
@@ -66,142 +66,214 @@ msgstr ""
 msgid "clubs"
 msgstr ""
 
-#: club/models.py:48
+#: club/models.py:61
 msgid "key"
 msgstr ""
 
-#: club/models.py:49
+#: club/models.py:62
 msgid "email"
 msgstr ""
 
-#: club/models.py:50 club/models.py:143
+#: club/models.py:63 club/models.py:182
 msgid "membership"
 msgstr ""
 
-#: club/models.py:51
+#: club/models.py:64 club/models.py:388
 msgid "amount"
 msgstr ""
 
-#: club/models.py:52 club/templates/club/payment_form.html:21
+#: club/models.py:65
+msgid "method"
+msgstr ""
+
+#: club/models.py:68 club/templates/club/payment_form.html:25
 msgid "monthly"
 msgstr ""
 
-#: club/models.py:53
+#: club/models.py:69
 msgid "yearly"
 msgstr ""
 
-#: club/models.py:55
+#: club/models.py:71
 msgid "source"
 msgstr ""
 
-#: club/models.py:57
+#: club/models.py:73
 msgid "cancelled"
 msgstr ""
 
-#: club/models.py:58
+#: club/models.py:74
 msgid "payed at"
 msgstr ""
 
-#: club/models.py:59
+#: club/models.py:75
 msgid "started at"
 msgstr ""
 
-#: club/models.py:60
+#: club/models.py:76
 msgid "expires_at"
 msgstr ""
 
-#: club/models.py:64
+#: club/models.py:85
 msgid "schedule"
 msgstr ""
 
-#: club/models.py:65
+#: club/models.py:86
 msgid "schedules"
 msgstr ""
 
-#: club/models.py:135
+#: club/models.py:174
 msgid "user"
 msgstr ""
 
-#: club/models.py:136
+#: club/models.py:175
 msgid "created at"
 msgstr ""
 
-#: club/models.py:137 club/models.py:198
+#: club/models.py:176 club/models.py:237
 msgid "name"
 msgstr ""
 
-#: club/models.py:138
+#: club/models.py:177
 msgid "manual"
 msgstr ""
 
-#: club/models.py:139
+#: club/models.py:178
 msgid "notes"
 msgstr ""
 
-#: club/models.py:140
+#: club/models.py:179
 msgid "updated at"
 msgstr ""
 
-#: club/models.py:144
+#: club/models.py:183
 msgid "memberships"
 msgstr ""
 
-#: club/models.py:181
+#: club/models.py:220
 msgid "days before"
 msgstr ""
 
-#: club/models.py:182
+#: club/models.py:221
 msgid "subject"
 msgstr ""
 
-#: club/models.py:183 club/payu/models.py:140
+#: club/models.py:222 club/payu/models.py:140
 msgid "body"
 msgstr ""
 
-#: club/models.py:186
+#: club/models.py:225
 msgid "reminder email"
 msgstr ""
 
-#: club/models.py:187
+#: club/models.py:226
 msgid "reminder emails"
 msgstr ""
 
-#: club/models.py:192
+#: club/models.py:231
 #, python-format
 msgid "a day before expiration"
 msgid_plural "%d days before expiration"
 msgstr[0] ""
 msgstr[1] ""
 
-#: club/models.py:194
+#: club/models.py:233
 #, python-format
 msgid "a day after expiration"
 msgid_plural "%d days after expiration"
 msgstr[0] ""
 msgstr[1] ""
 
-#: club/models.py:199
+#: club/models.py:238
 msgid "photo"
 msgstr ""
 
-#: club/models.py:200
+#: club/models.py:239
 msgid "text"
 msgstr ""
 
-#: club/models.py:203
+#: club/models.py:242
 msgid "ambassador"
 msgstr ""
 
-#: club/models.py:204
+#: club/models.py:243
 msgid "ambassadors"
 msgstr ""
 
-#: club/models.py:235 club/templates/club/index.html:7
+#: club/models.py:274 club/templates/club/index.html:7
 #: club/templates/club/index.html:13 club/templates/club/thanks.html:6
 #: club/templates/payu/rec_payment.html:5
 msgid "Towarzystwo Przyjaciół Wolnych Lektur"
 msgstr ""
 
+#: club/models.py:370
+msgid "first name"
+msgstr ""
+
+#: club/models.py:371
+msgid "last name"
+msgstr ""
+
+#: club/models.py:372
+msgid "sex"
+msgstr ""
+
+#: club/models.py:376
+msgid "date of birth"
+msgstr ""
+
+#: club/models.py:377
+msgid "street"
+msgstr ""
+
+#: club/models.py:378
+msgid "building"
+msgstr ""
+
+#: club/models.py:379
+msgid "flat"
+msgstr ""
+
+#: club/models.py:380
+msgid "town"
+msgstr ""
+
+#: club/models.py:381
+msgid "postal code"
+msgstr ""
+
+#: club/models.py:382
+msgid "phone"
+msgstr ""
+
+#: club/models.py:383
+msgid "e-mail"
+msgstr ""
+
+#: club/models.py:384
+msgid "IBAN"
+msgstr ""
+
+#: club/models.py:385
+msgid "payment identifier"
+msgstr ""
+
+#: club/models.py:386
+msgid "agree newsletter"
+msgstr ""
+
+#: club/models.py:387
+msgid "date"
+msgstr ""
+
+#: club/models.py:391
+msgid "direct debit"
+msgstr ""
+
+#: club/models.py:392
+msgid "direct debits"
+msgstr ""
+
 #: club/payu/models.py:17 club/payu/models.py:29
 msgid "POS id"
 msgstr ""
@@ -360,38 +432,50 @@ msgstr ""
 msgid "transfer"
 msgstr ""
 
-#: club/templates/club/payment_form.html:15
+#: club/templates/club/payment_form.html:18
 msgid "Choose your type of support"
 msgstr ""
 
-#: club/templates/club/payment_form.html:20
+#: club/templates/club/payment_form.html:24
 msgid "one-time"
 msgstr ""
 
-#: club/templates/club/payment_form.html:24
+#: club/templates/club/payment_form.html:28
 msgid "Choose the amount"
 msgstr ""
 
-#: club/templates/club/payment_form.html:32
-#: club/templates/club/payment_form.html:45
+#: club/templates/club/payment_form.html:36
+#: club/templates/club/payment_form.html:49
 msgid "different amount"
 msgstr ""
 
-#: club/templates/club/payment_form.html:51
-msgid "Provide an e-mail address"
+#: club/templates/club/payment_form.html:57
+msgid "Provide contact details"
+msgstr ""
+
+#: club/templates/club/payment_form.html:60
+msgid "E-mail:"
 msgstr ""
 
-#: club/templates/club/payment_form.html:58
+#: club/templates/club/payment_form.html:65
+msgid "Phone number:"
+msgstr ""
+
+#: club/templates/club/payment_form.html:70
+msgid "Postal address:"
+msgstr ""
+
+#: club/templates/club/payment_form.html:87
 msgid "I'd like to receive informations about new publications."
 msgstr ""
 
-#: club/templates/club/payment_form.html:62
+#: club/templates/club/payment_form.html:91
 msgid ""
 "You can unsubscribe at any point. More in the <a target=\"_blank\" href="
 "\"https://nowoczesnapolska.org.pl/prywatnosc/\">privacy policy</a>."
 msgstr ""
 
-#: club/templates/club/payment_form.html:65
+#: club/templates/club/payment_form.html:94
 msgid "Donate"
 msgstr ""
 
index 6b253e6..9f4a0e8 100644 (file)
@@ -29,7 +29,7 @@ msgstr ""
 msgid "Club"
 msgstr ""
 
-#: club/forms.py:32
+#: club/forms.py:70
 #, python-format
 msgid "Minimal amount is %(amount)d PLN."
 msgstr ""
@@ -66,142 +66,214 @@ msgstr ""
 msgid "clubs"
 msgstr ""
 
-#: club/models.py:48
+#: club/models.py:61
 msgid "key"
 msgstr ""
 
-#: club/models.py:49
+#: club/models.py:62
 msgid "email"
 msgstr ""
 
-#: club/models.py:50 club/models.py:143
+#: club/models.py:63 club/models.py:182
 msgid "membership"
 msgstr ""
 
-#: club/models.py:51
+#: club/models.py:64 club/models.py:388
 msgid "amount"
 msgstr ""
 
-#: club/models.py:52 club/templates/club/payment_form.html:21
+#: club/models.py:65
+msgid "method"
+msgstr ""
+
+#: club/models.py:68 club/templates/club/payment_form.html:25
 msgid "monthly"
 msgstr ""
 
-#: club/models.py:53
+#: club/models.py:69
 msgid "yearly"
 msgstr ""
 
-#: club/models.py:55
+#: club/models.py:71
 msgid "source"
 msgstr ""
 
-#: club/models.py:57
+#: club/models.py:73
 msgid "cancelled"
 msgstr ""
 
-#: club/models.py:58
+#: club/models.py:74
 msgid "payed at"
 msgstr ""
 
-#: club/models.py:59
+#: club/models.py:75
 msgid "started at"
 msgstr ""
 
-#: club/models.py:60
+#: club/models.py:76
 msgid "expires_at"
 msgstr ""
 
-#: club/models.py:64
+#: club/models.py:85
 msgid "schedule"
 msgstr ""
 
-#: club/models.py:65
+#: club/models.py:86
 msgid "schedules"
 msgstr ""
 
-#: club/models.py:135
+#: club/models.py:174
 msgid "user"
 msgstr ""
 
-#: club/models.py:136
+#: club/models.py:175
 msgid "created at"
 msgstr ""
 
-#: club/models.py:137 club/models.py:198
+#: club/models.py:176 club/models.py:237
 msgid "name"
 msgstr ""
 
-#: club/models.py:138
+#: club/models.py:177
 msgid "manual"
 msgstr ""
 
-#: club/models.py:139
+#: club/models.py:178
 msgid "notes"
 msgstr ""
 
-#: club/models.py:140
+#: club/models.py:179
 msgid "updated at"
 msgstr ""
 
-#: club/models.py:144
+#: club/models.py:183
 msgid "memberships"
 msgstr ""
 
-#: club/models.py:181
+#: club/models.py:220
 msgid "days before"
 msgstr ""
 
-#: club/models.py:182
+#: club/models.py:221
 msgid "subject"
 msgstr ""
 
-#: club/models.py:183 club/payu/models.py:140
+#: club/models.py:222 club/payu/models.py:140
 msgid "body"
 msgstr ""
 
-#: club/models.py:186
+#: club/models.py:225
 msgid "reminder email"
 msgstr ""
 
-#: club/models.py:187
+#: club/models.py:226
 msgid "reminder emails"
 msgstr ""
 
-#: club/models.py:192
+#: club/models.py:231
 #, python-format
 msgid "a day before expiration"
 msgid_plural "%d days before expiration"
 msgstr[0] ""
 msgstr[1] ""
 
-#: club/models.py:194
+#: club/models.py:233
 #, python-format
 msgid "a day after expiration"
 msgid_plural "%d days after expiration"
 msgstr[0] ""
 msgstr[1] ""
 
-#: club/models.py:199
+#: club/models.py:238
 msgid "photo"
 msgstr ""
 
-#: club/models.py:200
+#: club/models.py:239
 msgid "text"
 msgstr ""
 
-#: club/models.py:203
+#: club/models.py:242
 msgid "ambassador"
 msgstr ""
 
-#: club/models.py:204
+#: club/models.py:243
 msgid "ambassadors"
 msgstr ""
 
-#: club/models.py:235 club/templates/club/index.html:7
+#: club/models.py:274 club/templates/club/index.html:7
 #: club/templates/club/index.html:13 club/templates/club/thanks.html:6
 #: club/templates/payu/rec_payment.html:5
 msgid "Towarzystwo Przyjaciół Wolnych Lektur"
 msgstr ""
 
+#: club/models.py:370
+msgid "first name"
+msgstr ""
+
+#: club/models.py:371
+msgid "last name"
+msgstr ""
+
+#: club/models.py:372
+msgid "sex"
+msgstr ""
+
+#: club/models.py:376
+msgid "date of birth"
+msgstr ""
+
+#: club/models.py:377
+msgid "street"
+msgstr ""
+
+#: club/models.py:378
+msgid "building"
+msgstr ""
+
+#: club/models.py:379
+msgid "flat"
+msgstr ""
+
+#: club/models.py:380
+msgid "town"
+msgstr ""
+
+#: club/models.py:381
+msgid "postal code"
+msgstr ""
+
+#: club/models.py:382
+msgid "phone"
+msgstr ""
+
+#: club/models.py:383
+msgid "e-mail"
+msgstr ""
+
+#: club/models.py:384
+msgid "IBAN"
+msgstr ""
+
+#: club/models.py:385
+msgid "payment identifier"
+msgstr ""
+
+#: club/models.py:386
+msgid "agree newsletter"
+msgstr ""
+
+#: club/models.py:387
+msgid "date"
+msgstr ""
+
+#: club/models.py:391
+msgid "direct debit"
+msgstr ""
+
+#: club/models.py:392
+msgid "direct debits"
+msgstr ""
+
 #: club/payu/models.py:17 club/payu/models.py:29
 msgid "POS id"
 msgstr ""
@@ -360,38 +432,50 @@ msgstr ""
 msgid "transfer"
 msgstr ""
 
-#: club/templates/club/payment_form.html:15
+#: club/templates/club/payment_form.html:18
 msgid "Choose your type of support"
 msgstr ""
 
-#: club/templates/club/payment_form.html:20
+#: club/templates/club/payment_form.html:24
 msgid "one-time"
 msgstr ""
 
-#: club/templates/club/payment_form.html:24
+#: club/templates/club/payment_form.html:28
 msgid "Choose the amount"
 msgstr ""
 
-#: club/templates/club/payment_form.html:32
-#: club/templates/club/payment_form.html:45
+#: club/templates/club/payment_form.html:36
+#: club/templates/club/payment_form.html:49
 msgid "different amount"
 msgstr ""
 
-#: club/templates/club/payment_form.html:51
-msgid "Provide an e-mail address"
+#: club/templates/club/payment_form.html:57
+msgid "Provide contact details"
+msgstr ""
+
+#: club/templates/club/payment_form.html:60
+msgid "E-mail:"
 msgstr ""
 
-#: club/templates/club/payment_form.html:58
+#: club/templates/club/payment_form.html:65
+msgid "Phone number:"
+msgstr ""
+
+#: club/templates/club/payment_form.html:70
+msgid "Postal address:"
+msgstr ""
+
+#: club/templates/club/payment_form.html:87
 msgid "I'd like to receive informations about new publications."
 msgstr ""
 
-#: club/templates/club/payment_form.html:62
+#: club/templates/club/payment_form.html:91
 msgid ""
 "You can unsubscribe at any point. More in the <a target=\"_blank\" href="
 "\"https://nowoczesnapolska.org.pl/prywatnosc/\">privacy policy</a>."
 msgstr ""
 
-#: club/templates/club/payment_form.html:65
+#: club/templates/club/payment_form.html:94
 msgid "Donate"
 msgstr ""
 
index 5842795..a720016 100644 (file)
@@ -29,7 +29,7 @@ msgstr ""
 msgid "Club"
 msgstr ""
 
-#: club/forms.py:32
+#: club/forms.py:70
 #, python-format
 msgid "Minimal amount is %(amount)d PLN."
 msgstr ""
@@ -66,142 +66,214 @@ msgstr ""
 msgid "clubs"
 msgstr ""
 
-#: club/models.py:48
+#: club/models.py:61
 msgid "key"
 msgstr ""
 
-#: club/models.py:49
+#: club/models.py:62
 msgid "email"
 msgstr ""
 
-#: club/models.py:50 club/models.py:143
+#: club/models.py:63 club/models.py:182
 msgid "membership"
 msgstr ""
 
-#: club/models.py:51
+#: club/models.py:64 club/models.py:388
 msgid "amount"
 msgstr ""
 
-#: club/models.py:52 club/templates/club/payment_form.html:21
+#: club/models.py:65
+msgid "method"
+msgstr ""
+
+#: club/models.py:68 club/templates/club/payment_form.html:25
 msgid "monthly"
 msgstr ""
 
-#: club/models.py:53
+#: club/models.py:69
 msgid "yearly"
 msgstr ""
 
-#: club/models.py:55
+#: club/models.py:71
 msgid "source"
 msgstr ""
 
-#: club/models.py:57
+#: club/models.py:73
 msgid "cancelled"
 msgstr ""
 
-#: club/models.py:58
+#: club/models.py:74
 msgid "payed at"
 msgstr ""
 
-#: club/models.py:59
+#: club/models.py:75
 msgid "started at"
 msgstr ""
 
-#: club/models.py:60
+#: club/models.py:76
 msgid "expires_at"
 msgstr ""
 
-#: club/models.py:64
+#: club/models.py:85
 msgid "schedule"
 msgstr ""
 
-#: club/models.py:65
+#: club/models.py:86
 msgid "schedules"
 msgstr ""
 
-#: club/models.py:135
+#: club/models.py:174
 msgid "user"
 msgstr ""
 
-#: club/models.py:136
+#: club/models.py:175
 msgid "created at"
 msgstr ""
 
-#: club/models.py:137 club/models.py:198
+#: club/models.py:176 club/models.py:237
 msgid "name"
 msgstr ""
 
-#: club/models.py:138
+#: club/models.py:177
 msgid "manual"
 msgstr ""
 
-#: club/models.py:139
+#: club/models.py:178
 msgid "notes"
 msgstr ""
 
-#: club/models.py:140
+#: club/models.py:179
 msgid "updated at"
 msgstr ""
 
-#: club/models.py:144
+#: club/models.py:183
 msgid "memberships"
 msgstr ""
 
-#: club/models.py:181
+#: club/models.py:220
 msgid "days before"
 msgstr ""
 
-#: club/models.py:182
+#: club/models.py:221
 msgid "subject"
 msgstr ""
 
-#: club/models.py:183 club/payu/models.py:140
+#: club/models.py:222 club/payu/models.py:140
 msgid "body"
 msgstr ""
 
-#: club/models.py:186
+#: club/models.py:225
 msgid "reminder email"
 msgstr ""
 
-#: club/models.py:187
+#: club/models.py:226
 msgid "reminder emails"
 msgstr ""
 
-#: club/models.py:192
+#: club/models.py:231
 #, python-format
 msgid "a day before expiration"
 msgid_plural "%d days before expiration"
 msgstr[0] ""
 msgstr[1] ""
 
-#: club/models.py:194
+#: club/models.py:233
 #, python-format
 msgid "a day after expiration"
 msgid_plural "%d days after expiration"
 msgstr[0] ""
 msgstr[1] ""
 
-#: club/models.py:199
+#: club/models.py:238
 msgid "photo"
 msgstr ""
 
-#: club/models.py:200
+#: club/models.py:239
 msgid "text"
 msgstr ""
 
-#: club/models.py:203
+#: club/models.py:242
 msgid "ambassador"
 msgstr ""
 
-#: club/models.py:204
+#: club/models.py:243
 msgid "ambassadors"
 msgstr ""
 
-#: club/models.py:235 club/templates/club/index.html:7
+#: club/models.py:274 club/templates/club/index.html:7
 #: club/templates/club/index.html:13 club/templates/club/thanks.html:6
 #: club/templates/payu/rec_payment.html:5
 msgid "Towarzystwo Przyjaciół Wolnych Lektur"
 msgstr ""
 
+#: club/models.py:370
+msgid "first name"
+msgstr ""
+
+#: club/models.py:371
+msgid "last name"
+msgstr ""
+
+#: club/models.py:372
+msgid "sex"
+msgstr ""
+
+#: club/models.py:376
+msgid "date of birth"
+msgstr ""
+
+#: club/models.py:377
+msgid "street"
+msgstr ""
+
+#: club/models.py:378
+msgid "building"
+msgstr ""
+
+#: club/models.py:379
+msgid "flat"
+msgstr ""
+
+#: club/models.py:380
+msgid "town"
+msgstr ""
+
+#: club/models.py:381
+msgid "postal code"
+msgstr ""
+
+#: club/models.py:382
+msgid "phone"
+msgstr ""
+
+#: club/models.py:383
+msgid "e-mail"
+msgstr ""
+
+#: club/models.py:384
+msgid "IBAN"
+msgstr ""
+
+#: club/models.py:385
+msgid "payment identifier"
+msgstr ""
+
+#: club/models.py:386
+msgid "agree newsletter"
+msgstr ""
+
+#: club/models.py:387
+msgid "date"
+msgstr ""
+
+#: club/models.py:391
+msgid "direct debit"
+msgstr ""
+
+#: club/models.py:392
+msgid "direct debits"
+msgstr ""
+
 #: club/payu/models.py:17 club/payu/models.py:29
 msgid "POS id"
 msgstr ""
@@ -360,38 +432,50 @@ msgstr ""
 msgid "transfer"
 msgstr ""
 
-#: club/templates/club/payment_form.html:15
+#: club/templates/club/payment_form.html:18
 msgid "Choose your type of support"
 msgstr ""
 
-#: club/templates/club/payment_form.html:20
+#: club/templates/club/payment_form.html:24
 msgid "one-time"
 msgstr ""
 
-#: club/templates/club/payment_form.html:24
+#: club/templates/club/payment_form.html:28
 msgid "Choose the amount"
 msgstr ""
 
-#: club/templates/club/payment_form.html:32
-#: club/templates/club/payment_form.html:45
+#: club/templates/club/payment_form.html:36
+#: club/templates/club/payment_form.html:49
 msgid "different amount"
 msgstr ""
 
-#: club/templates/club/payment_form.html:51
-msgid "Provide an e-mail address"
+#: club/templates/club/payment_form.html:57
+msgid "Provide contact details"
+msgstr ""
+
+#: club/templates/club/payment_form.html:60
+msgid "E-mail:"
 msgstr ""
 
-#: club/templates/club/payment_form.html:58
+#: club/templates/club/payment_form.html:65
+msgid "Phone number:"
+msgstr ""
+
+#: club/templates/club/payment_form.html:70
+msgid "Postal address:"
+msgstr ""
+
+#: club/templates/club/payment_form.html:87
 msgid "I'd like to receive informations about new publications."
 msgstr ""
 
-#: club/templates/club/payment_form.html:62
+#: club/templates/club/payment_form.html:91
 msgid ""
 "You can unsubscribe at any point. More in the <a target=\"_blank\" href="
 "\"https://nowoczesnapolska.org.pl/prywatnosc/\">privacy policy</a>."
 msgstr ""
 
-#: club/templates/club/payment_form.html:65
+#: club/templates/club/payment_form.html:94
 msgid "Donate"
 msgstr ""
 
index b9cf436..dc83c19 100644 (file)
@@ -31,7 +31,7 @@ msgstr ""
 msgid "Club"
 msgstr ""
 
-#: club/forms.py:32
+#: club/forms.py:70
 #, python-format
 msgid "Minimal amount is %(amount)d PLN."
 msgstr ""
@@ -68,142 +68,214 @@ msgstr ""
 msgid "clubs"
 msgstr ""
 
-#: club/models.py:48
+#: club/models.py:61
 msgid "key"
 msgstr ""
 
-#: club/models.py:49
+#: club/models.py:62
 msgid "email"
 msgstr ""
 
-#: club/models.py:50 club/models.py:143
+#: club/models.py:63 club/models.py:182
 msgid "membership"
 msgstr ""
 
-#: club/models.py:51
+#: club/models.py:64 club/models.py:388
 msgid "amount"
 msgstr ""
 
-#: club/models.py:52 club/templates/club/payment_form.html:21
+#: club/models.py:65
+msgid "method"
+msgstr ""
+
+#: club/models.py:68 club/templates/club/payment_form.html:25
 msgid "monthly"
 msgstr ""
 
-#: club/models.py:53
+#: club/models.py:69
 msgid "yearly"
 msgstr ""
 
-#: club/models.py:55
+#: club/models.py:71
 msgid "source"
 msgstr ""
 
-#: club/models.py:57
+#: club/models.py:73
 msgid "cancelled"
 msgstr ""
 
-#: club/models.py:58
+#: club/models.py:74
 msgid "payed at"
 msgstr ""
 
-#: club/models.py:59
+#: club/models.py:75
 msgid "started at"
 msgstr ""
 
-#: club/models.py:60
+#: club/models.py:76
 msgid "expires_at"
 msgstr ""
 
-#: club/models.py:64
+#: club/models.py:85
 msgid "schedule"
 msgstr ""
 
-#: club/models.py:65
+#: club/models.py:86
 msgid "schedules"
 msgstr ""
 
-#: club/models.py:135
+#: club/models.py:174
 msgid "user"
 msgstr ""
 
-#: club/models.py:136
+#: club/models.py:175
 msgid "created at"
 msgstr ""
 
-#: club/models.py:137 club/models.py:198
+#: club/models.py:176 club/models.py:237
 msgid "name"
 msgstr ""
 
-#: club/models.py:138
+#: club/models.py:177
 msgid "manual"
 msgstr ""
 
-#: club/models.py:139
+#: club/models.py:178
 msgid "notes"
 msgstr ""
 
-#: club/models.py:140
+#: club/models.py:179
 msgid "updated at"
 msgstr ""
 
-#: club/models.py:144
+#: club/models.py:183
 msgid "memberships"
 msgstr ""
 
-#: club/models.py:181
+#: club/models.py:220
 msgid "days before"
 msgstr ""
 
-#: club/models.py:182
+#: club/models.py:221
 msgid "subject"
 msgstr ""
 
-#: club/models.py:183 club/payu/models.py:140
+#: club/models.py:222 club/payu/models.py:140
 msgid "body"
 msgstr ""
 
-#: club/models.py:186
+#: club/models.py:225
 msgid "reminder email"
 msgstr ""
 
-#: club/models.py:187
+#: club/models.py:226
 msgid "reminder emails"
 msgstr ""
 
-#: club/models.py:192
+#: club/models.py:231
 #, python-format
 msgid "a day before expiration"
 msgid_plural "%d days before expiration"
 msgstr[0] ""
 msgstr[1] ""
 
-#: club/models.py:194
+#: club/models.py:233
 #, python-format
 msgid "a day after expiration"
 msgid_plural "%d days after expiration"
 msgstr[0] ""
 msgstr[1] ""
 
-#: club/models.py:199
+#: club/models.py:238
 msgid "photo"
 msgstr ""
 
-#: club/models.py:200
+#: club/models.py:239
 msgid "text"
 msgstr ""
 
-#: club/models.py:203
+#: club/models.py:242
 msgid "ambassador"
 msgstr ""
 
-#: club/models.py:204
+#: club/models.py:243
 msgid "ambassadors"
 msgstr ""
 
-#: club/models.py:235 club/templates/club/index.html:7
+#: club/models.py:274 club/templates/club/index.html:7
 #: club/templates/club/index.html:13 club/templates/club/thanks.html:6
 #: club/templates/payu/rec_payment.html:5
 msgid "Towarzystwo Przyjaciół Wolnych Lektur"
 msgstr ""
 
+#: club/models.py:370
+msgid "first name"
+msgstr ""
+
+#: club/models.py:371
+msgid "last name"
+msgstr ""
+
+#: club/models.py:372
+msgid "sex"
+msgstr ""
+
+#: club/models.py:376
+msgid "date of birth"
+msgstr ""
+
+#: club/models.py:377
+msgid "street"
+msgstr ""
+
+#: club/models.py:378
+msgid "building"
+msgstr ""
+
+#: club/models.py:379
+msgid "flat"
+msgstr ""
+
+#: club/models.py:380
+msgid "town"
+msgstr ""
+
+#: club/models.py:381
+msgid "postal code"
+msgstr ""
+
+#: club/models.py:382
+msgid "phone"
+msgstr ""
+
+#: club/models.py:383
+msgid "e-mail"
+msgstr ""
+
+#: club/models.py:384
+msgid "IBAN"
+msgstr ""
+
+#: club/models.py:385
+msgid "payment identifier"
+msgstr ""
+
+#: club/models.py:386
+msgid "agree newsletter"
+msgstr ""
+
+#: club/models.py:387
+msgid "date"
+msgstr ""
+
+#: club/models.py:391
+msgid "direct debit"
+msgstr ""
+
+#: club/models.py:392
+msgid "direct debits"
+msgstr ""
+
 #: club/payu/models.py:17 club/payu/models.py:29
 msgid "POS id"
 msgstr ""
@@ -366,38 +438,50 @@ msgstr ""
 msgid "transfer"
 msgstr ""
 
-#: club/templates/club/payment_form.html:15
+#: club/templates/club/payment_form.html:18
 msgid "Choose your type of support"
 msgstr ""
 
-#: club/templates/club/payment_form.html:20
+#: club/templates/club/payment_form.html:24
 msgid "one-time"
 msgstr ""
 
-#: club/templates/club/payment_form.html:24
+#: club/templates/club/payment_form.html:28
 msgid "Choose the amount"
 msgstr ""
 
-#: club/templates/club/payment_form.html:32
-#: club/templates/club/payment_form.html:45
+#: club/templates/club/payment_form.html:36
+#: club/templates/club/payment_form.html:49
 msgid "different amount"
 msgstr ""
 
-#: club/templates/club/payment_form.html:51
-msgid "Provide an e-mail address"
+#: club/templates/club/payment_form.html:57
+msgid "Provide contact details"
+msgstr ""
+
+#: club/templates/club/payment_form.html:60
+msgid "E-mail:"
 msgstr ""
 
-#: club/templates/club/payment_form.html:58
+#: club/templates/club/payment_form.html:65
+msgid "Phone number:"
+msgstr ""
+
+#: club/templates/club/payment_form.html:70
+msgid "Postal address:"
+msgstr ""
+
+#: club/templates/club/payment_form.html:87
 msgid "I'd like to receive informations about new publications."
 msgstr ""
 
-#: club/templates/club/payment_form.html:62
+#: club/templates/club/payment_form.html:91
 msgid ""
 "You can unsubscribe at any point. More in the <a target=\"_blank\" href="
 "\"https://nowoczesnapolska.org.pl/prywatnosc/\">privacy policy</a>."
 msgstr ""
 
-#: club/templates/club/payment_form.html:65
+#: club/templates/club/payment_form.html:94
 msgid "Donate"
 msgstr ""
 
index c3026be..b6bd8a3 100644 (file)
Binary files a/src/club/locale/pl/LC_MESSAGES/django.mo and b/src/club/locale/pl/LC_MESSAGES/django.mo differ
index 11f9830..78d5245 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2021-06-15 15:28+0200\n"
+"PO-Revision-Date: 2021-07-30 14:51+0200\n"
 "Last-Translator: \n"
 "Language-Team: \n"
 "Language: pl\n"
@@ -31,144 +31,172 @@ msgstr "harmonogram przedawniony"
 msgid "Club"
 msgstr "Towarzystwo"
 
-#: club/forms.py:32
+#: club/forms.py:52 club/models.py:376
+msgid "first name"
+msgstr "imię"
+
+#: club/forms.py:53 club/models.py:377
+msgid "last name"
+msgstr "nazwisko"
+
+#: club/forms.py:55
+msgid ""
+"If you leave your address, we'll be able to send you a postcard and other "
+"gadgets."
+msgstr ""
+"Jeśli zostawisz nam swój adres, to będziemy mogli wysłać Ci pocztówkę i inne "
+"drobne gadżety Wolnych Lektur."
+
+#: club/forms.py:56 club/models.py:387
+msgid "postal code"
+msgstr "kod pocztowy"
+
+#: club/forms.py:57 club/models.py:386
+msgid "town"
+msgstr "miejscowość"
+
+#: club/forms.py:84
 #, python-format
 msgid "Minimal amount is %(amount)d PLN."
 msgstr "Minimalna kwota to %(amount)d zł."
 
-#: club/models.py:25
+#: club/models.py:26
 msgid "minimum amount"
 msgstr "minimalna kwota"
 
-#: club/models.py:26
+#: club/models.py:27
 msgid "minimum amount for year"
 msgstr "minimalna kwota na rok"
 
-#: club/models.py:27
+#: club/models.py:28
 msgid "proposed amounts for single payment"
 msgstr "proponowane kwoty dla pojedynczej wpłaty"
 
-#: club/models.py:28
+#: club/models.py:29
 msgid "default single amount"
 msgstr "domyślna kwota dla pojedynczej wpłaty"
 
-#: club/models.py:29
+#: club/models.py:30
 msgid "proposed amounts for monthly payments"
 msgstr "proponowane kwoty dla miesięcznych wpłat"
 
-#: club/models.py:30
+#: club/models.py:31
 msgid "default monthly amount"
 msgstr "domyślna kwota dla miesięcznych wpłat"
 
-#: club/models.py:33
+#: club/models.py:34
 msgid "club"
 msgstr "towarzystwo"
 
-#: club/models.py:34
+#: club/models.py:35
 msgid "clubs"
 msgstr "towarzystwa"
 
-#: club/models.py:48
+#: club/models.py:62
 msgid "key"
 msgstr "klucz"
 
-#: club/models.py:49
+#: club/models.py:63
 msgid "email"
 msgstr "email"
 
-#: club/models.py:50 club/models.py:143
+#: club/models.py:64 club/models.py:188
 msgid "membership"
 msgstr "członkostwo"
 
-#: club/models.py:51 club/models.py:360
+#: club/models.py:65 club/models.py:394
 msgid "amount"
 msgstr "kwota"
 
-#: club/models.py:52 club/templates/club/payment_form.html:21
+#: club/models.py:66
+msgid "method"
+msgstr "metoda płatności"
+
+#: club/models.py:69 club/templates/club/payment_form.html:25
 msgid "monthly"
 msgstr "miesięcznie"
 
-#: club/models.py:53
+#: club/models.py:70
 msgid "yearly"
 msgstr "rocznie"
 
-#: club/models.py:55
+#: club/models.py:72
 msgid "source"
 msgstr "źródło"
 
-#: club/models.py:57
+#: club/models.py:74
 msgid "cancelled"
 msgstr "anulowany"
 
-#: club/models.py:58
+#: club/models.py:75
 msgid "payed at"
 msgstr "opłacona"
 
-#: club/models.py:59
+#: club/models.py:76
 msgid "started at"
 msgstr "start"
 
-#: club/models.py:60
+#: club/models.py:77
 msgid "expires_at"
 msgstr "wygasa"
 
-#: club/models.py:64
+#: club/models.py:91
 msgid "schedule"
 msgstr "harmonogram"
 
-#: club/models.py:65
+#: club/models.py:92
 msgid "schedules"
 msgstr "harmonogramy"
 
-#: club/models.py:135
+#: club/models.py:180
 msgid "user"
 msgstr "użytkownik"
 
-#: club/models.py:136
+#: club/models.py:181
 msgid "created at"
 msgstr "utworzone"
 
-#: club/models.py:137 club/models.py:198
+#: club/models.py:182 club/models.py:243
 msgid "name"
 msgstr "nazwisko"
 
-#: club/models.py:138
+#: club/models.py:183
 msgid "manual"
 msgstr "ustawiony ręcznie"
 
-#: club/models.py:139
+#: club/models.py:184
 msgid "notes"
 msgstr "notatki"
 
-#: club/models.py:140
+#: club/models.py:185
 msgid "updated at"
 msgstr "aktualizacja"
 
-#: club/models.py:144
+#: club/models.py:189
 msgid "memberships"
 msgstr "członkostwa"
 
-#: club/models.py:181
+#: club/models.py:226
 msgid "days before"
 msgstr "dni przed"
 
-#: club/models.py:182
+#: club/models.py:227
 msgid "subject"
 msgstr "temat"
 
-#: club/models.py:183 club/payu/models.py:140
+#: club/models.py:228 club/payu/models.py:140
 msgid "body"
 msgstr "treść"
 
-#: club/models.py:186
+#: club/models.py:231
 msgid "reminder email"
 msgstr "email z przypomnieniem"
 
-#: club/models.py:187
+#: club/models.py:232
 msgid "reminder emails"
 msgstr "emaile z przypomnieniem"
 
-#: club/models.py:192
+#: club/models.py:237
 #, python-format
 msgid "a day before expiration"
 msgid_plural "%d days before expiration"
@@ -177,7 +205,7 @@ msgstr[1] "%d dni przed wygaśnięciem"
 msgstr[2] "%d dni przed wygaśnięciem"
 msgstr[3] "%d dni przed wygaśnięciem"
 
-#: club/models.py:194
+#: club/models.py:239
 #, python-format
 msgid "a day after expiration"
 msgid_plural "%d days after expiration"
@@ -186,93 +214,77 @@ msgstr[1] "%d dni po wygaśnięciu"
 msgstr[2] "%d dni po wygaśnięciu"
 msgstr[3] "%d dni przed wygaśnięciem"
 
-#: club/models.py:199
+#: club/models.py:244
 msgid "photo"
 msgstr "zdjęcie"
 
-#: club/models.py:200
+#: club/models.py:245
 msgid "text"
 msgstr "tekst"
 
-#: club/models.py:203
+#: club/models.py:248
 msgid "ambassador"
 msgstr "ambasador"
 
-#: club/models.py:204
+#: club/models.py:249
 msgid "ambassadors"
 msgstr "ambasadorowie"
 
-#: club/models.py:235 club/templates/club/index.html:7
+#: club/models.py:280 club/templates/club/index.html:7
 #: club/templates/club/index.html:13 club/templates/club/thanks.html:6
 #: club/templates/payu/rec_payment.html:5
 msgid "Towarzystwo Przyjaciół Wolnych Lektur"
 msgstr ""
 
-#: club/models.py:342
-msgid "first name"
-msgstr "imię"
-
-#: club/models.py:343
-msgid "last name"
-msgstr "nazwisko"
-
-#: club/models.py:344
+#: club/models.py:378
 msgid "sex"
 msgstr "płeć"
 
-#: club/models.py:348
+#: club/models.py:382
 msgid "date of birth"
 msgstr "data urodzenia"
 
-#: club/models.py:349
+#: club/models.py:383
 msgid "street"
 msgstr "ulica"
 
-#: club/models.py:350
+#: club/models.py:384
 msgid "building"
 msgstr "numer domu"
 
-#: club/models.py:351
+#: club/models.py:385
 msgid "flat"
 msgstr "numer mieszkania"
 
-#: club/models.py:352
-msgid "town"
-msgstr "miasto"
-
-#: club/models.py:353
-msgid "postal code"
-msgstr "kod"
-
-#: club/models.py:354
+#: club/models.py:388
 msgid "phone"
 msgstr "numer telefonu"
 
-#: club/models.py:355
+#: club/models.py:389
 msgid "e-mail"
 msgstr "e-mail"
 
-#: club/models.py:356
+#: club/models.py:390
 msgid "IBAN"
 msgstr "numer rachunku"
 
-#: club/models.py:357
+#: club/models.py:391
 msgid "payment identifier"
 msgstr "identyfikator płatności"
 
-#: club/models.py:358
+#: club/models.py:392
 msgid "agree newsletter"
 msgstr "zgoda na newsletter"
 
-#: club/models.py:359
+#: club/models.py:393
 msgid "date"
 msgstr "data"
 
-#: club/models.py:363
+#: club/models.py:397
 msgid "direct debit"
 msgstr "polecenie zapłaty"
 
-#: club/models.py:364
+#: club/models.py:398
 msgid "direct debits"
 msgstr "polecenia zapłaty"
 
@@ -459,32 +471,48 @@ msgstr "Bezpieczne wpłaty"
 msgid "transfer"
 msgstr "przelew"
 
-#: club/templates/club/payment_form.html:15
+#: club/templates/club/payment_form.html:18
 msgid "Choose your type of support"
 msgstr "Wybierz rodzaj wsparcia"
 
-#: club/templates/club/payment_form.html:20
+#: club/templates/club/payment_form.html:24
 msgid "one-time"
 msgstr "jednorazowo"
 
-#: club/templates/club/payment_form.html:24
+#: club/templates/club/payment_form.html:28
 msgid "Choose the amount"
 msgstr "Wybierz kwotę"
 
-#: club/templates/club/payment_form.html:32
-#: club/templates/club/payment_form.html:45
+#: club/templates/club/payment_form.html:36
+#: club/templates/club/payment_form.html:49
 msgid "different amount"
 msgstr "inna kwota"
 
-#: club/templates/club/payment_form.html:51
-msgid "Provide an e-mail address"
-msgstr "Podaj adres e-mail"
+#: club/templates/club/payment_form.html:57
+msgid "Provide contact details"
+msgstr "Podaj dane kontaktowe"
+
+#: club/templates/club/payment_form.html:60
+msgid "First and last name:"
+msgstr "Imię i nazwisko:"
 
-#: club/templates/club/payment_form.html:58
-msgid "I'd like to receive informations about new publications."
-msgstr "Chcę dostawać informacje o nowościach"
+#: club/templates/club/payment_form.html:67
+msgid "E-mail:"
+msgstr "E-mail"
 
-#: club/templates/club/payment_form.html:62
+#: club/templates/club/payment_form.html:72
+msgid "Phone number:"
+msgstr "Numer telefonu:"
+
+#: club/templates/club/payment_form.html:77
+msgid "Postal address:"
+msgstr "Adres pocztowy:"
+
+#: club/templates/club/payment_form.html:96
+msgid "I'd like to subscribe the newsletter."
+msgstr "Zapisuję się na newsletter."
+
+#: club/templates/club/payment_form.html:100
 msgid ""
 "You can unsubscribe at any point. More in the <a target=\"_blank\" href="
 "\"https://nowoczesnapolska.org.pl/prywatnosc/\">privacy policy</a>."
@@ -493,7 +521,7 @@ msgstr ""
 "\" href=\"https://nowoczesnapolska.org.pl/prywatnosc/\">polityce "
 "prywatności</a>."
 
-#: club/templates/club/payment_form.html:65
+#: club/templates/club/payment_form.html:104
 msgid "Donate"
 msgstr "Wpłać"
 
@@ -537,6 +565,9 @@ msgstr ""
 "\n"
 "Zlecasz comiesięczną płatność w wysokości %(amount)s zł. Dziękujemy!"
 
+#~ msgid "I'd like to receive informations about new publications."
+#~ msgstr "Chcę dostawać informacje o nowościach"
+
 #~ msgid "in perpetuity"
 #~ msgstr "jednorazowo"
 
@@ -554,6 +585,3 @@ msgstr ""
 
 #~ msgid "plans"
 #~ msgstr "plany"
-
-#~ msgid "method"
-#~ msgstr "metoda płatności"
index 36979b9..d7f3699 100644 (file)
@@ -31,7 +31,7 @@ msgstr ""
 msgid "Club"
 msgstr ""
 
-#: club/forms.py:32
+#: club/forms.py:70
 #, python-format
 msgid "Minimal amount is %(amount)d PLN."
 msgstr ""
@@ -68,142 +68,214 @@ msgstr ""
 msgid "clubs"
 msgstr ""
 
-#: club/models.py:48
+#: club/models.py:61
 msgid "key"
 msgstr ""
 
-#: club/models.py:49
+#: club/models.py:62
 msgid "email"
 msgstr ""
 
-#: club/models.py:50 club/models.py:143
+#: club/models.py:63 club/models.py:182
 msgid "membership"
 msgstr ""
 
-#: club/models.py:51
+#: club/models.py:64 club/models.py:388
 msgid "amount"
 msgstr ""
 
-#: club/models.py:52 club/templates/club/payment_form.html:21
+#: club/models.py:65
+msgid "method"
+msgstr ""
+
+#: club/models.py:68 club/templates/club/payment_form.html:25
 msgid "monthly"
 msgstr ""
 
-#: club/models.py:53
+#: club/models.py:69
 msgid "yearly"
 msgstr ""
 
-#: club/models.py:55
+#: club/models.py:71
 msgid "source"
 msgstr ""
 
-#: club/models.py:57
+#: club/models.py:73
 msgid "cancelled"
 msgstr ""
 
-#: club/models.py:58
+#: club/models.py:74
 msgid "payed at"
 msgstr ""
 
-#: club/models.py:59
+#: club/models.py:75
 msgid "started at"
 msgstr ""
 
-#: club/models.py:60
+#: club/models.py:76
 msgid "expires_at"
 msgstr ""
 
-#: club/models.py:64
+#: club/models.py:85
 msgid "schedule"
 msgstr ""
 
-#: club/models.py:65
+#: club/models.py:86
 msgid "schedules"
 msgstr ""
 
-#: club/models.py:135
+#: club/models.py:174
 msgid "user"
 msgstr ""
 
-#: club/models.py:136
+#: club/models.py:175
 msgid "created at"
 msgstr ""
 
-#: club/models.py:137 club/models.py:198
+#: club/models.py:176 club/models.py:237
 msgid "name"
 msgstr ""
 
-#: club/models.py:138
+#: club/models.py:177
 msgid "manual"
 msgstr ""
 
-#: club/models.py:139
+#: club/models.py:178
 msgid "notes"
 msgstr ""
 
-#: club/models.py:140
+#: club/models.py:179
 msgid "updated at"
 msgstr ""
 
-#: club/models.py:144
+#: club/models.py:183
 msgid "memberships"
 msgstr ""
 
-#: club/models.py:181
+#: club/models.py:220
 msgid "days before"
 msgstr ""
 
-#: club/models.py:182
+#: club/models.py:221
 msgid "subject"
 msgstr ""
 
-#: club/models.py:183 club/payu/models.py:140
+#: club/models.py:222 club/payu/models.py:140
 msgid "body"
 msgstr ""
 
-#: club/models.py:186
+#: club/models.py:225
 msgid "reminder email"
 msgstr ""
 
-#: club/models.py:187
+#: club/models.py:226
 msgid "reminder emails"
 msgstr ""
 
-#: club/models.py:192
+#: club/models.py:231
 #, python-format
 msgid "a day before expiration"
 msgid_plural "%d days before expiration"
 msgstr[0] ""
 msgstr[1] ""
 
-#: club/models.py:194
+#: club/models.py:233
 #, python-format
 msgid "a day after expiration"
 msgid_plural "%d days after expiration"
 msgstr[0] ""
 msgstr[1] ""
 
-#: club/models.py:199
+#: club/models.py:238
 msgid "photo"
 msgstr ""
 
-#: club/models.py:200
+#: club/models.py:239
 msgid "text"
 msgstr ""
 
-#: club/models.py:203
+#: club/models.py:242
 msgid "ambassador"
 msgstr ""
 
-#: club/models.py:204
+#: club/models.py:243
 msgid "ambassadors"
 msgstr ""
 
-#: club/models.py:235 club/templates/club/index.html:7
+#: club/models.py:274 club/templates/club/index.html:7
 #: club/templates/club/index.html:13 club/templates/club/thanks.html:6
 #: club/templates/payu/rec_payment.html:5
 msgid "Towarzystwo Przyjaciół Wolnych Lektur"
 msgstr ""
 
+#: club/models.py:370
+msgid "first name"
+msgstr ""
+
+#: club/models.py:371
+msgid "last name"
+msgstr ""
+
+#: club/models.py:372
+msgid "sex"
+msgstr ""
+
+#: club/models.py:376
+msgid "date of birth"
+msgstr ""
+
+#: club/models.py:377
+msgid "street"
+msgstr ""
+
+#: club/models.py:378
+msgid "building"
+msgstr ""
+
+#: club/models.py:379
+msgid "flat"
+msgstr ""
+
+#: club/models.py:380
+msgid "town"
+msgstr ""
+
+#: club/models.py:381
+msgid "postal code"
+msgstr ""
+
+#: club/models.py:382
+msgid "phone"
+msgstr ""
+
+#: club/models.py:383
+msgid "e-mail"
+msgstr ""
+
+#: club/models.py:384
+msgid "IBAN"
+msgstr ""
+
+#: club/models.py:385
+msgid "payment identifier"
+msgstr ""
+
+#: club/models.py:386
+msgid "agree newsletter"
+msgstr ""
+
+#: club/models.py:387
+msgid "date"
+msgstr ""
+
+#: club/models.py:391
+msgid "direct debit"
+msgstr ""
+
+#: club/models.py:392
+msgid "direct debits"
+msgstr ""
+
 #: club/payu/models.py:17 club/payu/models.py:29
 msgid "POS id"
 msgstr ""
@@ -366,38 +438,50 @@ msgstr ""
 msgid "transfer"
 msgstr ""
 
-#: club/templates/club/payment_form.html:15
+#: club/templates/club/payment_form.html:18
 msgid "Choose your type of support"
 msgstr ""
 
-#: club/templates/club/payment_form.html:20
+#: club/templates/club/payment_form.html:24
 msgid "one-time"
 msgstr ""
 
-#: club/templates/club/payment_form.html:24
+#: club/templates/club/payment_form.html:28
 msgid "Choose the amount"
 msgstr ""
 
-#: club/templates/club/payment_form.html:32
-#: club/templates/club/payment_form.html:45
+#: club/templates/club/payment_form.html:36
+#: club/templates/club/payment_form.html:49
 msgid "different amount"
 msgstr ""
 
-#: club/templates/club/payment_form.html:51
-msgid "Provide an e-mail address"
+#: club/templates/club/payment_form.html:57
+msgid "Provide contact details"
+msgstr ""
+
+#: club/templates/club/payment_form.html:60
+msgid "E-mail:"
 msgstr ""
 
-#: club/templates/club/payment_form.html:58
+#: club/templates/club/payment_form.html:65
+msgid "Phone number:"
+msgstr ""
+
+#: club/templates/club/payment_form.html:70
+msgid "Postal address:"
+msgstr ""
+
+#: club/templates/club/payment_form.html:87
 msgid "I'd like to receive informations about new publications."
 msgstr ""
 
-#: club/templates/club/payment_form.html:62
+#: club/templates/club/payment_form.html:91
 msgid ""
 "You can unsubscribe at any point. More in the <a target=\"_blank\" href="
 "\"https://nowoczesnapolska.org.pl/prywatnosc/\">privacy policy</a>."
 msgstr ""
 
-#: club/templates/club/payment_form.html:65
+#: club/templates/club/payment_form.html:94
 msgid "Donate"
 msgstr ""
 
index 37d635f..655a66d 100644 (file)
@@ -32,7 +32,7 @@ msgstr ""
 msgid "Club"
 msgstr ""
 
-#: club/forms.py:32
+#: club/forms.py:70
 #, python-format
 msgid "Minimal amount is %(amount)d PLN."
 msgstr ""
@@ -69,142 +69,214 @@ msgstr ""
 msgid "clubs"
 msgstr ""
 
-#: club/models.py:48
+#: club/models.py:61
 msgid "key"
 msgstr ""
 
-#: club/models.py:49
+#: club/models.py:62
 msgid "email"
 msgstr ""
 
-#: club/models.py:50 club/models.py:143
+#: club/models.py:63 club/models.py:182
 msgid "membership"
 msgstr ""
 
-#: club/models.py:51
+#: club/models.py:64 club/models.py:388
 msgid "amount"
 msgstr ""
 
-#: club/models.py:52 club/templates/club/payment_form.html:21
+#: club/models.py:65
+msgid "method"
+msgstr ""
+
+#: club/models.py:68 club/templates/club/payment_form.html:25
 msgid "monthly"
 msgstr ""
 
-#: club/models.py:53
+#: club/models.py:69
 msgid "yearly"
 msgstr ""
 
-#: club/models.py:55
+#: club/models.py:71
 msgid "source"
 msgstr ""
 
-#: club/models.py:57
+#: club/models.py:73
 msgid "cancelled"
 msgstr ""
 
-#: club/models.py:58
+#: club/models.py:74
 msgid "payed at"
 msgstr ""
 
-#: club/models.py:59
+#: club/models.py:75
 msgid "started at"
 msgstr ""
 
-#: club/models.py:60
+#: club/models.py:76
 msgid "expires_at"
 msgstr ""
 
-#: club/models.py:64
+#: club/models.py:85
 msgid "schedule"
 msgstr ""
 
-#: club/models.py:65
+#: club/models.py:86
 msgid "schedules"
 msgstr ""
 
-#: club/models.py:135
+#: club/models.py:174
 msgid "user"
 msgstr ""
 
-#: club/models.py:136
+#: club/models.py:175
 msgid "created at"
 msgstr ""
 
-#: club/models.py:137 club/models.py:198
+#: club/models.py:176 club/models.py:237
 msgid "name"
 msgstr ""
 
-#: club/models.py:138
+#: club/models.py:177
 msgid "manual"
 msgstr ""
 
-#: club/models.py:139
+#: club/models.py:178
 msgid "notes"
 msgstr ""
 
-#: club/models.py:140
+#: club/models.py:179
 msgid "updated at"
 msgstr ""
 
-#: club/models.py:144
+#: club/models.py:183
 msgid "memberships"
 msgstr ""
 
-#: club/models.py:181
+#: club/models.py:220
 msgid "days before"
 msgstr ""
 
-#: club/models.py:182
+#: club/models.py:221
 msgid "subject"
 msgstr ""
 
-#: club/models.py:183 club/payu/models.py:140
+#: club/models.py:222 club/payu/models.py:140
 msgid "body"
 msgstr ""
 
-#: club/models.py:186
+#: club/models.py:225
 msgid "reminder email"
 msgstr ""
 
-#: club/models.py:187
+#: club/models.py:226
 msgid "reminder emails"
 msgstr ""
 
-#: club/models.py:192
+#: club/models.py:231
 #, python-format
 msgid "a day before expiration"
 msgid_plural "%d days before expiration"
 msgstr[0] ""
 msgstr[1] ""
 
-#: club/models.py:194
+#: club/models.py:233
 #, python-format
 msgid "a day after expiration"
 msgid_plural "%d days after expiration"
 msgstr[0] ""
 msgstr[1] ""
 
-#: club/models.py:199
+#: club/models.py:238
 msgid "photo"
 msgstr ""
 
-#: club/models.py:200
+#: club/models.py:239
 msgid "text"
 msgstr ""
 
-#: club/models.py:203
+#: club/models.py:242
 msgid "ambassador"
 msgstr ""
 
-#: club/models.py:204
+#: club/models.py:243
 msgid "ambassadors"
 msgstr ""
 
-#: club/models.py:235 club/templates/club/index.html:7
+#: club/models.py:274 club/templates/club/index.html:7
 #: club/templates/club/index.html:13 club/templates/club/thanks.html:6
 #: club/templates/payu/rec_payment.html:5
 msgid "Towarzystwo Przyjaciół Wolnych Lektur"
 msgstr ""
 
+#: club/models.py:370
+msgid "first name"
+msgstr ""
+
+#: club/models.py:371
+msgid "last name"
+msgstr ""
+
+#: club/models.py:372
+msgid "sex"
+msgstr ""
+
+#: club/models.py:376
+msgid "date of birth"
+msgstr ""
+
+#: club/models.py:377
+msgid "street"
+msgstr ""
+
+#: club/models.py:378
+msgid "building"
+msgstr ""
+
+#: club/models.py:379
+msgid "flat"
+msgstr ""
+
+#: club/models.py:380
+msgid "town"
+msgstr ""
+
+#: club/models.py:381
+msgid "postal code"
+msgstr ""
+
+#: club/models.py:382
+msgid "phone"
+msgstr ""
+
+#: club/models.py:383
+msgid "e-mail"
+msgstr ""
+
+#: club/models.py:384
+msgid "IBAN"
+msgstr ""
+
+#: club/models.py:385
+msgid "payment identifier"
+msgstr ""
+
+#: club/models.py:386
+msgid "agree newsletter"
+msgstr ""
+
+#: club/models.py:387
+msgid "date"
+msgstr ""
+
+#: club/models.py:391
+msgid "direct debit"
+msgstr ""
+
+#: club/models.py:392
+msgid "direct debits"
+msgstr ""
+
 #: club/payu/models.py:17 club/payu/models.py:29
 msgid "POS id"
 msgstr ""
@@ -367,38 +439,50 @@ msgstr ""
 msgid "transfer"
 msgstr ""
 
-#: club/templates/club/payment_form.html:15
+#: club/templates/club/payment_form.html:18
 msgid "Choose your type of support"
 msgstr ""
 
-#: club/templates/club/payment_form.html:20
+#: club/templates/club/payment_form.html:24
 msgid "one-time"
 msgstr ""
 
-#: club/templates/club/payment_form.html:24
+#: club/templates/club/payment_form.html:28
 msgid "Choose the amount"
 msgstr ""
 
-#: club/templates/club/payment_form.html:32
-#: club/templates/club/payment_form.html:45
+#: club/templates/club/payment_form.html:36
+#: club/templates/club/payment_form.html:49
 msgid "different amount"
 msgstr ""
 
-#: club/templates/club/payment_form.html:51
-msgid "Provide an e-mail address"
+#: club/templates/club/payment_form.html:57
+msgid "Provide contact details"
+msgstr ""
+
+#: club/templates/club/payment_form.html:60
+msgid "E-mail:"
 msgstr ""
 
-#: club/templates/club/payment_form.html:58
+#: club/templates/club/payment_form.html:65
+msgid "Phone number:"
+msgstr ""
+
+#: club/templates/club/payment_form.html:70
+msgid "Postal address:"
+msgstr ""
+
+#: club/templates/club/payment_form.html:87
 msgid "I'd like to receive informations about new publications."
 msgstr ""
 
-#: club/templates/club/payment_form.html:62
+#: club/templates/club/payment_form.html:91
 msgid ""
 "You can unsubscribe at any point. More in the <a target=\"_blank\" href="
 "\"https://nowoczesnapolska.org.pl/prywatnosc/\">privacy policy</a>."
 msgstr ""
 
-#: club/templates/club/payment_form.html:65
+#: club/templates/club/payment_form.html:94
 msgid "Donate"
 msgstr ""
 
diff --git a/src/club/migrations/0032_auto_20210730_1104.py b/src/club/migrations/0032_auto_20210730_1104.py
new file mode 100644 (file)
index 0000000..4c02e1f
--- /dev/null
@@ -0,0 +1,31 @@
+# Generated by Django 2.2.19 on 2021-07-30 09:04
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('club', '0031_auto_20210622_0945'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Consent',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('order', models.IntegerField()),
+                ('active', models.BooleanField(default=True)),
+                ('text', models.CharField(max_length=2048)),
+                ('required', models.BooleanField()),
+            ],
+            options={
+                'ordering': ['order'],
+            },
+        ),
+        migrations.AddField(
+            model_name='schedule',
+            name='consent',
+            field=models.ManyToManyField(to='club.Consent'),
+        ),
+    ]
diff --git a/src/club/migrations/0033_auto_20210730_1145.py b/src/club/migrations/0033_auto_20210730_1145.py
new file mode 100644 (file)
index 0000000..6ea56c7
--- /dev/null
@@ -0,0 +1,23 @@
+# Generated by Django 2.2.19 on 2021-07-30 09:45
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('club', '0032_auto_20210730_1104'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='schedule',
+            name='phone',
+            field=models.CharField(blank=True, max_length=255),
+        ),
+        migrations.AddField(
+            model_name='schedule',
+            name='postal',
+            field=models.TextField(blank=True),
+        ),
+    ]
diff --git a/src/club/migrations/0034_auto_20210730_1407.py b/src/club/migrations/0034_auto_20210730_1407.py
new file mode 100644 (file)
index 0000000..b8f1501
--- /dev/null
@@ -0,0 +1,57 @@
+# Generated by Django 2.2.19 on 2021-07-30 12:07
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('club', '0033_auto_20210730_1145'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='schedule',
+            name='postal',
+        ),
+        migrations.AddField(
+            model_name='schedule',
+            name='first_name',
+            field=models.CharField(blank=True, max_length=255),
+        ),
+        migrations.AddField(
+            model_name='schedule',
+            name='last_name',
+            field=models.CharField(blank=True, max_length=255),
+        ),
+        migrations.AddField(
+            model_name='schedule',
+            name='postal_1',
+            field=models.CharField(blank=True, max_length=255),
+        ),
+        migrations.AddField(
+            model_name='schedule',
+            name='postal_2',
+            field=models.CharField(blank=True, max_length=255),
+        ),
+        migrations.AddField(
+            model_name='schedule',
+            name='postal_3',
+            field=models.CharField(blank=True, max_length=255),
+        ),
+        migrations.AddField(
+            model_name='schedule',
+            name='postal_4',
+            field=models.CharField(blank=True, max_length=255),
+        ),
+        migrations.AddField(
+            model_name='schedule',
+            name='postal_code',
+            field=models.CharField(blank=True, max_length=255),
+        ),
+        migrations.AddField(
+            model_name='schedule',
+            name='postal_country',
+            field=models.CharField(blank=True, max_length=255),
+        ),
+    ]
diff --git a/src/club/migrations/0035_schedule_postal_town.py b/src/club/migrations/0035_schedule_postal_town.py
new file mode 100644 (file)
index 0000000..8a444e7
--- /dev/null
@@ -0,0 +1,18 @@
+# Generated by Django 2.2.19 on 2021-07-30 12:12
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('club', '0034_auto_20210730_1407'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='schedule',
+            name='postal_town',
+            field=models.CharField(blank=True, max_length=255),
+        ),
+    ]
diff --git a/src/club/migrations/0036_auto_20210730_1437.py b/src/club/migrations/0036_auto_20210730_1437.py
new file mode 100644 (file)
index 0000000..28779fb
--- /dev/null
@@ -0,0 +1,36 @@
+# Generated by Django 2.2.19 on 2021-07-30 12:37
+
+from django.db import migrations
+import django_countries.fields
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('club', '0035_schedule_postal_town'),
+    ]
+
+    operations = [
+        migrations.RenameField(
+            model_name='schedule',
+            old_name='postal_1',
+            new_name='postal',
+        ),
+        migrations.RemoveField(
+            model_name='schedule',
+            name='postal_2',
+        ),
+        migrations.RemoveField(
+            model_name='schedule',
+            name='postal_3',
+        ),
+        migrations.RemoveField(
+            model_name='schedule',
+            name='postal_4',
+        ),
+        migrations.AlterField(
+            model_name='schedule',
+            name='postal_country',
+            field=django_countries.fields.CountryField(blank=True, default='PL', max_length=2),
+        ),
+    ]
index 8905f08..77d1bb2 100644 (file)
@@ -13,6 +13,7 @@ from django.db import models
 from django import template
 from django.utils.timezone import now
 from django.utils.translation import ugettext_lazy as _, ungettext, ugettext, get_language
+from django_countries.fields import CountryField
 from catalogue.utils import get_random_hash
 from messaging.states import Level
 from reporting.utils import render_to_pdf
@@ -43,6 +44,19 @@ class Club(models.Model):
         return [int(x) for x in self.monthly_amounts.split(',')]
 
 
+class Consent(models.Model):
+    order = models.IntegerField()
+    active = models.BooleanField(default=True)
+    text = models.CharField(max_length=2048)
+    required = models.BooleanField()
+
+    class Meta:
+        ordering = ['order']
+    
+    def __str__(self):
+        return self.text
+
+
 class Schedule(models.Model):
     """ Represents someone taking up a plan. """
     key = models.CharField(_('key'), max_length=255, unique=True)
@@ -63,6 +77,16 @@ class Schedule(models.Model):
     expires_at = models.DateTimeField(_('expires_at'), null=True, blank=True)
     email_sent = models.BooleanField(default=False)
 
+    first_name = models.CharField(max_length=255, blank=True)
+    last_name = models.CharField(max_length=255, blank=True)
+    phone = models.CharField(max_length=255, blank=True)
+    postal = models.CharField(max_length=255, blank=True)
+    postal_code = models.CharField(max_length=255, blank=True)
+    postal_town = models.CharField(max_length=255, blank=True)
+    postal_country = CountryField(default='PL', blank=True)
+
+    consent = models.ManyToManyField(Consent)
+    
     class Meta:
         verbose_name = _('schedule')
         verbose_name_plural = _('schedules')
@@ -148,6 +172,9 @@ class Schedule(models.Model):
         Contact.update(self.email, level, since, self.expires_at)
 
 
+
+
+
 class Membership(models.Model):
     """ Represents a user being recognized as a member of the club. """
     user = models.OneToOneField(settings.AUTH_USER_MODEL, verbose_name=_('user'), on_delete=models.CASCADE)
index 982ca79..004f4e6 100644 (file)
         }
     }
 }
+
+
+label.required {
+    &::before {
+        content: " * ";
+        color: red;
+    }
+}
+
+
+
+.helptext {
+    position: relative;
+
+    .short {
+        height: 1.5em;
+        overflow: hidden;
+        position: relative;
+        
+        &:after {
+            content:' ';
+            position:absolute;
+            bottom:0;
+            width:25%;
+            height:20px;
+            background-color:transparent;
+            overflow: hidden;
+            /* assume ltr */
+            right:0;
+            background-image:-webkit-linear-gradient(to right,rgba(255,255,255,0),#ffffff 50%);
+            background-image:-moz-linear-gradient(to right,rgba(255,255,255,0),#ffffff 50%);
+            background-image:-o-linear-gradient(to right,rgba(255,255,255,0),#ffffff 50%);
+            background-image:linear-gradient(to right,rgba(255,255,255,0),#ffffff 50%)
+        }
+    }
+
+    .morelink {
+        position: absolute;
+        top: 0;
+        right: 0;
+        &:after {
+            content: " ↓";
+        }
+    }
+}
+
+
+#payment-form {
+    textarea {
+        box-sizing: border-box;
+        padding: 8px;
+        width: 440px;
+        height: 4em;
+    }
+    input[type="text"], input[type="email"] {
+        box-sizing: border-box;
+        width: 440px;
+        padding: 8px;
+        &#id_postal_code {
+            width: 120px;
+        }
+        &#id_postal_town {
+            width: 320px;
+        }
+    }
+    select {
+        box-sizing: border-box;
+        width: 440px;
+        padding: 8px;
+    }
+}
index 72d3e25..58d564c 100644 (file)
   </div>
 </div>
 
-<h3>3. {% trans "Provide an e-mail address" %}</h3>
+<h3>3. {% trans "Provide contact details" %}</h3>
+
+<p>
+  <label class="required">{% trans "First and last name:" %}</label><br>
+  {{ form.first_name }}
+  <br><br>
+  {{ form.last_name }}
+</p>
+
+
+<p>
+  <label for="id_email" {% if form.email.field.required %}class="required"{% endif %}>{% trans "E-mail:" %}</label><br>
+  {{ form.email }}
+</p>
+
+<p>
+  <label for="id_phone" {% if form.phone.field.required %}class="required"{% endif %}>{% trans "Phone number:" %}</label><br>
+  {{ form.phone }}
+</p>
+
+<p>
+  <label for="id_postal"  {% if form.postal.field.required %}class="required"{% endif %}>{% trans "Postal address:" %}</label><br>
+  {{ form.postal }}<br>
+  {{ form.postal_code }} {{ form.postal_town }}<br>
+  {{ form.postal_country }}
+</p>
+
+{% for c, key, consent_field in form.consent %}
+  <p>
+    {{ consent_field }}
+    <label for="id_{{ key }}" {% if c.required %}class="required"{% endif %}>
+      {{ consent_field.label }}
+    </label>
+  </p>
+{% endfor %}
 
-<p>{{ form.email }}</p>
 
 <p>
   {{ form.agree_newsletter }}
   <label for="id_agree_newsletter">
-    {% trans "I'd like to receive informations about new publications." %}
+    {% trans "I'd like to subscribe the newsletter." %}
   </label>
 </p>
 
 <p class="helptext">{% trans 'You can unsubscribe at any point. More in the <a target="_blank" href="https://nowoczesnapolska.org.pl/prywatnosc/">privacy policy</a>.' %}</p>
-<p class="helptext">{{ form.data_processing }}</p>
+
+<div class="helptext">{{ form.data_processing|safe }}</div>
 
 <div><button class="submit" type='submit'>{% trans "Donate" %}</button></div>
index 1d77372..e6f10f8 100644 (file)
@@ -63,6 +63,7 @@ INSTALLED_APPS_CONTRIB = [
     'getpaid.backends.payu',
     'django_extensions',
     'forms_builder.forms',
+    'django_countries',
 
     'debug_toolbar',