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
+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
@@ -227,6 +229,7 @@ class EpubView(RetrieveAPIView):
     lookup_field = 'slug'
     permission_classes = [IsClubMember]
 
+    @method_decorator(never_cache)
     def get(self, *args, **kwargs):
         return HttpResponse(self.get_object().get_media('epub'))
 
index 4f186e8..ccb1004 100644 (file)
           </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 %}
     {% 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>
-      {% endif %}
+      {% endif %}{% endif %}
     {% 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>
@@ -61,4 +61,4 @@
       {% 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.views.decorators.cache import never_cache
 
 from ajaxable.utils import AjaxableFormView
 from club.models import Membership
@@ -354,6 +355,7 @@ def tag_info(request, tag_id):
     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:
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"
-"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"
@@ -26,11 +26,11 @@ msgstr "miesięcznie"
 
 #: models.py:26
 msgid "a year"
-msgstr "rocznie"
+msgstr "raz do roku"
 
 #: models.py:27
 msgid "in perpetuity"
-msgstr "na zawsze"
+msgstr "raz na zawsze"
 
 #: 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 django.core.mail import send_mail
 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
@@ -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)
+    email_sent = models.BooleanField(default=False)
 
     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_thanks_url(self):
+        return reverse('club_thanks', args=[self.key])
+
     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 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. """
@@ -167,7 +182,7 @@ class PayUOrder(payu_models.Order):
     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')
@@ -191,6 +206,9 @@ class PayUOrder(payu_models.Order):
                 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)
index b215b1d..ca34ace 100644 (file)
@@ -32,7 +32,7 @@ class PayU(PaymentMethod):
 
 class PayURe(PaymentMethod):
     slug='payu-re'
-    name = 'PayU Recurring'
+    name = 'PayU (płatność odnawialna)'
     template_name = 'club/payment/payu-re.html'
     is_recurring = True
 
@@ -55,7 +55,7 @@ class PayURe(PaymentMethod):
 
 class PayPal(PaymentMethod):
     slug='paypal'
-    name = 'PayPal'
+    name = 'PayPal (płatność odnawialna)'
     template_name = 'club/payment/paypal.html'
     is_recurring = True
     is_onetime = True
@@ -66,13 +66,6 @@ class PayPal(PaymentMethod):
 
 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)
@@ -80,8 +73,15 @@ if pos:
 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 = {
index 4ab2c0a..4fe4d94 100644 (file)
@@ -120,7 +120,7 @@ class Order(models.Model):
         self.save()
 
         
-        return response.get('redirectUri', self.schedule.get_absolute_url())
+        return response.get('redirectUri', self.schedule.get_thanks_url())
 
 
 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 %}
+{% load chunks %}
 
 
-{% block titleextra %}Towarzystwo Wolnych Lektur{% endblock %}
+{% block titleextra %}Towarzystwo Przyjaciół Wolnych Lektur{% endblock %}
 
 
 {% block body %}
 <div class="white-box normal-text">
 
-       <h1>Towarzystwo Wolnych Lektur</h1>
+       <h1>Towarzystwo Przyjaciół Wolnych Lektur</h1>
 
        <p>Towarzystwo jest fajne.</p>
+       {% chunk 'club' %}
 
+
+<p style="margin-top: 2em;">
 {% 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 %}
-<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 %}
 
index 3a9a006..ecba877 100644 (file)
@@ -1,4 +1,5 @@
 {% extends request.session.from_app|yesno:"base/app.html,base/base.html" %}
+{% load chunks %}
 
 
 {% block titleextra %}Towarzystwo Wolnych Lektur{% endblock %}
 
 <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 %}
 
-  <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>
@@ -56,7 +59,7 @@
 
   {% endfor %}
 
-  <h2>Metoda płatności</h2>
+  <h2>Wybierz metodę płatności:</h2>
   
   <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 }}">
-    <label for="method{{ payment_method.slug }}" style="display:inline-block">
+    <label for="method{{ payment_method.slug }}">
       {% 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>
 
+{% chunk 'club_form_bottom' %}
+
 </div>
 
 {% endblock %}
index 712b27c..a1bc573 100644 (file)
@@ -1,5 +1,5 @@
 {% 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 %}
-<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>
+<br>Płatność jednorazowa
index b1e1907..de0797f 100644 (file)
@@ -7,37 +7,44 @@
 {% 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.plan.is_perpetual %}
-    Opłacona na zawsze.
-  {% endif %}
-  Aktualnie opłacona do: {{ schedule.expires_at }}
-
   {% 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 %}
-        <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 %}
-  <form method='post' action=''>
+     <form class="wlform" method='post' action=''>
        {% 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.
-   <form method='post' action=''>
+   <form method='post' action='' class="wlform">
         {% csrf_token %}
-        <button type="submit">Opłać kolejny okres</button>
+       <button type="submit" class="submit">Opłać kolejny okres</button>
    </form>
 
 
 
      <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 %}
 
-<hr>
+
+<hr style="margin: 2em 0;">
 
 
+<h2>Towarzystwo Przyjaciół Wolnych Lektur</h2>
+
 
 {% 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 %}
-         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>
-         <button type="submit">Zapisz</button>
+         <button class="submit" type="submit">Zmień dane</button>
   </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ł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 %}
 
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 = [
-    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]+)/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'),
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.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
@@ -14,6 +17,11 @@ from .payment_methods import payure_method
 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
@@ -23,6 +31,10 @@ class JoinView(CreateView):
         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:
@@ -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)
-        #if hasattr(form, 'errors'):
-        #    print(form.errors)
+        c['active_menu_item'] = 'club'
         return c
 
     def get_initial(self):
@@ -62,11 +73,17 @@ class JoinView(CreateView):
         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'
 
+    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))
@@ -132,3 +149,15 @@ class MembershipView(UpdateView):
 
     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_APP_HOST = None
index ef15365..ba7616d 100755 (executable)
@@ -61,6 +61,8 @@ form table {
 
 .wlform {
     .payment-method {
+       margin-top: 2em;
+
         input {
             height: 50px;
             vertical-align: middle;
@@ -69,24 +71,24 @@ form table {
         img {
             vertical-align: middle;
             margin-right: 1em;
+           height: 36px;
         }
         label {
+           display: inline;
             margin: .5em 0;
             vertical-align: middle;
         }
 
-        
         .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;
-            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">
-              <a href="/" id="logo">
+              <a href="https://wolnelektury.pl" id="logo">
                 <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 == '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>
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>
+    {% if request.user.membership %}
+      <p><a href="{% url 'club_join' %}">Należysz do Towarzystwa Przyjaciół Wolnych Lektur</a></p> 
+    {% endif %}
   </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='/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')),