views.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from django.core.urlresolvers import reverse
  2. from django.shortcuts import redirect
  3. from django.template import RequestContext
  4. from django.utils.translation import ugettext as _
  5. from misago.sessions.models import Session
  6. from misago.forums.models import Forum
  7. def home(request):
  8. team_online = []
  9. team_pks = []
  10. for session in Session.objects.filter(team=1).filter(admin=0).order_by('-start').select_related('user', 'user__rank'):
  11. if session.user.pk not in team_pks:
  12. team_pks.append(session.user.pk)
  13. team_online.append(session.user)
  14. return request.theme.render_to_response('index.html',
  15. {
  16. 'forums_list': Forum.objects.treelist(request.acl.forums.known_forums()),
  17. 'team_online': team_online,
  18. },
  19. context_instance=RequestContext(request));
  20. def redirection(request, forum, slug):
  21. if not request.acl.forums.can_see(forum):
  22. return error404(request)
  23. try:
  24. forum = Forum.objects.get(pk=forum, type='redirect')
  25. if not request.acl.forums.can_browse(forum):
  26. return error403(request, _("You don't have permission to follow this redirect."))
  27. forum.redirects += 1
  28. forum.redirects_delta += 1
  29. forum.save(force_update=True)
  30. return redirect(forum.redirect)
  31. except Forum.DoesNotExist:
  32. return error404(request)
  33. def redirect_message(request, message, type='info', owner=None):
  34. request.messages.set_flash(message, type, owner)
  35. return redirect(reverse('index'))
  36. def error403(request, message=None):
  37. return error_view(request, 403, message)
  38. def error404(request, message=None):
  39. return error_view(request, 404, message)
  40. def error_view(request, error, message):
  41. response = request.theme.render_to_response(('error%s.html' % error),
  42. {
  43. 'message': message,
  44. 'hide_signin': True,
  45. 'exception_response': True,
  46. },
  47. context_instance=RequestContext(request));
  48. response.status_code = error
  49. return response