Add missing constraint.
[wolnelektury.git] / src / wolnelektury / views.py
index 593a7ba..49110e9 100644 (file)
@@ -12,6 +12,7 @@ from django.contrib.auth.decorators import login_required
 from django.contrib.auth.forms import AuthenticationForm
 from django.contrib.auth.views import LoginView
 from django.core.cache import cache
 from django.contrib.auth.forms import AuthenticationForm
 from django.contrib.auth.views import LoginView
 from django.core.cache import cache
+from django.views.generic import FormView
 from django.http import HttpResponse, HttpResponseRedirect
 from django.shortcuts import render
 from django.utils.translation import gettext_lazy as _
 from django.http import HttpResponse, HttpResponseRedirect
 from django.shortcuts import render
 from django.utils.translation import gettext_lazy as _
@@ -20,13 +21,27 @@ from django.views.decorators.cache import never_cache
 from ajaxable.utils import AjaxableFormView
 from ajaxable.utils import placeholdized
 from catalogue.models import Book, Collection, Tag, Fragment
 from ajaxable.utils import AjaxableFormView
 from ajaxable.utils import placeholdized
 from catalogue.models import Book, Collection, Tag, Fragment
-
+import club.models
 from social.utils import get_or_choose_cite
 from wolnelektury.forms import RegistrationForm, SocialSignupForm, WLAuthenticationForm
 
 
 from social.utils import get_or_choose_cite
 from wolnelektury.forms import RegistrationForm, SocialSignupForm, WLAuthenticationForm
 
 
+def main_page_2022(request):
+    ctx = {}
+    ctx['last_published'] = Book.objects.exclude(cover_clean='').filter(findable=True, parent=None).order_by('-created_at')[:10]
+    ctx['recommended_collection'] = Collection.objects.filter(listed=True, role='recommend').order_by('?').first()
+    ctx['ambassadors'] = club.models.Ambassador.objects.all().order_by('?')
+    ctx['widget'] = settings.WIDGETS.get(request.GET.get('w'))
+    return render(request, '2022/main_page.html', ctx)
+
 @never_cache
 def main_page(request):
 @never_cache
 def main_page(request):
+    if request.GET.get('w') in settings.WIDGETS:
+        request.EXPERIMENTS['layout'].override(True)
+
+    if request.EXPERIMENTS['layout'].value:
+        return main_page_2022(request)
+
     ctx = {
         'last_published': Book.objects.exclude(cover_thumb='').filter(findable=True, parent=None).order_by('-created_at')[:6],
         'theme_books': [],
     ctx = {
         'last_published': Book.objects.exclude(cover_thumb='').filter(findable=True, parent=None).order_by('-created_at')[:6],
         'theme_books': [],
@@ -102,6 +117,22 @@ class LoginFormView(AjaxableFormView):
         auth.login(request, form.get_user())
 
 
         auth.login(request, form.get_user())
 
 
+class WLRegisterView(FormView):
+    form_class = RegistrationForm
+    template_name = 'registration/register.html'
+
+    def form_valid(self, form):
+        form.save()
+        user = auth.authenticate(
+            username=form.cleaned_data['username'],
+            password=form.cleaned_data['password1']
+        )
+        auth.login(self.request, user)
+        return HttpResponseRedirect(quote_plus(self.request.GET.get('next', '/'), safe='/?='))
+
+wl_register_view = WLRegisterView.as_view()
+
+
 class RegisterFormView(AjaxableFormView):
     form_class = RegistrationForm
     template = "auth/register.html"
 class RegisterFormView(AjaxableFormView):
     form_class = RegistrationForm
     template = "auth/register.html"
@@ -113,6 +144,9 @@ class RegisterFormView(AjaxableFormView):
     honeypot = True
 
     def __call__(self, request):
     honeypot = True
 
     def __call__(self, request):
+        if request.EXPERIMENTS['layout'].value:
+            return wl_register_view(request)
+
         if request.user.is_authenticated:
             return self.redirect_or_refresh(
                 request, '/',
         if request.user.is_authenticated:
             return self.redirect_or_refresh(
                 request, '/',