Club prepared.
authorRadek Czajka <rczajka@rczajka.pl>
Mon, 17 Jun 2019 13:24:51 +0000 (15:24 +0200)
committerRadek Czajka <rczajka@rczajka.pl>
Mon, 17 Jun 2019 13:25:22 +0000 (15:25 +0200)
29 files changed:
src/catalogue/api/views.py
src/catalogue/templates/catalogue/book_short.html
src/catalogue/templates/catalogue/snippets/jplayer.html
src/catalogue/views.py
src/club/locale/pl/LC_MESSAGES/django.mo
src/club/locale/pl/LC_MESSAGES/django.po
src/club/migrations/0010_auto_20190529_0946.py [new file with mode: 0644]
src/club/models.py
src/club/payment_methods.py
src/club/payu/models.py
src/club/static/club/mastercard.png [new file with mode: 0644]
src/club/static/club/visa-100.png [new file with mode: 0644]
src/club/static/club/visa.png [new file with mode: 0644]
src/club/templates/club/email/thanks.txt [new file with mode: 0644]
src/club/templates/club/email/thanks_subject.txt [new file with mode: 0644]
src/club/templates/club/index.html
src/club/templates/club/membership_form.html
src/club/templates/club/payment/payu-re.html
src/club/templates/club/payment/payu.html
src/club/templates/club/schedule.html
src/club/templates/club/thanks.html [new file with mode: 0644]
src/club/urls.py
src/club/views.py
src/wolnelektury/settings/custom.py
src/wolnelektury/static/scss/main/form.scss
src/wolnelektury/templates/base/app.html
src/wolnelektury/templates/base/superbase.html
src/wolnelektury/templates/user.html
src/wolnelektury/urls.py

index 5a064c1..ee9f074 100644 (file)
@@ -3,6 +3,8 @@
 #
 import json
 from django.http import Http404, HttpResponse
 #
 import json
 from django.http import Http404, HttpResponse
+from django.utils.decorators import method_decorator
+from django.views.decorators.cache import never_cache
 from rest_framework.generics import ListAPIView, RetrieveAPIView, get_object_or_404
 from rest_framework.permissions import DjangoModelPermissionsOrAnonReadOnly
 from rest_framework.response import Response
 from rest_framework.generics import ListAPIView, RetrieveAPIView, get_object_or_404
 from rest_framework.permissions import DjangoModelPermissionsOrAnonReadOnly
 from rest_framework.response import Response
@@ -227,6 +229,7 @@ class EpubView(RetrieveAPIView):
     lookup_field = 'slug'
     permission_classes = [IsClubMember]
 
     lookup_field = 'slug'
     permission_classes = [IsClubMember]
 
+    @method_decorator(never_cache)
     def get(self, *args, **kwargs):
         return HttpResponse(self.get_object().get_media('epub'))
 
     def get(self, *args, **kwargs):
         return HttpResponse(self.get_object().get_media('epub'))
 
index 4f186e8..ccb1004 100644 (file)
           </li>
         </ul>
       {% else %}
           </li>
         </ul>
       {% else %}
-        <p class="book-box-tools">{% trans "For now this work is only available for our subscribers." %}</p>
+        <p class="book-box-tools">{% trans "For now this work is only available for our subscribers." %}
+          <a href="/towarzystwo/">Dołącz do Towarzystwa Przyjaciół Wolnych Lektur</a>
+       </p>
       {% endif %}
       {% endcache %}
       {% block book-box-extra-info %}{% endblock %}
       {% endif %}
       {% endcache %}
       {% block book-box-extra-info %}{% endblock %}
     {% endwith %}
 
     {% block right-column %}
     {% endwith %}
 
     {% block right-column %}
-      {% if audiobooks %}
+      {% if audiobooks %}{% if book|status:request.user != 'closed' %}
         <div class="book-right-column">
           {% include 'catalogue/snippets/jplayer.html' %}
         </div>
         <div class="book-right-column">
           {% include 'catalogue/snippets/jplayer.html' %}
         </div>
-      {% endif %}
+      {% endif %}{% endif %}
     {% endblock %}
     {% if book.abstract %}
       <div class="abstract more-expand">
     {% endblock %}
     {% if book.abstract %}
       <div class="abstract more-expand">
index e3c88c1..46eef40 100644 (file)
@@ -1,5 +1,5 @@
-{% load i18n %}
-{% if audiobooks %}
+{% load i18n catalogue_tags %}
+{% if audiobooks %}{% if book|status:request.user != 'closed' %}
   <div class="jp-type-playlist">
     <div id="jplayer" class="jp-jplayer" data-player="jp_container_{{ book.pk }}"
          data-supplied="oga,mp3"></div>
   <div class="jp-type-playlist">
     <div id="jplayer" class="jp-jplayer" data-player="jp_container_{{ book.pk }}"
          data-supplied="oga,mp3"></div>
