Club renewal procedure fixes.
authorRadek Czajka <rczajka@rczajka.pl>
Fri, 15 Apr 2022 14:55:13 +0000 (16:55 +0200)
committerRadek Czajka <rczajka@rczajka.pl>
Fri, 15 Apr 2022 14:55:13 +0000 (16:55 +0200)
27 files changed:
src/catalogue/locale/pl/LC_MESSAGES/django.po
src/catalogue/templates/catalogue/2022/book_detail.html
src/catalogue/templates/catalogue/audiobook_zip_readme.txt
src/catalogue/templates/catalogue/book_short.html
src/catalogue/templates/catalogue/book_wide.html
src/club/civicrm.py
src/club/locale/pl/LC_MESSAGES/django.mo
src/club/locale/pl/LC_MESSAGES/django.po
src/club/management/commands/payu_fake_notify.py [new file with mode: 0644]
src/club/models.py
src/club/payment_methods.py
src/club/payu/models.py
src/club/payu/tests/integration.py
src/club/static/club/form.js
src/club/templates/club/dummy_payment.html
src/club/templates/club/index.html
src/club/templates/club/membership_form_app.html
src/club/templates/club/schedule.html
src/club/templates/club/thanks.html
src/club/templates/club/year_summary.html
src/club/templates/payu/rec_payment.html
src/club/urls.py
src/club/views.py
src/paypal/urls.py
src/wolnelektury/templates/board_base.html
src/wolnelektury/templates/user.html
src/wolnelektury/urls.py

index 07af503..9c9c661 100644 (file)
@@ -164,7 +164,7 @@ msgstr "slug"
 msgid "language code"
 msgstr "Kod języka"
 
 msgid "language code"
 msgstr "Kod języka"
 
-#: catalogue/models/book.py:67 catalogue/models/book.py:429
+#: catalogue/models/book.py:67 catalogue/models/book.py:436
 #: catalogue/models/collection.py:16 catalogue/models/tag.py:61
 #: catalogue/models/tag.py:137
 msgid "description"
 #: catalogue/models/collection.py:16 catalogue/models/tag.py:61
 #: catalogue/models/tag.py:137
 msgid "description"
@@ -253,21 +253,21 @@ msgstr "książka"
 msgid "books"
 msgstr "książki"
 
 msgid "books"
 msgstr "książki"
 
-#: catalogue/models/book.py:621
+#: catalogue/models/book.py:628
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Utwór \"%s\" nie istnieje."
 
 #, python-format
 msgid "Book \"%s\" does not exist."
 msgstr "Utwór \"%s\" nie istnieje."
 
-#: catalogue/models/book.py:637
+#: catalogue/models/book.py:644
 #, python-format
 msgid "Book %s already exists"
 msgstr "Książka %s już istnieje"
 
 #, python-format
 msgid "Book %s already exists"
 msgstr "Książka %s już istnieje"
 
-#: catalogue/models/book.py:955
+#: catalogue/models/book.py:962
 msgid "This work needs modernisation"
 msgstr "Ten utwór wymaga uwspółcześnienia"
 
 msgid "This work needs modernisation"
 msgstr "Ten utwór wymaga uwspółcześnienia"
 
-#: catalogue/models/book.py:1045 catalogue/models/bookmedia.py:34
+#: catalogue/models/book.py:1052 catalogue/models/bookmedia.py:34
 #, python-format
 msgid "%s file"
 msgstr "plik %s"
 #, python-format
 msgid "%s file"
 msgstr "plik %s"
@@ -792,12 +792,14 @@ msgstr "Przepraszamy! Zapytanie jest zbyt długie."
 msgid "Sorry! Search query must have at least two characters."
 msgstr "Przepraszamy! Zapytanie musi zawierać co najmniej dwa znaki."
 
 msgid "Sorry! Search query must have at least two characters."
 msgstr "Przepraszamy! Zapytanie musi zawierać co najmniej dwa znaki."
 
-#: catalogue/templates/catalogue/snippets/2022_jplayer.html:53
+#: catalogue/templates/catalogue/snippets/2022_jplayer.html:47
+#: catalogue/templates/catalogue/snippets/2022_jplayer.html:113
 #: catalogue/templates/catalogue/snippets/jplayer.html:36
 msgid "Artist:"
 msgstr "Czyta"
 
 #: catalogue/templates/catalogue/snippets/jplayer.html:36
 msgid "Artist:"
 msgstr "Czyta"
 
-#: catalogue/templates/catalogue/snippets/2022_jplayer.html:54
+#: catalogue/templates/catalogue/snippets/2022_jplayer.html:48
+#: catalogue/templates/catalogue/snippets/2022_jplayer.html:114
 #: catalogue/templates/catalogue/snippets/jplayer.html:37
 msgid "director:"
 msgstr "reż."
 #: catalogue/templates/catalogue/snippets/jplayer.html:37
 msgid "director:"
 msgstr "reż."
index a265abe..a70cba0 100644 (file)
           <div class="c-support">
             <div>
               <h2>Ta książka jest dostępna dla tysięcy dzieciaków dzięki <span>darowiznom</span> od osób takich jak <span>Ty</span>!</h2>
           <div class="c-support">
             <div>
               <h2>Ta książka jest dostępna dla tysięcy dzieciaków dzięki <span>darowiznom</span> od osób takich jak <span>Ty</span>!</h2>
-              <a href="/towarzystwo/">Dorzuć się!</a>
+              <a href="{% url 'club_join' %}">Dorzuć się!</a>
             </div>
             <figure>
               <img src="{% static '2022/images/dziecko.jpeg' %}" alt="Dorzuć się!">
             </div>
             <figure>
               <img src="{% static '2022/images/dziecko.jpeg' %}" alt="Dorzuć się!">
