redirect.py 927 B

123456789101112131415161718192021
  1. from django.shortcuts import redirect as django_redirect
  2. from django.utils.translation import ugettext as _
  3. from misago.apps.errors import error403, error404
  4. from misago.models import Forum
  5. def redirect(request, forum, slug):
  6. if not request.acl.forums.can_see(forum):
  7. return error404(request)
  8. try:
  9. forum = Forum.objects.get(pk=forum, type='redirect')
  10. if not request.acl.forums.can_browse(forum):
  11. return error403(request, _("You don't have permission to follow this redirect."))
  12. redirects_tracker = request.session.get('redirects', [])
  13. if forum.pk not in redirects_tracker:
  14. redirects_tracker.append(forum.pk)
  15. request.session['redirects'] = redirects_tracker
  16. forum.redirects += 1
  17. forum.save(force_update=True)
  18. return django_redirect(forum.redirect)
  19. except Forum.DoesNotExist:
  20. return error404(request)