X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/6cc5df1faff7c600d0cf4b4174621eca99e86354..fa684e7b11bba7f7fce1c0e7832b34d0b8593db4:/wolnelektury/views.py diff --git a/wolnelektury/views.py b/wolnelektury/views.py index 0af07f454..ee78859b2 100755 --- a/wolnelektury/views.py +++ b/wolnelektury/views.py @@ -1,20 +1,26 @@ from datetime import datetime +import feedparser from django.contrib import auth +from django.contrib.auth.decorators import login_required from django.contrib.auth.forms import UserCreationForm, AuthenticationForm +from django.core.cache import cache from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import render_to_response from django.template import RequestContext from django.utils.http import urlquote_plus from django.utils.translation import ugettext_lazy as _ -from django.views.decorators import cache +from django.views.decorators.cache import never_cache +from django.conf import settings from ajaxable.utils import AjaxableFormView from catalogue.models import Book +from ajaxable.utils import placeholdized +@never_cache def main_page(request): - last_published = Book.objects.exclude(html_file='').order_by('-created_at')[:4] + last_published = Book.objects.filter(parent=None).order_by('-created_at')[:4] return render_to_response("main_page.html", locals(), context_instance=RequestContext(request)) @@ -22,13 +28,17 @@ def main_page(request): class LoginFormView(AjaxableFormView): form_class = AuthenticationForm - #template = "auth/login.html" + template = "auth/login.html" + placeholdize = True title = _('Sign in') submit = _('Sign in') + ajax_redirect = True def __call__(self, request): if request.user.is_authenticated(): - return HttpResponseRedirect('/') + return self.redirect_or_refresh(request, '/', + message=_('Already logged in as user %(user)s', ) % + {'user': request.user.username}) return super(LoginFormView, self).__call__(request) def success(self, form, request): @@ -37,17 +47,21 @@ class LoginFormView(AjaxableFormView): class RegisterFormView(AjaxableFormView): form_class = UserCreationForm - #template = "auth/register.html" + placeholdize = True title = _('Register') submit = _('Register') + ajax_redirect = True + form_prefix = 'register' def __call__(self, request): if request.user.is_authenticated(): - return HttpResponseRedirect('/') + return self.redirect_or_refresh(request, '/', + message=_('Already logged in as user %(user)s', ) % + {'user': request.user.username}) return super(RegisterFormView, self).__call__(request) def success(self, form, request): - user = form.save() + form.save() user = auth.authenticate( username=form.cleaned_data['username'], password=form.cleaned_data['password1'] @@ -55,7 +69,18 @@ class RegisterFormView(AjaxableFormView): auth.login(request, user) -@cache.never_cache +class LoginRegisterFormView(LoginFormView): + template = 'auth/login_register.html' + title = _('You have to be logged in to continue') + + def extra_context(self, request, obj): + return { + "register_form": placeholdized(UserCreationForm(prefix='register')), + "register_submit": _('Register'), + } + + +@never_cache def logout_then_redirect(request): auth.logout(request) return HttpResponseRedirect(urlquote_plus(request.GET.get('next', '/'), safe='/?=')) @@ -66,3 +91,31 @@ def clock(request): in a format suitable for Date.parse() """ return HttpResponse(datetime.now().strftime('%Y/%m/%d %H:%M:%S')) + + +def publish_plan(request): + cache_key = "publish_plan" + plan = cache.get(cache_key) + + if plan is None: + plan = [] + try: + feed = feedparser.parse(settings.PUBLISH_PLAN_FEED) + except: + pass + else: + for i in range(len(feed['entries'])): + plan.append({ + 'title': feed['entries'][i].title, + 'link': feed['entries'][i].link, + }) + cache.set(cache_key, plan, 1800) + + return render_to_response("publish_plan.html", {'plan': plan}, + context_instance=RequestContext(request)) + + +@login_required +def user_settings(request): + return render_to_response("user.html", + context_instance=RequestContext(request))