index 9ffa03f..f7933ba 100644 (file)
@@ -1,7 +1,7 @@
 Ten audiobook pochodzi z darmowej biblioteki internetowej Wolne Lektury. Znajdziesz w niej tysiące ebooków i setki audiobooków.
 Wolne Lektury to projekt prowadzony przez fundację Nowoczesna Polska. Jesteśmy organizacją pozarządową. Działamy dzięki wsparciu darczyńców takich jak Ty. 
 Wspólnie możemy udostępnić kolejne książki. Wspieraj Wolne Lektury stałą comiesięczną kwotą. Dzięki temu wcześniej uzyskasz dostęp do wyjątkowych publikacji! Możesz też wesprzeć nas jednorazowo. 
 Ten audiobook pochodzi z darmowej biblioteki internetowej Wolne Lektury. Znajdziesz w niej tysiące ebooków i setki audiobooków.
 Wolne Lektury to projekt prowadzony przez fundację Nowoczesna Polska. Jesteśmy organizacją pozarządową. Działamy dzięki wsparciu darczyńców takich jak Ty. 
 Wspólnie możemy udostępnić kolejne książki. Wspieraj Wolne Lektury stałą comiesięczną kwotą. Dzięki temu wcześniej uzyskasz dostęp do wyjątkowych publikacji! Możesz też wesprzeć nas jednorazowo. 
-Wejdź na https://wolnelektury.pl/towarzystwo/ i dorzuć się do nowych nagrań.
+Wejdź na https://wolnelektury.pl/pomagam/ i dorzuć się do nowych nagrań.
 
 Audiobooki Wolnych Lektur są udostępniane na wolnych licencjach, co oznacza, że możesz je swobodnie wykorzystywać, udostępniać i publikować pod warunkiem zachowania warunków licencji i zgodnie z Zasadami wykorzystania Wolnych Lektur: https://wolnelektury.pl/info/zasady-wykorzystania/ 
 
 
 Audiobooki Wolnych Lektur są udostępniane na wolnych licencjach, co oznacza, że możesz je swobodnie wykorzystywać, udostępniać i publikować pod warunkiem zachowania warunków licencji i zgodnie z Zasadami wykorzystania Wolnych Lektur: https://wolnelektury.pl/info/zasady-wykorzystania/ 
 
@@ -9,7 +9,7 @@ Audiobooki Wolnych Lektur są udostępniane na wolnych licencjach, co oznacza, 
 
 {% endif %}Przekaż 1% na wolną bibliotekę KRS 0000070056: https://wolnelektury.pl/info/wesprzyj-nas/
 
 
 {% endif %}Przekaż 1% na wolną bibliotekę KRS 0000070056: https://wolnelektury.pl/info/wesprzyj-nas/
 
-Zostań Przyjacielem Wolnych Lektur: https://wolnelektury.pl/towarzystwo/
+Zostań Przyjacielem Wolnych Lektur: https://wolnelektury.pl/pomagam/
 
 Słuchaj nas na YouTube: https://wolnelektury.pl/re/WolneLekturyYT/
 
 
 Słuchaj nas na YouTube: https://wolnelektury.pl/re/WolneLekturyYT/
 
index 25c1309..6f88cf0 100644 (file)
         {% block preview-info %}
           <p class="book-box-tools book-box-tools-warn">
             {% trans "For now this work is only available for our subscribers." %}
         {% block preview-info %}
           <p class="book-box-tools book-box-tools-warn">
             {% trans "For now this work is only available for our subscribers." %}
-           <a href="/towarzystwo/">Dołącz do Towarzystwa Przyjaciół Wolnych Lektur</a>
+           <a href="{% url 'club_join' %}">Wspieraj Wolne Lektury</a>
          </p>
           <div>{% content_warning book %}</div>
         {% endblock %}
          </p>
           <div>{% content_warning book %}</div>
         {% endblock %}
index d7c2a09..9413ee7 100644 (file)
@@ -46,7 +46,7 @@
 
     {% if book|status:request.user == 'closed' %}
       {% with form=club_form %}
 
     {% if book|status:request.user == 'closed' %}
       {% with form=club_form %}
-        <form method="POST" action="/towarzystwo/" id="payment-form" class="wlform">
+        <form method="POST" action="{% url 'club_join' %}" id="payment-form" class="wlform">
           {% csrf_token %}
           {% include "club/payment_form.html" %}
           {% chunk 'club_form_bottom' %}
           {% csrf_token %}
           {% include "club/payment_form.html" %}
           {% chunk 'club_form_bottom' %}
index c44f6f8..ac3de70 100644 (file)
@@ -9,8 +9,8 @@ import yaml
 class CiviCRM:
     def __init__(self, base, key):
         self.base = base
 class CiviCRM:
     def __init__(self, base, key):
         self.base = base
-        self.api_base = base + 'civicrm/ajax/api4/'
         self.key = key
         self.key = key
+        self.api_base = (base or '') + 'civicrm/ajax/api4/'
         self.enabled = bool(self.base and self.key)
 
     def request(self, resource, method, params):
         self.enabled = bool(self.base and self.key)
 
     def request(self, resource, method, params):
@@ -89,6 +89,9 @@ class CiviCRM:
                 
 
     def report_activity(self, email, tpwl_key, key, name, datetime, details):
                 
 
     def report_activity(self, email, tpwl_key, key, name, datetime, details):
+        if not self.enabled:
+            return
+
         contact_id = self.create_or_update_contact(email, tpwl_key)
 
         activity_id = self.get_activity_id(key)
         contact_id = self.create_or_update_contact(email, tpwl_key)
 
         activity_id = self.get_activity_id(key)
