diff options
author | Aurélien Bompard <aurelien@bompard.org> | 2013-05-23 15:45:22 +0200 |
---|---|---|
committer | Aurélien Bompard <aurelien@bompard.org> | 2013-05-23 17:48:16 +0200 |
commit | ea032ba8b321fad5e896750eae508456676041c1 (patch) | |
tree | 026c8af089391ecddd9dcae5a05d5ee9e07ad3a0 /hyperkitty/views/accounts.py | |
parent | e9e92bf1ac15421b9a29c366b9ef6bf2c1b94943 (diff) | |
download | hyperkitty-ea032ba8b321fad5e896750eae508456676041c1.tar.gz hyperkitty-ea032ba8b321fad5e896750eae508456676041c1.tar.xz hyperkitty-ea032ba8b321fad5e896750eae508456676041c1.zip |
Display the last viewed threads in the user profile
Diffstat (limited to 'hyperkitty/views/accounts.py')
-rw-r--r-- | hyperkitty/views/accounts.py | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/hyperkitty/views/accounts.py b/hyperkitty/views/accounts.py index cd64cde..b283392 100644 --- a/hyperkitty/views/accounts.py +++ b/hyperkitty/views/accounts.py @@ -24,6 +24,7 @@ import logging from django.conf import settings from django.core.urlresolvers import reverse from django.core.exceptions import SuspiciousOperation +from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.contrib.auth import authenticate, login, get_backends from django.contrib.auth.decorators import login_required from django.contrib.auth.models import User @@ -31,9 +32,10 @@ from django.contrib.auth.views import login as django_login_view from django.shortcuts import render, redirect from django.utils.http import is_safe_url from django.utils.translation import gettext as _ +from django.template import RequestContext, loader from social_auth.backends import SocialAuthBackend -from hyperkitty.models import UserProfile, Rating, Favorite +from hyperkitty.models import UserProfile, Rating, Favorite, LastView from hyperkitty.views.forms import RegistrationForm, UserProfileForm from hyperkitty.lib import get_store, FLASH_MESSAGES @@ -112,6 +114,7 @@ def user_profile(request, user_email=None): thread = store.get_thread(fav.list_address, fav.threadid) fav.thread = thread + # Flash messages flash_messages = [] flash_msg = request.GET.get("msg") if flash_msg: @@ -166,3 +169,30 @@ def user_registration(request): 'next': redirect_to, } return render(request, 'register.html', context) + + +@login_required +def last_views(request): + store = get_store(request) + # Last viewed threads + try: + last_views = LastView.objects.filter(user=request.user + ).order_by("view_date") + except Favorite.DoesNotExist: + last_views = [] + last_views_paginator = Paginator(last_views, 10) + last_views_page = request.GET.get('lvpage') + try: + last_views = last_views_paginator.page(last_views_page) + except PageNotAnInteger: + last_views = last_views_paginator.page(1) + except EmptyPage: + last_views = last_views_paginator.page(last_views_paginator.num_pages) + for last_view in last_views: + thread = store.get_thread(last_view.list_address, last_view.threadid) + thread.unread = bool( thread.date_active > last_view.view_date ) + last_view.thread = thread + + return render(request, 'ajax/last_views.html', { + "last_views": last_views, + }) |