123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- from django.contrib import messages
- from django.db.transaction import atomic
- from django.shortcuts import get_object_or_404, redirect
- from django.utils import timezone
- from django.utils.translation import ugettext as _
- from django.views.decorators.cache import never_cache
- from django.views.decorators.csrf import csrf_protect
- from misago.core.decorators import require_POST
- from misago.forums.models import Forum
- from misago.users.decorators import deny_guests
- from misago.readtracker import forumstracker
- from misago.readtracker.signals import all_read
- def read_view(f):
- @deny_guests
- @require_POST
- @csrf_protect
- @never_cache
- @atomic
- def decorator(request, *args, **kwargs):
- return f(request, *args, **kwargs)
- return decorator
- @read_view
- def read_all(request):
- request.user.reads_cutoff = timezone.now()
- request.user.save(update_fields=['reads_cutoff'])
- all_read.send(sender=request.user)
- messages.info(request, _("All forums and threads were marked as read."))
- return redirect('misago:index')
- @read_view
- def read_forum(request, forum_id):
- forum = get_object_or_404(Forum.objects, id=forum_id)
- forumstracker.read_forum(request.user, forum)
- messages.info(request, _("Threads were marked as read."))
- return redirect(forum.get_absolute_url())
|