@@ -61,4 +61,4 @@
       {% endif %}
     </div>
   </div>
       {% endif %}
     </div>
   </div>
-{% endif %}
+{% endif %}{% endif %}
index 2ea5eb0..6299cd1 100644 (file)
@@ -15,6 +15,7 @@ from django.contrib.auth.decorators import login_required, user_passes_test
 from django.utils.http import urlquote_plus
 from django.utils import translation
 from django.utils.translation import ugettext as _, ugettext_lazy
 from django.utils.http import urlquote_plus
 from django.utils import translation
 from django.utils.translation import ugettext as _, ugettext_lazy
+from django.views.decorators.cache import never_cache
 
 from ajaxable.utils import AjaxableFormView
 from club.models import Membership
 
 from ajaxable.utils import AjaxableFormView
 from club.models import Membership
@@ -354,6 +355,7 @@ def tag_info(request, tag_id):
     return HttpResponse(tag.description)
 
 
     return HttpResponse(tag.description)
 
 
+@never_cache
 def embargo_link(request, format_, slug):
     book = get_object_or_404(Book, slug=slug)
     if format_ not in Book.formats:
 def embargo_link(request, format_, slug):
     book = get_object_or_404(Book, slug=slug)
     if format_ not in Book.formats:
index 576eae0..921c37a 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 0cb3e24..a631b73 100644 (file)
@@ -8,7 +8,7 @@ msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-03-04 11:36+0100\n"
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-03-04 11:36+0100\n"
-"PO-Revision-Date: 2019-03-04 11:34+0100\n"
+"PO-Revision-Date: 2019-06-17 15:08+0200\n"
 "Last-Translator: \n"
 "Language-Team: \n"
 "Language: pl\n"
 "Last-Translator: \n"
 "Language-Team: \n"
 "Language: pl\n"
@@ -26,11 +26,11 @@ msgstr "miesięcznie"
 
 #: models.py:26
 msgid "a year"
 
 #: models.py:26
 msgid "a year"
-msgstr "rocznie"
+msgstr "raz do roku"
 
 #: models.py:27
 msgid "in perpetuity"
 
 #: models.py:27
 msgid "in perpetuity"
-msgstr "na zawsze"
+msgstr "raz na zawsze"
 
 #: models.py:30
 msgid "inteval"
 
 #: models.py:30
 msgid "inteval"
diff --git a/src/club/migrations/0010_auto_20190529_0946.py b/src/club/migrations/0010_auto_20190529_0946.py
new file mode 100644 (file)
index 0000000..77f13de
--- /dev/null
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.20 on 2019-05-29 07:46
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('club', '0009_auto_20190510_1510'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='schedule',
+            name='email_sent',
+            field=models.BooleanField(default=False),
+        ),
+        migrations.AlterField(
+            model_name='schedule',
+            name='method',
+            field=models.CharField(choices=[('payu', 'PayU'), ('payu-re', 'PayU (płatność odnawialna)')], max_length=255, verbose_name='method'),
+        ),
+    ]
index d7be287..1f47d58 100644 (file)
@@ -1,8 +1,10 @@
 from datetime import datetime, timedelta
 from django.conf import settings
 from django.contrib.sites.models import Site
 from datetime import datetime, timedelta
 from django.conf import settings
 from django.contrib.sites.models import Site
+from django.core.mail import send_mail
 from django.urls import reverse
 from django.db import models
 from django.urls import reverse
 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 catalogue.utils import get_random_hash
 from django.utils.timezone import now
 from django.utils.translation import ugettext_lazy as _, ungettext, ugettext, get_language
 from catalogue.utils import get_random_hash
@@ -67,6 +69,7 @@ class Schedule(models.Model):
     is_cancelled = models.BooleanField(_('cancelled'), default=False)
     started_at = models.DateTimeField(_('started at'), auto_now_add=True)
     expires_at = models.DateTimeField(_('expires_at'), null=True, blank=True)
     is_cancelled = models.BooleanField(_('cancelled'), default=False)
     started_at = models.DateTimeField(_('started at'), auto_now_add=True)
     expires_at = models.DateTimeField(_('expires_at'), null=True, blank=True)
+    email_sent = models.BooleanField(default=False)
 
     class Meta:
         verbose_name = _('schedule')
 
     class Meta:
         verbose_name = _('schedule')
@@ -89,6 +92,9 @@ class Schedule(models.Model):
     def get_absolute_url(self):
         return reverse('club_schedule', args=[self.key])
 
     def get_absolute_url(self):
         return reverse('club_schedule', args=[self.key])
 