index 882e493..34073f1 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 729cb8b..e8dabe1 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2021-08-23 11:23+0200\n"
+"PO-Revision-Date: 2022-04-15 16:32+0200\n"
 "Last-Translator: \n"
 "Language-Team: \n"
 "Language: pl\n"
 "Last-Translator: \n"
 "Language-Team: \n"
 "Language: pl\n"
@@ -17,7 +17,7 @@ msgstr ""
 "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n"
 "%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n"
 "%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
 "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n"
 "%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n"
 "%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
-"X-Generator: Poedit 2.4.1\n"
+"X-Generator: Poedit 3.0\n"
 
 #: club/admin.py:46
 msgid "payment complete"
 
 #: club/admin.py:46
 msgid "payment complete"
@@ -226,12 +226,6 @@ msgstr "ambasador"
 msgid "ambassadors"
 msgstr "ambasadorowie"
 
 msgid "ambassadors"
 msgstr "ambasadorowie"
 
-#: club/models.py:281 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/payu/models.py:17 club/payu/models.py:29
 msgid "POS id"
 msgstr ""
 #: club/payu/models.py:17 club/payu/models.py:29
 msgid "POS id"
 msgstr ""
@@ -316,6 +310,15 @@ msgstr "Aktywne roczne wpłaty cykliczne"
 msgid "One-time donations in last 30 days"
 msgstr "Jednorazowe wpłaty w ciągu ostatnich 30 dni"
 
 msgid "One-time donations in last 30 days"
 msgstr "Jednorazowe wpłaty w ciągu ostatnich 30 dni"
 
+#: club/templates/club/dummy_payment.html:4 club/templates/club/index.html:7
+#: club/templates/club/index.html:13
+#: club/templates/club/membership_form_app.html:5
+#: club/templates/club/schedule.html:5 club/templates/club/thanks.html:6
+#: club/templates/club/year_summary.html:5
+#: club/templates/payu/rec_payment.html:5
+msgid "Wolne Lektury need your help!"
+msgstr "Wolne Lektury potrzebują Twojej pomocy!"
+
 #: club/templates/club/index.html:20
 msgid "Congratulations – you're already a supporter of Wolne Lektury!"
 msgstr "Gratulacje – należysz już do Towarzystwa Przyjaciół Wolnych Lektur!"
 #: club/templates/club/index.html:20
 msgid "Congratulations – you're already a supporter of Wolne Lektury!"
 msgstr "Gratulacje – należysz już do Towarzystwa Przyjaciół Wolnych Lektur!"
@@ -341,19 +344,19 @@ msgid "Thank you for your support! Support us again!"
 msgstr ""
 "Dziękujemy za Twoje dotychczasowe zaangażowanie! Wesprzyj nas ponownie!"
 
 msgstr ""
 "Dziękujemy za Twoje dotychczasowe zaangażowanie! Wesprzyj nas ponownie!"
 
-#: club/templates/club/membership_form.html:21
-msgid "Thank you for wanting to free the books with us!"
-msgstr "Dziękujemy, że chcesz razem z nami uwalniać książki!"
-
-#: club/templates/club/membership_form.html:26
+#: club/templates/club/membership_form.html:20
 msgid "See your past support."
 msgstr "Zobacz swoje dotychczasowe wsparcie."
 
 msgid "See your past support."
 msgstr "Zobacz swoje dotychczasowe wsparcie."
 
-#: club/templates/club/membership_form.html:41
+#: club/templates/club/membership_form.html:24
+msgid "Thank you for wanting to free the books with us!"
+msgstr "Dziękujemy, że chcesz razem z nami uwalniać książki!"
+
+#: club/templates/club/membership_form.html:43
 msgid "Help us get 100 new Friends by the end of the school semester."
 msgstr "Pomóż nam zdobyć 100 nowych Przyjaciół do końca semestru szkolnego."
 
 msgid "Help us get 100 new Friends by the end of the school semester."
 msgstr "Pomóż nam zdobyć 100 nowych Przyjaciół do końca semestru szkolnego."
 
-#: club/templates/club/membership_form.html:42
+#: club/templates/club/membership_form.html:44
 #, python-format
 msgid ""
 "\n"
 #, python-format
 msgid ""
 "\n"
@@ -382,7 +385,7 @@ msgstr[3] ""
 "Od początku tej kampanii stałą wpłatą wsparło nas już <b style=\"color: "
 "#0d7e85\">%(supporters)s</b> czytelników i czytelniczek,"
 
 "Od początku tej kampanii stałą wpłatą wsparło nas już <b style=\"color: "
 "#0d7e85\">%(supporters)s</b> czytelników i czytelniczek,"
 
-#: club/templates/club/membership_form.html:47
+#: club/templates/club/membership_form.html:49
 #, python-format
 msgid ""
 "\n"
 #, python-format
 msgid ""
 "\n"
@@ -509,6 +512,11 @@ msgstr ""
 "\n"
 "Zlecasz comiesięczną płatność w wysokości %(amount)s zł. Dziękujemy!"
 
 "\n"
 "Zlecasz comiesięczną płatność w wysokości %(amount)s zł. Dziękujemy!"
 
+#, fuzzy
+#~| msgid "Support Wolne Lektury"
+#~ msgid "Wolne Lektury"
+#~ msgstr "Wspieraj Wolne Lektury"
+
 #~ msgid "sex"
 #~ msgstr "płeć"
 
 #~ msgid "sex"
 #~ msgstr "płeć"
 
