views.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from django.contrib import messages
  2. from django.db.transaction import atomic
  3. from django.shortcuts import get_object_or_404, redirect
  4. from django.utils import timezone
  5. from django.utils.translation import ugettext as _
  6. from django.views.decorators.cache import never_cache
  7. from django.views.decorators.csrf import csrf_protect
  8. from misago.core.decorators import require_POST
  9. from misago.forums.models import Forum
  10. from misago.users.decorators import deny_guests
  11. from misago.readtracker import forumstracker
  12. from misago.readtracker.signals import all_read
  13. def read_view(f):
  14. @deny_guests
  15. @require_POST
  16. @csrf_protect
  17. @never_cache
  18. @atomic
  19. def decorator(request, *args, **kwargs):
  20. return f(request, *args, **kwargs)
  21. return decorator
  22. @read_view
  23. def read_all(request):
  24. request.user.reads_cutoff = timezone.now()
  25. request.user.save(update_fields=['reads_cutoff'])
  26. all_read.send(sender=request.user)
  27. messages.info(request, _("All forums and threads were marked as read."))
  28. return redirect('misago:index')
  29. @read_view
  30. def read_forum(request, forum_id):
  31. forum = get_object_or_404(Forum.objects, id=forum_id)
  32. forumstracker.read_forum(request.user, forum)
  33. messages.info(request, _("Threads were marked as read."))
  34. return redirect(forum.get_absolute_url())