+    def get_thanks_url(self):
+        return reverse('club_thanks', args=[self.key])
+
     def get_payment_method(self):
         return method_by_slug[self.method]
 
     def get_payment_method(self):
         return method_by_slug[self.method]
 
@@ -98,6 +104,15 @@ class Schedule(models.Model):
     def is_active(self):
         return self.expires_at is not None and self.expires_at > now()
 
     def is_active(self):
         return self.expires_at is not None and self.expires_at > now()
 
+    def send_email(self):
+        ctx = {'schedule': self}
+        send_mail(
+            template.loader.render_to_string('club/email/thanks_subject.txt', ctx).strip(),
+            template.loader.render_to_string('club/email/thanks.txt', ctx),
+            settings.CONTACT_EMAIL, [self.email], fail_silently=False)
+        self.email_sent = True
+        self.save()
+
 
 class Membership(models.Model):
     """ Represents a user being recognized as a member of the club. """
 
 class Membership(models.Model):
     """ Represents a user being recognized as a member of the club. """
@@ -167,7 +182,7 @@ class PayUOrder(payu_models.Order):
     def get_continue_url(self):
         return "https://{}{}".format(
             Site.objects.get_current().domain,
     def get_continue_url(self):
         return "https://{}{}".format(
             Site.objects.get_current().domain,
-            self.schedule.get_absolute_url())
+            self.schedule.get_thanks_url())
 
     def get_description(self):
         return ugettext('Towarzystwo Wolnych Lektur')
 
     def get_description(self):
         return ugettext('Towarzystwo Wolnych Lektur')
@@ -191,6 +206,9 @@ class PayUOrder(payu_models.Order):
                 self.schedule.expires_at = new_exp
                 self.schedule.save()
 
                 self.schedule.expires_at = new_exp
                 self.schedule.save()
 
+            if not self.schedule.email_sent:
+                self.schedule.send_email()
+
 
 class PayUCardToken(payu_models.CardToken):
     schedule = models.ForeignKey(Schedule, on_delete=models.CASCADE)
 
 class PayUCardToken(payu_models.CardToken):
     schedule = models.ForeignKey(Schedule, on_delete=models.CASCADE)
index b215b1d..ca34ace 100644 (file)
@@ -32,7 +32,7 @@ class PayU(PaymentMethod):
 
 class PayURe(PaymentMethod):
     slug='payu-re'
 
 class PayURe(PaymentMethod):
     slug='payu-re'
-    name = 'PayU Recurring'
+    name = 'PayU (płatność odnawialna)'
     template_name = 'club/payment/payu-re.html'
     is_recurring = True
 
     template_name = 'club/payment/payu-re.html'
     is_recurring = True
 
@@ -55,7 +55,7 @@ class PayURe(PaymentMethod):
 
 class PayPal(PaymentMethod):
     slug='paypal'
 
 class PayPal(PaymentMethod):
     slug='paypal'
-    name = 'PayPal'
+    name = 'PayPal (płatność odnawialna)'
     template_name = 'club/payment/paypal.html'
     is_recurring = True
     is_onetime = True
     template_name = 'club/payment/paypal.html'
     is_recurring = True
     is_onetime = True
@@ -66,13 +66,6 @@ class PayPal(PaymentMethod):
 
 methods = []
 
 
 methods = []
 
-pos = getattr(settings, 'CLUB_PAYU_POS', None)
-if pos:
-    payu_method = PayU(pos)
-    methods.append(payu_method)
-else:
-    payu_method = None
-
 pos= getattr(settings, 'CLUB_PAYU_RECURRING_POS', None)
 if pos:
     payure_method = PayURe(pos)
 pos= getattr(settings, 'CLUB_PAYU_RECURRING_POS', None)
 if pos:
     payure_method = PayURe(pos)
@@ -80,8 +73,15 @@ if pos:
 else:
     payure_method = None
 
 else:
     payure_method = None
 