diff --git a/src/club/management/commands/payu_fake_notify.py b/src/club/management/commands/payu_fake_notify.py
new file mode 100644 (file)
index 0000000..a216ac5
--- /dev/null
@@ -0,0 +1,25 @@
+# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+#
+import json
+from django.core.management.base import BaseCommand
+from club.models import PayUOrder
+
+
+class Command(BaseCommand):
+    def add_arguments(self, parser):
+        parser.add_argument('--rejected', '-r', type=bool, default=False)
+        parser.add_argument('order_id', type=int)
+    
+    def handle(self, **options):
+        order = PayUOrder.objects.get(id=options['order_id'])
+        status = 'REJECTED' if options['rejected'] else 'COMPLETED'
+        notification = order.notification_set.create(
+            body=json.dumps({
+                'order': {
+                    'status': status,
+                    'fake': True,
+                }
+            })
+        )
+        notification.apply()
index 548423a..f09b68e 100644 (file)
@@ -278,7 +278,7 @@ class PayUOrder(payu_models.Order):
             self.schedule.get_thanks_url())
 
     def get_description(self):
             self.schedule.get_thanks_url())
 
     def get_description(self):
-        return ugettext('Towarzystwo Przyjaciół Wolnych Lektur')
+        return 'Wolne Lektury'
 
     def is_recurring(self):
         return self.schedule.get_payment_method().is_recurring
 
     def is_recurring(self):
         return self.schedule.get_payment_method().is_recurring
index c207685..0c187a8 100644 (file)
@@ -9,6 +9,9 @@ from paypal.rest import agreement_approval_url
 class PaymentMethod(object):
     is_onetime = False
     is_recurring = False
 class PaymentMethod(object):
     is_onetime = False
     is_recurring = False
+    expiration_reliable = False
+    cancellable = False
+    updateable = False
 
     def initiate(self, request, schedule):
         return reverse('club_dummy_payment', args=[schedule.key])
 
     def initiate(self, request, schedule):
         return reverse('club_dummy_payment', args=[schedule.key])
@@ -16,6 +19,7 @@ class PaymentMethod(object):
 
 class PayU(PaymentMethod):
     is_onetime = True
 
 class PayU(PaymentMethod):
     is_onetime = True
+    expiration_reliable = True
     slug = 'payu'
     name = 'PayU'
     template_name = 'club/payment/payu.html'
     slug = 'payu'
     name = 'PayU'
     template_name = 'club/payment/payu.html'
@@ -39,6 +43,9 @@ class PayURe(PaymentMethod):
     name = 'PayU recurring'
     template_name = 'club/payment/payu-re.html'
     is_recurring = True
     name = 'PayU recurring'
     template_name = 'club/payment/payu-re.html'
     is_recurring = True
+    expiration_reliable = True
+    cancellable = True
+    updateable = True
 
     def __init__(self, pos_id):
         self.pos_id = pos_id
 
     def __init__(self, pos_id):
         self.pos_id = pos_id
index 5764f88..6ed329d 100644 (file)
@@ -89,7 +89,7 @@ class Order(models.Model):
             "merchantPosId": self.pos_id,
             "currencyCode": self.get_pos().currency_code,
             "totalAmount": str(int(self.get_amount() * 100)),
             "merchantPosId": self.pos_id,
             "currencyCode": self.get_pos().currency_code,
             "totalAmount": str(int(self.get_amount() * 100)),
-            "extOrderId": "wolne-lektury-rcz-%d" % self.pk,
+            "extOrderId": "wolne-lektury-%d" % self.pk,
 
             "buyer": self.get_buyer() or {},
             "continueUrl": self.get_continue_url(),
 
             "buyer": self.get_buyer() or {},
             "continueUrl": self.get_continue_url(),
index 3cef8ae..64f2fe7 100644 (file)
@@ -18,6 +18,6 @@ class SandboxTestCase(StaticLiveServerTestCase):
         super().tearDownClass()
 
     def test_payment(self):
         super().tearDownClass()
 
     def test_payment(self):
-        self.selenium.get('%s%s' % (self.live_server_url, '/towarzystwo/'))
+        self.selenium.get('%s%s' % (self.live_server_url, '/pomagam/'))
         from time import sleep
         sleep(10)
         from time import sleep
         sleep(10)
