General A/B testing.
[wolnelektury.git] / src / club / views.py
index 9816b4b..e469345 100644 (file)
@@ -1,6 +1,12 @@
+# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+#
+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 +20,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 +34,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:
@@ -38,9 +53,10 @@ class JoinView(CreateView):
         kwargs['request'] = self.request
         return kwargs
 
         kwargs['request'] = self.request
         return kwargs
 
-    def get_context_data(self, form=None):
-        c = super(JoinView, self).get_context_data()
+    def get_context_data(self, **kwargs):
+        c = super(JoinView, self).get_context_data(**kwargs)
         c['membership'] = getattr(self.request.user, 'membership', None)
         c['membership'] = getattr(self.request.user, 'membership', None)
+        c['active_menu_item'] = 'club'
         return c
 
     def get_initial(self):
         return c
 
     def get_initial(self):
@@ -60,11 +76,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))
@@ -130,3 +152,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
+