+pos = getattr(settings, 'CLUB_PAYU_POS', None)
+if pos:
+    payu_method = PayU(pos)
+    methods.append(payu_method)
+else:
+    payu_method = None
+
 
 
-methods.append(PayPal())
+#methods.append(PayPal())
 
 
 method_by_slug = {
 
 
 method_by_slug = {
index 4ab2c0a..4fe4d94 100644 (file)
@@ -120,7 +120,7 @@ class Order(models.Model):
         self.save()
 
         
         self.save()
 
         
-        return response.get('redirectUri', self.schedule.get_absolute_url())
+        return response.get('redirectUri', self.schedule.get_thanks_url())
 
 
 class Notification(models.Model):
 
 
 class Notification(models.Model):
diff --git a/src/club/static/club/mastercard.png b/src/club/static/club/mastercard.png
new file mode 100644 (file)
index 0000000..f1400cf
Binary files /dev/null and b/src/club/static/club/mastercard.png differ
diff --git a/src/club/static/club/visa-100.png b/src/club/static/club/visa-100.png
new file mode 100644 (file)
index 0000000..477ecf3
Binary files /dev/null and b/src/club/static/club/visa-100.png differ
diff --git a/src/club/static/club/visa.png b/src/club/static/club/visa.png
new file mode 100644 (file)
index 0000000..5666e7b
Binary files /dev/null and b/src/club/static/club/visa.png differ
diff --git a/src/club/templates/club/email/thanks.txt b/src/club/templates/club/email/thanks.txt
new file mode 100644 (file)
index 0000000..86e1e54
--- /dev/null
@@ -0,0 +1,13 @@
+{% load chunks %}{% chunk "club_email_thanks" %}
+
+Od {{ schedule.started_at.date }} wspierasz nas kwotą {{ schedule.amount }} zł {{ schedule.plan.get_interval_display }}.
+
+{% if schedule.membership %}
+{% chunk "club_email_thanks_registered" %}
+{% else %}
+{% chunk "club_email_thanks_unregistered" %}
+
+https://wolnelektury.pl{{ schedule.get_absolute_url }}
+{% endif %}
+
+{% chunk "club_email_thanks_bottom" %}
diff --git a/src/club/templates/club/email/thanks_subject.txt b/src/club/templates/club/email/thanks_subject.txt
new file mode 100644 (file)
index 0000000..00189a0
--- /dev/null
@@ -0,0 +1 @@
+{% load chunks %}{% chunk "club_email_thanks_subject" %}
index fd36aad..ba5977b 100644 (file)
@@ -1,22 +1,26 @@
 {% extends "base/base.html" %}
 {% load active_schedule from club %}
 {% extends "base/base.html" %}
 {% load active_schedule from club %}
+{% load chunks %}
 
 
 
 
-{% block titleextra %}Towarzystwo Wolnych Lektur{% endblock %}
+{% block titleextra %}Towarzystwo Przyjaciół Wolnych Lektur{% endblock %}
 
 
 {% block body %}
 <div class="white-box normal-text">
 
 
 
 {% block body %}
 <div class="white-box normal-text">
 
-       <h1>Towarzystwo Wolnych Lektur</h1>
+       <h1>Towarzystwo Przyjaciół Wolnych Lektur</h1>
 
        <p>Towarzystwo jest fajne.</p>
 
        <p>Towarzystwo jest fajne.</p>
+       {% chunk 'club' %}
 
 
+
+<p style="margin-top: 2em;">
 {% with schedule=request.user|active_schedule %}
 {% if schedule %}
 {% with schedule=request.user|active_schedule %}
 {% if schedule %}
-<p><a href="{{ schedule.get_absolute_url }}">Jesteś już w Towarzystwie</a>!</p>
+<a href="{{ schedule.get_absolute_url }}">Gratulacje – należysz już do Towarzystwa Przyjaciół Wolnych Lektur!</a></p>
 {% else %}
 {% else %}
-<a href="{% url 'club_join' %}">Dołącz do Towarzystwa</a>.
+<a style="background:#018189;color:white;border-radius: 10px;padding:1em 2em" href="{% url 'club_join' %}">Dołącz do Towarzystwa</a></p>
 {% endif %}
 {% endwith %}
 
 {% endif %}
 {% endwith %}
 
index 3a9a006..ecba877 100644 (file)
@@ -1,4 +1,5 @@
 {% extends request.session.from_app|yesno:"base/app.html,base/base.html" %}
 {% extends request.session.from_app|yesno:"base/app.html,base/base.html" %}
+{% load chunks %}
 
 
 {% block titleextra %}Towarzystwo Wolnych Lektur{% endblock %}
 
 
 {% block titleextra %}Towarzystwo Wolnych Lektur{% endblock %}
 
 <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 członkostwo w Towarzystwie Przyjaciół Wolnych Lektur{% else %}Dołącz do Towarzystwa Przyjaciół Wolnych Lektur{% endif %}</h1>
+
+{% chunk 'club_form_top' %}
 
 <form method="POST" action="" id="payment-form" class="wlform">
   {% csrf_token %}
 
 
 <form method="POST" action="" id="payment-form" class="wlform">
   {% csrf_token %}
 
-  <h2>Składka</h2>
-  
+  <h2>Zadeklaruj, jak często i jaką kwotą chcesz nas wspierać:</h2>
+
   <ul class="errorlist">
   {% for e in  form.non_field_errors %}
     <li>{{ e }}</li>
   <ul class="errorlist">
   {% for e in  form.non_field_errors %}
     <li>{{ e }}</li>
@@ -56,7 +59,7 @@
 
   {% endfor %}
 
 
   {% endfor %}
 
-  <h2>Metoda płatności</h2>
+  <h2>Wybierz metodę płatności:</h2>
   
   <ul class="errorlist">
   {% for e in form.method.errors %}
   
   <ul class="errorlist">
   {% for e in form.method.errors %}
   {% for payment_method in form.payment_methods %}
   <div class="payment-method" id="payment-method-{{ payment_method.slug }}">
     <input type="radio" id="method{{ payment_method.slug }}" name="method" value="{{ payment_method.slug }}">
   {% for payment_method in form.payment_methods %}
   <div class="payment-method" id="payment-method-{{ payment_method.slug }}">
     <input type="radio" id="method{{ payment_method.slug }}" name="method" value="{{ payment_method.slug }}">
-    <label for="method{{ payment_method.slug }}" style="display:inline-block">
+    <label for="method{{ payment_method.slug }}">
       {% include payment_method.template_name %}
     </label>
   </div>
   {% endfor %}
 
       {% include payment_method.template_name %}
     </label>
   </div>
   {% endfor %}
 
-  <p style="margin-top: 2em;">
-    {{ form.email.label }}:
+  <h2>
+    Podaj nam swój adres e-mail, żebyśmy mogli się z Tobą skontaktować:
+  </h2>
+
+  <p>
     {{ form.email }}</p>
   <button class="submit" type='submit'>Dołącz</button>
 </form>
 
     {{ form.email }}</p>
   <button class="submit" type='submit'>Dołącz</button>
 </form>
 
+{% chunk 'club_form_bottom' %}
+
 </div>
 
 {% endblock %}
 </div>
 
 {% endblock %}
index 712b27c..a1bc573 100644 (file)
@@ -1,5 +1,5 @@
 {% load staticfiles %}
 {% load staticfiles %}
-<img src="{% static 'club/payu/payu.png' %}" height="50">
-<span class="method">karta</span>
-<span class="method">⟳ płatność cykliczna</span>
-
+<img src="{% static 'club/payu/payu.png' %}">
+<img src="{% static 'club/visa-100.png' %}">
+<img src="{% static 'club/mastercard.png' %}">
++<br>Płatność cykliczna, odnawiana automatycznie.
index 7979115..60e6b6d 100644 (file)
@@ -1,5 +1,7 @@
 {% load staticfiles %}
 {% load staticfiles %}
-<img src="{% static 'club/payu/payu.png' %}" height="50">
-<img src="{% static 'club/payu/blik.png' %}" height="50">
-<span class="method">karta</span>
+<img src="{% static 'club/payu/payu.png' %}">
+<img src="{% static 'club/payu/blik.png' %}">
+<img src="{% static 'club/visa-100.png' %}">
+<img src="{% static 'club/mastercard.png' %}">
 <span class="method">przelew</span>
 <span class="method">przelew</span>
+<br>Płatność jednorazowa
index b1e1907..de0797f 100644 (file)
@@ -7,37 +7,44 @@
 {% block body %}
 <div class="white-box normal-text">
 
 {% block body %}
 <div class="white-box normal-text">
 
-<h1>Plan płatności</h1>
-
-<div>E-mail: {{ schedule.email }}</div>
-<div>Składka: {{ schedule.amount }} zł {{ schedule.plan.get_interval_display }}</div>
-<div>Wybrana metoda płatności: {{ schedule.get_payment_method.name }}</div>
+<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ł {{ schedule.plan.get_interval_display }}.
+</p>
 
 {% if schedule.is_active %}
 
 {% if schedule.is_active %}
-  {% if schedule.plan.is_perpetual %}
-    Opłacona na zawsze.
-  {% endif %}
-  Aktualnie opłacona do: {{ schedule.expires_at }}
-
   {% if schedule.get_payment_method.is_recurring %}
   {% if schedule.get_payment_method.is_recurring %}
-  <form method='post' action="{% url 'club_cancel' schedule.key %}">
+     {% 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/">Odnów składkę</a>
+         </p>
+     {% else %}
+       <form class="wlform" method='post' action="{% url 'club_cancel' schedule.key %}">
         {% csrf_token %}
         {% csrf_token %}
-        <button type="submit">Anuluj kolejną płatność</button>
-  </form>
+       <button type="submit" class="submit" style="font-size: .9em">Anuluj kolejną płatność</button>
+       </form>
+     {% endif %}
   {% else %}
   {% else %}
-  <form method='post' action=''>
+     <form class="wlform" method='post' action=''>
        {% csrf_token %}
        {% csrf_token %}
-       <button type="submit">Opłać kolejny okres</button>
-  </form>
+       <button type="submit" class="submit">Opłać kolejny okres</button>
+     </form>
   {% endif %}
 
 
 {% else %}
  {% if schedule.is_expired %}
    Członkostwo wygasło.
   {% endif %}
 
 
 {% else %}
  {% if schedule.is_expired %}
    Członkostwo wygasło.
-   <form method='post' action=''>
+   <form method='post' action='' class="wlform">
         {% csrf_token %}
         {% csrf_token %}
-        <button type="submit">Opłać kolejny okres</button>
+       <button type="submit" class="submit">Opłać kolejny okres</button>
    </form>
 
 
    </form>
 
 
 
      <form method='post' action=''>
         {% csrf_token %}
 
      <form method='post' action=''>
         {% csrf_token %}
-        <button type="submit">Zapłać składkę</button>
+       <button type="submit" class="submit">Zapłać składkę</button>
      </form>
 
    {% endif %}
  {% endif %}
 {% endif %}
 
      </form>
 
    {% endif %}
  {% endif %}
 {% endif %}
 
-<hr>
+
+<hr style="margin: 2em 0;">
 
 
 
 
+<h2>Towarzystwo Przyjaciół Wolnych Lektur</h2>
+
 
 {% if schedule.membership %}
   <p>
 
 {% if schedule.membership %}
   <p>
-  Członek/członkini Towarzystwa nr {{ schedule.membership.id }} ({{ schedule.membership.user }}).
-  </p>
+  Należysz już do Towarzystwa Przyjaciół Wolnych Lektur!</p>
 
 
-  <form method='post' action='{% url "club_membership" %}'>
+  <form class="wlform" method='post' action='{% url "club_membership" %}'>
          {% csrf_token %}
          {% csrf_token %}
-         Imię i nazwisko na legitymację: <br>
+         Skontaktujemy się z Tobą w sprawie odbioru legitymacji członkowskiej.<br>Tutaj możesz podać imię i nazwisko, jakie ma na niej widnieć:<br>
          <input name="name" value="{{ schedule.membership.name|default:schedule.membership.user.username }}"><br>
          <input name="name" value="{{ schedule.membership.name|default:schedule.membership.user.username }}"><br>
-         <button type="submit">Zapisz</button>
+         <button class="submit" type="submit">Zmień dane</button>
   </form>
 
 {% else %}
   </form>
 
 {% else %}
+
+<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.
+</p>
+
+
 <p>
 <p>
-Płatność nie przypisana do członkostwa.<br>
-<a href="{% url 'club_claim' schedule.key %}">Przypisz</a>
+<a style="background:#018189;color:white;border-radius: 10px;padding:1em 2em;" href="{% url 'club_claim' schedule.key %}">Zapisz się</a>
 </p>
 {% endif %}
 
 </p>
 {% endif %}
 
diff --git a/src/club/templates/club/thanks.html b/src/club/templates/club/thanks.html
new file mode 100644 (file)
index 0000000..c83b702
--- /dev/null
@@ -0,0 +1,25 @@
+{% extends request.session.from_app|yesno:"base/app.html,base/base.html" %}
+{% load chunks %}
+
+
+{% block titleextra %}Towarzystwo Wolnych Lektur{% endblock %}
+
+
+{% block body %}
+
+
+<div class="white-box normal-text">
+
+       <h1>Dziękujemy</h1>
+
+
+{% chunk 'club_thanks' %}
+
+{% if request.session.from_app %}
+  <a href="wolnelekturyapp://paypal_return">Wróć do aplikacji</a>
+{% else %}
+{% endif %}
+
+</div>
+
+{% endblock %}
index 506f42b..844359b 100644 (file)
@@ -3,10 +3,12 @@ from . import views
 
 
 urlpatterns = [
 
 
 urlpatterns = [
-    url(r'^$', views.ClubView.as_view()),
-    url(r'^dolacz/$', views.JoinView.as_view(), name='club_join'),
+    url(r'^$', views.JoinView.as_view(), name='club_join'),
+    url(r'^info/$', views.ClubView.as_view(), name='club'),
 
     url(r'^plan/(?P<key>[-a-z0-9]+)/$', views.ScheduleView.as_view(), name='club_schedule'),
 
     url(r'^plan/(?P<key>[-a-z0-9]+)/$', views.ScheduleView.as_view(), name='club_schedule'),
+    url(r'^plan/(?P<key>[-a-z0-9]+)/dziekujemy/$', views.ScheduleThanksView.as_view(), name='club_thanks'),
+
     url(r'^przylacz/(?P<key>[-a-z0-9]+)/$', views.claim, name='club_claim'),
     url(r'^anuluj/(?P<key>[-a-z0-9]+)/$', views.cancel, name='club_cancel'),
     url(r'^testowa-platnosc/(?P<key>[-a-z0-9]+)/$', views.DummyPaymentView.as_view(), name='club_dummy_payment'),
     url(r'^przylacz/(?P<key>[-a-z0-9]+)/$', views.claim, name='club_claim'),
     url(r'^anuluj/(?P<key>[-a-z0-9]+)/$', views.cancel, name='club_cancel'),
     url(r'^testowa-platnosc/(?P<key>[-a-z0-9]+)/$', views.DummyPaymentView.as_view(), name='club_dummy_payment'),
index 93afadd..e80acaa 100644 (file)
@@ -1,6 +1,9 @@
+from django.conf import settings
 from django.contrib.auth.decorators import login_required
 from django.http import HttpResponseRedirect
 from django.shortcuts import get_object_or_404, render
 from django.contrib.auth.decorators import login_required
 from django.http import HttpResponseRedirect
 from django.shortcuts import get_object_or_404, render
+from django.utils.decorators import method_decorator
+from django.views.decorators.cache import never_cache
 from django.views.generic import FormView, CreateView, TemplateView, DetailView, UpdateView
 from django.views import View
 from .payu import POSS
 from django.views.generic import FormView, CreateView, TemplateView, DetailView, UpdateView
 from django.views import View
 from .payu import POSS
@@ -14,6 +17,11 @@ from .payment_methods import payure_method
 class ClubView(TemplateView):
     template_name = 'club/index.html'
 
 class ClubView(TemplateView):
     template_name = 'club/index.html'
 
+    def get_context_data(self, *args, **kwargs):
+        ctx = super().get_context_data(*args, **kwargs)
+        ctx['active_menu_item'] = 'club'
+        return ctx
+
 
 class JoinView(CreateView):
     form_class = ScheduleForm
 
 class JoinView(CreateView):
     form_class = ScheduleForm
@@ -23,6 +31,10 @@ class JoinView(CreateView):
         return self.request.GET.get('app')
 
     def get(self, request):
         return self.request.GET.get('app')
 
     def get(self, request):
+        # TODO: configure as app-allowed hosts.
+        if settings.CLUB_APP_HOST and self.is_app() and request.META['HTTP_HOST'] != settings.CLUB_APP_HOST:
+            return HttpResponseRedirect("https://" + settings.CLUB_APP_HOST + request.get_full_path())
+
         if self.is_app():
             request.session['from_app'] = True
         elif request.session and 'from_app' in request.session:
         if self.is_app():
             request.session['from_app'] = True
         elif request.session and 'from_app' in request.session:
@@ -41,8 +53,7 @@ class JoinView(CreateView):
     def get_context_data(self, **kwargs):
         c = super(JoinView, self).get_context_data(**kwargs)
         c['membership'] = getattr(self.request.user, 'membership', None)
     def get_context_data(self, **kwargs):
         c = super(JoinView, self).get_context_data(**kwargs)
         c['membership'] = getattr(self.request.user, 'membership', None)
-        #if hasattr(form, 'errors'):
-        #    print(form.errors)
+        c['active_menu_item'] = 'club'
         return c
 
     def get_initial(self):
         return c
 
     def get_initial(self):
@@ -62,11 +73,17 @@ class JoinView(CreateView):
         return self.object.initiate_payment(self.request)
 
 
         return self.object.initiate_payment(self.request)
 
 
+@method_decorator(never_cache, name='dispatch')
 class ScheduleView(DetailView):
     model = models.Schedule
     slug_field = slug_url_kwarg = 'key'
     template_name = 'club/schedule.html'
 
 class ScheduleView(DetailView):
     model = models.Schedule
     slug_field = slug_url_kwarg = 'key'
     template_name = 'club/schedule.html'
 
+    def get_context_data(self, *args, **kwargs):
+        ctx = super().get_context_data(*args, **kwargs)
+        ctx['active_menu_item'] = 'club'
+        return ctx
+
     def post(self, request, key):
         schedule = self.get_object()
         return HttpResponseRedirect(schedule.initiate_payment(request))
     def post(self, request, key):
         schedule = self.get_object()
         return HttpResponseRedirect(schedule.initiate_payment(request))
@@ -132,3 +149,15 @@ class MembershipView(UpdateView):
 
     def get_object(self):
         return self.request.user.membership
 
     def get_object(self):
         return self.request.user.membership
+
+
+class ScheduleThanksView(DetailView):
+    model = models.Schedule
+    slug_field = slug_url_kwarg = 'key'
+    template_name = 'club/thanks.html'
+
+    def get_context_data(self, *args, **kwargs):
+        ctx = super().get_context_data(*args, **kwargs)
+        ctx['active_menu_item'] = 'club'
+        return ctx
+
index ab4719e..fbb7ba2 100644 (file)
@@ -41,4 +41,4 @@ PAYU_POS = {
 
 CLUB_PAYU_POS = '300746'
 CLUB_PAYU_RECURRING_POS = '300746'
 
 CLUB_PAYU_POS = '300746'
 CLUB_PAYU_RECURRING_POS = '300746'
-
+CLUB_APP_HOST = None
index ef15365..ba7616d 100755 (executable)
@@ -61,6 +61,8 @@ form table {
 
 .wlform {
     .payment-method {
 
 .wlform {
     .payment-method {
+       margin-top: 2em;
+
         input {
             height: 50px;
             vertical-align: middle;
         input {
             height: 50px;
             vertical-align: middle;
@@ -69,24 +71,24 @@ form table {
         img {
             vertical-align: middle;
             margin-right: 1em;
         img {
             vertical-align: middle;
             margin-right: 1em;
+           height: 36px;
         }
         label {
         }
         label {
+           display: inline;
             margin: .5em 0;
             vertical-align: middle;
         }
 
             margin: .5em 0;
             vertical-align: middle;
         }
 
-        
         .method {
         .method {
-            //        border: 1px solid black;
-            border-radius: 10px;
-            line-height: 48px;
+            border: 1px solid black;
+            border-radius: 5px;
+            line-height: 34px;
             display: inline-block;
             vertical-align: middle;
             padding: 0 1em;
             margin-right: 1em;
             display: inline-block;
             vertical-align: middle;
             padding: 0 1em;
             margin-right: 1em;
-            font-size: 1.25em;
-            background: #01818980;
-            color: white;
+            color: black;
+           text-transform: uppercase;
         }
     }
 }
         }
     }
 }
index b893773..e0a729b 100644 (file)
@@ -37,7 +37,7 @@
         <div id="whole-header">
           <div id="header-wrapper">
             <header id="main">
         <div id="whole-header">
           <div id="header-wrapper">
             <header id="main">
-              <a href="/" id="logo">
+              <a href="https://wolnelektury.pl" id="logo">
                 <img src="{% static 'img/logo-neon.png' %}" alt="Wolne Lektury"/>
               </a>
 
                 <img src="{% static 'img/logo-neon.png' %}" alt="Wolne Lektury"/>
               </a>
 
index 12a6565..a34006b 100644 (file)
                   <li{% if active_menu_item == 'audiobooks' %} class="active"{% endif %}>
                     <a href="{% url 'audiobook_list' %}">{% trans "Audiobooks" %}</a>
                   </li>
                   <li{% if active_menu_item == 'audiobooks' %} class="active"{% endif %}>
                     <a href="{% url 'audiobook_list' %}">{% trans "Audiobooks" %}</a>
                   </li>
-                  <li{% if active_menu_item == 'gallery' %} class="active"{% endif %}>
-                    <a href="{% url 'gallery' %}">{% trans "Gallery" %}</a>
+                  <li{% if active_menu_item == 'club' %} class="active"{% endif %}>
+                    <a href="{% url 'club_join' %}">{% trans "Wesprzyj nas" %}</a>
                   </li>
                   <li{% if active_menu_item == 'all_works' %} class="active"{% endif %}>
                     <a href="{% url 'catalogue' %}">{% trans "All works" %}</a>
                   </li>
                   <li{% if active_menu_item == 'all_works' %} class="active"{% endif %}>
                     <a href="{% url 'catalogue' %}">{% trans "All works" %}</a>
index f7491ba..0f261f9 100644 (file)
@@ -11,5 +11,8 @@
     <p><a href="{% url 'account_set_password' %}">{% trans "Password" %}</a></p>
     <p><a href="{% url 'account_email' %}">{% trans "E-mail" %}</a></p>
     <p><a href="{% url 'socialaccount_connections' %}">{% trans "Social accounts" %}</a></p>
     <p><a href="{% url 'account_set_password' %}">{% trans "Password" %}</a></p>
     <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> 
+    {% endif %}
   </div>
 {% endblock %}
   </div>
 {% endblock %}
index 8b02fda..0ebc489 100644 (file)
@@ -52,7 +52,10 @@ urlpatterns += [
     url(r'^isbn/', include('isbn.urls')),
 
     url(r'^paypal/app-form/$', RedirectView.as_view(
     url(r'^isbn/', include('isbn.urls')),
 
     url(r'^paypal/app-form/$', RedirectView.as_view(
-        url='/towarzystwo/dolacz/?app=1', permanent=True)),
+        url='/towarzystwo/?app=1', permanent=False)),
+    url(r'^towarzystwo/dolacz/$', RedirectView.as_view(
+        url='/towarzystwo/', permanent=False)),
+
 
     url(r'^paypal/', include('paypal.urls')),
     url(r'^powiadomienie/', include('push.urls')),
 
     url(r'^paypal/', include('paypal.urls')),
     url(r'^powiadomienie/', include('push.urls')),