index 3b85a4e..a32a589 100644 (file)
@@ -26,7 +26,7 @@ $(function() {
 
     $("#payment-form").submit(function() {
         let camp = qs('pk_campaign');
 
     $("#payment-form").submit(function() {
         let camp = qs('pk_campaign');
-        if (!camp && window.location.pathname !== "/towarzystwo/") {
+        if (!camp && window.location.pathname !== "/pomagam/") {
             camp = window.location.pathname;
         }
         let dims = camp ? {dimension1: camp} : {};
             camp = window.location.pathname;
         }
         let dims = camp ? {dimension1: camp} : {};
index 2809c5e..d776e75 100644 (file)
@@ -1,72 +1,72 @@
 {% extends request.session.from_app|yesno:"base/app.html,base/base.html" %}
 
 
 {% extends request.session.from_app|yesno:"base/app.html,base/base.html" %}
 
 
-{% block titleextra %}Towarzystwo Wolnych Lektur{% endblock %}
+{% block titleextra %}{% trans "Wolne Lektury need your help!" %}{% endblock %}
 
 
 {% block body %}
 
 
 {% block body %}
-<div class="white-box normal-text">
-
-       <h1>Testowa płatność</h1>
-
-       <p>     {{ schedule.email }}</p>
-       <p>     {{ schedule.amount }}</p>
-       <p>     {{ schedule.plan.get_interval_display }}</p>
-
-<!--form method="POST" action="">
-  {% csrf_token %}
-
-  {{ form.as_p }}
-  <button type='submit'>Zapłać</button>
-</form-->
-
-
-{% if request.GET.p == 'inline' %}
-<div id="payu-widget"></div>
-{% else %}
-{% if request.GET.p == 'popup' %}
-<form action="http://exampledomain.com/processOrder.php" method="post">
-    <button id="pay-button">Pay now</button>
-</form>
-<script
-    src="https://secure.payu.com/front/widget/js/payu-bootstrap.js"
-    pay-button="#pay-button"
-    merchant-pos-id="145227"
-    shop-name="Nazwa sklepu"
-    total-amount="9.99"
-    currency-code="PLN"
-    customer-language="pl"
-    store-card="true"
-    customer-email="email@exampledomain.com"
-    sig="250f5f53e465777b6fefb04f171a21b598ccceb2899fc9f229604ad529c69532">
-</script>
-
-
-{% else %}
- <form method="POST" action="">
-  {% csrf_token %}
-
-  {{ form.as_p }}
-  <button type='submit'>Zapłać</button>
-</form>
-{% endif %}
-{% endif %}
-
-</div>
-
-<script
-    src="https://secure.payu.com/front/widget/js/payu-bootstrap.js"
-    merchant-pos-id="145227"
-    shop-name="TEST"
-    total-amount="12345"
-    currency-code="PLN"
-    customer-language="en"
-    store-card="true"
-    payu-brand="false"
-    success-callback="test"
-    widget-mode="use"
-    customer-email="test@test.com"
-    sig="203ec8c4b9571ce6b4c03058f57264f04d06d00a86da19390d47ba1be4551578"
-</script>
+  <div class="white-box normal-text">
+
+    <h1>Testowa płatność</h1>
+
+    <p>        {{ schedule.email }}</p>
+    <p>        {{ schedule.amount }}</p>
+    <p>        {{ schedule.plan.get_interval_display }}</p>
+
+    <!--form method="POST" action="">
+         {% csrf_token %}
+
+         {{ form.as_p }}
+         <button type='submit'>Zapłać</button>
+         </form-->
+
+
+    {% if request.GET.p == 'inline' %}
+      <div id="payu-widget"></div>
+    {% else %}
+      {% if request.GET.p == 'popup' %}
+        <form action="http://exampledomain.com/processOrder.php" method="post">
+          <button id="pay-button">Pay now</button>
+        </form>
+        <script
+            src="https://secure.payu.com/front/widget/js/payu-bootstrap.js"
+            pay-button="#pay-button"
+            merchant-pos-id="145227"
+            shop-name="Nazwa sklepu"
+            total-amount="9.99"
+            currency-code="PLN"
+            customer-language="pl"
+            store-card="true"
+            customer-email="email@exampledomain.com"
+            sig="250f5f53e465777b6fefb04f171a21b598ccceb2899fc9f229604ad529c69532">
+        </script>
+
+
+      {% else %}
       <form method="POST" action="">
+          {% csrf_token %}
+
+          {{ form.as_p }}
+          <button type='submit'>Zapłać</button>
+        </form>
+      {% endif %}
+    {% endif %}
+
+  </div>
+
+  <script
+      src="https://secure.payu.com/front/widget/js/payu-bootstrap.js"
+      merchant-pos-id="145227"
+      shop-name="TEST"
+      total-amount="12345"
+      currency-code="PLN"
+      customer-language="en"
+      store-card="true"
+      payu-brand="false"
+      success-callback="test"
+      widget-mode="use"
+      customer-email="test@test.com"
+      sig="203ec8c4b9571ce6b4c03058f57264f04d06d00a86da19390d47ba1be4551578"
+  </script>
 
 {% endblock %}
 
 {% endblock %}
index 6796f25..4268be1 100644 (file)
@@ -4,13 +4,13 @@
 {% load chunks %}
 
 
 {% load chunks %}
 
 
-{% block titleextra %}{% trans "Towarzystwo Przyjaciół Wolnych Lektur" %}{% endblock %}
+{% block titleextra %}{% trans "Wolne Lektury need your help!" %}{% endblock %}
 
 
 {% block body %}
   <div class="white-box normal-text">
 
 
 
 {% block body %}
   <div class="white-box normal-text">
 
-    <h1>{% trans "Towarzystwo Przyjaciół Wolnych Lektur" %}</h1>
+    <h1>{% trans "Wolne Lektury need your help!" %}</h1>
 
     {% chunk 'club' %}
 
 
     {% chunk 'club' %}
 
index 62ad688..433b6fc 100644 (file)
@@ -1,19 +1,20 @@
 {% extends "base/app.html" %}
 {% extends "base/app.html" %}
+{% load i18n %}
 
 
 
 
-{% block titleextra %}Towarzystwo Wolnych Lektur{% endblock %}
+{% block titleextra %}{% trans "Wolne Lektury need your help!" %}{% endblock %}
 
 
 {% block body %}
 
 
 {% block body %}
-<div class="white-box normal-text">
+  <div class="white-box normal-text">
 
 
-       <h1>{% if membership %}Odnów swoje członkostwo w Towarzystwie Wolnych Lektur{% else %}Dołącz do Towarzystwa Wolnych Lektur{% endif %}</h1>
+    <h1>{% if membership %}Odnów swoje wsparcie dla Wolnych Lektur{% else %}Wspieraj Wolne Lektury{% endif %}</h1>
 
 
-<form method="POST" action="">
-  {% csrf_token %}
+    <form method="POST" action="">
+      {% csrf_token %}
 
 
-  {{ form.as_p }}
-  <button type='submit'>Dołącz</button>
+      {{ form.as_p }}
+  <button type='submit'>Wspieraj</button>
 </form>
 
 </div>
 </form>
 
 </div>
index adf8f91..9505cdd 100644 (file)
@@ -1,35 +1,75 @@
 {% extends "base/base.html" %}
 {% extends "base/base.html" %}
+{% load i18n %}
 
 
 
 
-{% block titleextra %}Towarzystwo Przyjaciół Wolnych Lektur{% endblock %}
+{% block titleextra %}{% trans "Wolne Lektury need your help!" %}{% endblock %}
 
 
 {% block body %}
 <div class="white-box normal-text">
 
 
 
 {% block body %}
 <div class="white-box normal-text">
 
-<h1>
-Cieszymy się, że jesteś z nami! Dziękujemy za wsparcie!
-</h1>
-<p>
-Od <strong>{{ schedule.started_at.date }}</strong>
-{% if schedule.expires_at %}
-  do <strong>{{ schedule.expires_at.date }}</strong>
-{% endif %}
-wspierasz nas kwotą {{ schedule.amount }} zł{% if schedule.monthly %} miesięcznie{% endif %}{% if schedule.yearly %} rocznie{% endif %}.
-</p>
+  <h1>
+    Cieszymy się, że jesteś z nami! Dziękujemy za wsparcie!
+  </h1>
+  <p>
+
+
+    {% if schedule.payed_at %}
+      Kwota:
+      {{ schedule.amount }} zł
+
+      <br>
+
+      Pierwsza wpłata:
+      {{ schedule.payed_at.date }}
+
+      <br>
+
+      {% if schedule.is_expired %}
+        <strong style="color: red">
+          Status darczyńcy nieaktywny od
+          {{ schedule.expires_at.date }}
+        </strong>
+      {% else %}
+        <strong style="color: green">
+          Status darczyńcy aktywny
+          {% if schedule.get_payment_method.expiration_reliable %}
+            do
+            {{ schedule.expires_at.date }}
+          {% endif %}
+        </strong>
+      {% endif %}
+
+      <br>
+
+  {% endif %}
+
+
 
 {% if schedule.is_active %}
   {% if schedule.is_recurring %}
      {% if schedule.is_cancelled %}
          <p><strong>Płatność anulowana.</strong></p>
          <p>
 
 {% if schedule.is_active %}
   {% if schedule.is_recurring %}
      {% if schedule.is_cancelled %}
          <p><strong>Płatność anulowana.</strong></p>
          <p>
-           <a style="background:#018189;color:white;border-radius: 10px;padding:1em 2em" href="/towarzystwo/dolacz/">Wpłać ponownie</a>
+           <a style="background:#018189;color:white;border-radius: 10px;padding:1em 2em" href="/pomagam/">Wpłać ponownie</a>
          </p>
      {% else %}
          </p>
      {% else %}
-       <form class="wlform" method='post' action="{% url 'club_cancel' schedule.key %}">
-        {% csrf_token %}
-       <button type="submit" class="submit" style="font-size: .9em">Zrezygnuj z kolejnej płatności</button>
-       </form>
+         {% if schedule.get_payment_method.updateable %}
+           <form method='post' action='' class="wlform">
+             {% csrf_token %}
+             <button type="submit" class="submit">
+               Zaktualizuj dane płatności
+             </button>
+           </form>
+           <br>
+         {% endif %}
+
+         {% if schedule.get_payment_method.cancellable %}
+           <form class="wlform" method='post' action="{% url 'club_cancel' schedule.key %}">
+             {% csrf_token %}
+            <button type="submit" class="submit" style="font-size: .9em">Zrezygnuj z kolejnych płatności</button>
+           </form>
+         {% endif %}
      {% endif %}
   {% else %}
      <form class="wlform" method='post' action=''>
      {% endif %}
   {% else %}
      <form class="wlform" method='post' action=''>
@@ -40,12 +80,18 @@ wspierasz nas kwotą {{ schedule.amount }} zł{% if schedule.monthly %} miesięc
 
 
 {% else %}
 
 
 {% else %}
- {% if schedule.is_expired %}
-   Członkostwo wygasło.
-   <form method='post' action='' class="wlform">
-        {% csrf_token %}
-       <button type="submit" class="submit">Dorzuć się ponownie</button>
-   </form>
+  {% if schedule.is_expired %}
+
+    <form method='post' action='' class="wlform">
+      {% csrf_token %}
+      <button type="submit" class="submit">
+        {% if schedule.is_recurring %}
+          Zaktualizuj dane płatności
+        {% else %}
+          Dorzuć się ponownie
+        {% endif %}
+      </button>
+    </form>
 
 
  {% else %}
 
 
  {% else %}
@@ -55,9 +101,9 @@ wspierasz nas kwotą {{ schedule.amount }} zł{% if schedule.monthly %} miesięc
      Czekamy na potwierdzenie płatności.
    {% else %}
 
      Czekamy na potwierdzenie płatności.
    {% else %}
 
-     <form method='post' action=''>
+     <form method='post' action='' class="wlform">
         {% csrf_token %}
         {% csrf_token %}
-       <button type="submit" class="submit">Dorzuć się</button>
+       <button type="submit" class="submit">Dokończ płatność</button>
      </form>
 
    {% endif %}
      </form>
 
    {% endif %}
@@ -66,32 +112,34 @@ wspierasz nas kwotą {{ schedule.amount }} zł{% if schedule.monthly %} miesięc
 {% endif %}
 
 
 {% endif %}
 
 
-<hr style="margin: 2em 0;">
-
+{% if not schedule.membership %}
 
 
-<h2>Towarzystwo Przyjaciół Wolnych Lektur</h2>
+  <hr style="margin: 2em 0;">
 
 
+  <h2>Powiązanie z kontem użytkownika</h2>
 
 
-{% if schedule.membership %}
-  <p>
-  Należysz już do Towarzystwa Przyjaciół Wolnych Lektur!</p>
-{% else %}
 
 <p>
 
 <p>
-Twoje wsparcie upoważnia Cię do członkostwa w Towarzystwie Przyjaciół Wolnych Lektur.
-Aby w pełni z niego korzystać, zapisz się do Towarzystwa swoim kontem użytkownika na Wolnych Lekturach.
+Twoje wsparcie upoważnia Cię do przedpremierowego dostępu do publikacji.
+Aby z niego korzystać, powiąż darowiznę ze swoim kontem użytkownika na Wolnych Lekturach.
 </p>
 
 
 </p>
 
 
-<p>
-<a style="background:#018189;color:white;border-radius: 10px;padding:1em 2em;" href="{% url 'club_claim' schedule.key %}">Zapisz się</a>
+<p style="margin-top:2em;">
+  <a style="background:#018189;color:white;border-radius: 10px;padding:1em 2em;" href="{% url 'club_claim' schedule.key %}">
+    {% if request.user.is_authenticated %}
+      Powiąż darowiznę z kontem <strong>{{ request.user.username }}</strong>
+    {% else %}
+      Zaloguj się i powiąż darowiznę z kontem
+    {% endif %}
+  </a>
 </p>
 {% endif %}
 
 
 
 
 </p>
 {% endif %}
 
 
 
 
-       
+
 <a href="">
 
 </div>
 <a href="">
 
 </div>
index eff910a..a527d00 100644 (file)
@@ -3,20 +3,20 @@
 {% load i18n %}
 
 
 {% load i18n %}
 
 
-{% block titleextra %}{% trans "Towarzystwo Przyjaciół Wolnych Lektur" %}{% endblock %}
+{% block titleextra %}{% trans "Wolne Lektury need your help!" %}{% endblock %}
 
 
 {% block body %}
 
 
 
 
 {% block body %}
 
 
-<div class="white-box normal-text">
+  <div class="white-box normal-text">
 
 
-  <h1>{% trans "Thank you" %}</h1>
+    <h1>{% trans "Thank you" %}</h1>
 
 
-  {% chunk 'club_thanks' %}
+    {% chunk 'club_thanks' %}
 
 
-  {% if request.session.from_app %}
-    <a href="wolnelekturyapp://paypal_return">{% trans "Go back to the app" %}</a>
+    {% if request.session.from_app %}
+      <a href="wolnelekturyapp://paypal_return">{% trans "Go back to the app" %}</a>
   {% endif %}
 
 </div>
   {% endif %}
 
 </div>
index 20ed198..32e1ffd 100644 (file)
@@ -2,7 +2,7 @@
 {% load chunks i18n %}
 
 
 {% load chunks i18n %}
 
 
-{% block titleextra %}Towarzystwo Przyjaciół Wolnych Lektur{% endblock %}
+{% block titleextra %}{% trans "Wolne Lektury need your help!" %}{% endblock %}
 
 
 {% block body %}
 
 
 {% block body %}
index 71dcdca..4c840a6 100644 (file)
@@ -2,7 +2,7 @@
 {% load i18n %}
 
 
 {% load i18n %}
 
 
-{% block titleextra %}{% trans "Towarzystwo Przyjaciół Wolnych Lektur" %}{% endblock %}
+{% block titleextra %}{% trans "Wolne Lektury need your help!" %}{% endblock %}
 
 
 {% block body %}
 
 
 {% block body %}
       {% endblocktrans %}
     </p>
 
       {% endblocktrans %}
     </p>
 
-       <form id="theform" method='POST'>
-               {% csrf_token %}
-               {{ form }}
-       </form>
+    <form id="theform" method='POST'>
+      {% csrf_token %}
+      {{ form }}
+    </form>
 
 
 
 
 
 
-<script>
- function paymentcallback(data) {
-     $("#theform #id_token").val(data.value);
-     $("#theform").submit()
- }
-</script>
+    <script>
    function paymentcallback(data) {
+         $("#theform #id_token").val(data.value);
+         $("#theform").submit()
    }
+    </script>
 
 
-<div id="payu-widget"></div>
-<script
-    src="{{ pos.get_api_host }}/front/widget/js/payu-bootstrap.js"
+    <div id="payu-widget"></div>
+    <script
+        src="{{ pos.get_api_host }}/front/widget/js/payu-bootstrap.js"
 
 
-    {% for k, v in widget_args.items %}
-       {{ k }}="{{ v }}"
-    {% endfor %}
+        {% for k, v in widget_args.items %}
+            {{ k }}="{{ v }}"
+        {% endfor %}
 
 
-    success-callback="paymentcallback"
-    sig="{{ widget_sig }}">
-</script>
+        success-callback="paymentcallback"
+        sig="{{ widget_sig }}">
+    </script>
 
 </div>
 
 
 </div>
 
index d55ef17..9b9d897 100644 (file)
@@ -2,12 +2,15 @@
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
 from django.urls import path
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
 from django.urls import path
+from django.views.generic import RedirectView
 from annoy.utils import banner_exempt
 from . import views
 
 
 urlpatterns = [
     path('', banner_exempt(views.JoinView.as_view()), name='club_join'),
 from annoy.utils import banner_exempt
 from . import views
 
 
 urlpatterns = [
     path('', banner_exempt(views.JoinView.as_view()), name='club_join'),
+    path('dolacz/', RedirectView.as_view(
+        url='/pomagam/', permanent=False)),
     path('info/', banner_exempt(views.ClubView.as_view()), name='club'),
 
     path('plan/<key>/', banner_exempt(views.ScheduleView.as_view()), name='club_schedule'),
     path('info/', banner_exempt(views.ClubView.as_view()), name='club'),
 
     path('plan/<key>/', banner_exempt(views.ScheduleView.as_view()), name='club_schedule'),
@@ -23,7 +26,5 @@ urlpatterns = [
 
     path('notify/<int:pk>/', views.PayUNotifyView.as_view(), name='club_payu_notify'),
 
 
     path('notify/<int:pk>/', views.PayUNotifyView.as_view(), name='club_payu_notify'),
 
-    path('czlonek/', views.MembershipView.as_view(), name='club_membership'),
-
     path('weryfikacja/', views.member_verify, name='club_member_verify'),
 ]
     path('weryfikacja/', views.member_verify, name='club_member_verify'),
 ]
index dc1bef0..74d86de 100644 (file)
@@ -149,17 +149,6 @@ class PayUNotifyView(payu_views.NotifyView):
     order_model = models.PayUOrder
 
 
     order_model = models.PayUOrder
 
 
-class MembershipView(UpdateView):
-    fields = ['name']
-
-    def get_success_url(self):
-        # TODO: get only current schedule if multiple.
-        return self.object.schedule_set.first().get_absolute_url()
-
-    def get_object(self):
-        return self.request.user.membership
-
-
 class ScheduleThanksView(DetailView):
     model = models.Schedule
     slug_field = slug_url_kwarg = 'key'
 class ScheduleThanksView(DetailView):
     model = models.Schedule
     slug_field = slug_url_kwarg = 'key'
index 7adf644..7c4f693 100644 (file)
@@ -6,8 +6,8 @@ from django.views.generic import RedirectView
 from . import views
 
 urlpatterns = (
 from . import views
 
 urlpatterns = (
-    path('form/', RedirectView.as_view(url='/towarzystwo/dolacz/')),
-    path('app-form/', RedirectView.as_view(url='/towarzystwo/dolacz/app/')),
+    path('form/', RedirectView.as_view(url='/pomagam/')),
+    path('app-form/', RedirectView.as_view(url='/pomagam/?pk_campaign=aplikacja')),
 
     path('return/<key>/', views.paypal_return, name='paypal_return'),
     path('app-return/<key>/', views.paypal_return, kwargs={'app': True}, name='paypal_app_return'),
 
     path('return/<key>/', views.paypal_return, name='paypal_return'),
     path('app-return/<key>/', views.paypal_return, kwargs={'app': True}, name='paypal_app_return'),
index 29dff3c..0a83b80 100644 (file)
@@ -14,7 +14,7 @@
 <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
   <a class="navbar-brand" href="{% url 'forum:index' %}">
     {% block brand %}
 <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
   <a class="navbar-brand" href="{% url 'forum:index' %}">
     {% block brand %}
-      <img src="{% static 'img/logo-neon-transp.png' %}" alt="Towarzystwo Przyjaciół Wolnych Lektur">
+      <img src="{% static 'img/logo-neon-transp.png' %}" alt="Wolne Lektury">
     {% endblock %}
   </a>
 
     {% endblock %}
   </a>
 
index 0f261f9..3adb030 100644 (file)
@@ -12,7 +12,7 @@
     <p><a href="{% url 'account_email' %}">{% trans "E-mail" %}</a></p>
     <p><a href="{% url 'socialaccount_connections' %}">{% trans "Social accounts" %}</a></p>
     {% if request.user.membership %}
     <p><a href="{% url 'account_email' %}">{% trans "E-mail" %}</a></p>
     <p><a href="{% url 'socialaccount_connections' %}">{% trans "Social accounts" %}</a></p>
     {% if request.user.membership %}
-      <p><a href="{% url 'club_join' %}">Należysz do Towarzystwa Przyjaciół Wolnych Lektur</a></p> 
+      <p><a href="{% url 'club_join' %}">Wspierasz Wolne Lektury, dziękujemy!</a></p>
     {% endif %}
   </div>
 {% endblock %}
     {% endif %}
   </div>
 {% endblock %}
index 11722fc..5fdff16 100644 (file)
@@ -49,19 +49,11 @@ urlpatterns += [
     path('messaging/', include('messaging.urls')),
     path('re/', include('redirects.urls')),
     path('stats/', include('stats.urls')),
     path('messaging/', include('messaging.urls')),
     path('re/', include('redirects.urls')),
     path('stats/', include('stats.urls')),
-
-    path('paypal/app-form/', RedirectView.as_view(
-        url='/towarzystwo/?pk_campaign=aplikacja', permanent=False)),
-    path('towarzystwo/dolacz/', RedirectView.as_view(
-        url='/towarzystwo/', permanent=False)),
-
     path('paypal/', include('paypal.urls')),
     path('powiadomienie/', include('push.urls')),
     path('paypal/', include('paypal.urls')),
     path('powiadomienie/', include('push.urls')),
-    path('towarzystwo/', include('club.urls')),
-    #path('pomagam/', include('club.urls2')),
-    path('pomagam/', RedirectView.as_view(
-        url='/towarzystwo/?pk_campaign=pomagam', permanent=False)),
-    
+    path('pomagam/', include('club.urls')),
+    path('towarzystwo/<path:path>', RedirectView.as_view(
+        url='/pomagam/%(path)s', permanent=False)),
 
     # Admin panel
     path('admin/catalogue/book/import', catalogue.views.import_book, name='import_book'),
 
     # Admin panel
     path('admin/catalogue/book/import', catalogue.views.import_book, name='import_book'),