12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- from django.db.models import F
- from django.shortcuts import redirect as dj_redirect, render
- from misago.core.shortcuts import get_object_or_404, validate_slug
- from misago.forums.lists import get_forums_list, get_forum_path
- from misago.forums.models import Forum
- from misago.forums.permissions import allow_see_forum, allow_browse_forum
- def forum_view(role):
- def wrap(f):
- def decorator(request, forum_slug, forum_id):
- allow_see_forum(request.user, forum_id)
- forums = Forum.objects.all_forums()
- forum = get_object_or_404(forums, pk=forum_id, role=role)
- validate_slug(forum, forum_slug)
- return f(request, forum)
- return decorator
- return wrap
- @forum_view('category')
- def category(request, forum):
- if forum.level == 1:
- return dj_redirect(forum.get_absolute_url())
- forums = get_forums_list(request.user, forum)
- return render(request, 'misago/forums/category.html', {
- 'category': forum,
- 'forums': forums,
- 'path': get_forum_path(forum),
- })
- @forum_view('redirect')
- def redirect(request, forum):
- if forum.pk not in request.session.get('forum_redirects', []):
- request.session.setdefault('forum_redirects', []).append(forum.pk)
- forum.redirects_count = F('redirects_count') + 1
- forum.save(update_fields=['redirects_count'])
- return dj_redirect(forum.redirect_url)
- @forum_view('-')
- def forum(request, forum):
- pass
|