from django.shortcuts import render_to_response, get_object_or_404
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect, HttpResponse, Http404
from django.shortcuts import render_to_response, get_object_or_404
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect, HttpResponse, Http404
from django.template import RequestContext
from django.utils.translation import ugettext as _
from django.utils import simplejson
from django.db import models
from django.template import RequestContext
from django.utils.translation import ugettext as _
from django.utils import simplejson
from django.db import models
from forum.settings.base import Setting
from forum.forms import MaintenanceModeForm, PageForm, CreateUserForm
from forum.settings.forms import SettingsSetForm
from forum.utils import pagination, html
from forum.utils.mail import send_template_email
from forum.settings.base import Setting
from forum.forms import MaintenanceModeForm, PageForm, CreateUserForm
from forum.settings.forms import SettingsSetForm
from forum.utils import pagination, html
from forum.utils.mail import send_template_email
from forum.models import Question, Answer, User, Node, Action, Page, NodeState, Tag
from forum.models.node import NodeMetaClass
from forum.actions import NewPageAction, EditPageAction, PublishAction, DeleteAction, UserJoinsAction, CloseAction
from forum.models import Question, Answer, User, Node, Action, Page, NodeState, Tag
from forum.models.node import NodeMetaClass
from forum.actions import NewPageAction, EditPageAction, PublishAction, DeleteAction, UserJoinsAction, CloseAction
- res = fn(request, *args, **kwargs)
- if isinstance(res, HttpResponse):
- return res
+ if request.user.is_authenticated() and (request.user.is_staff or request.user.is_superuser):
+ return fn(request, *args, **kwargs)
+ else:
+ return HttpResponseUnauthorized(request)
+
+ return wrapper
+
+def admin_page_wrapper(fn, request, *args, **kwargs):
+ res = fn(request, *args, **kwargs)
+ if isinstance(res, HttpResponse):
+ return res
- template, context = res
- context['basetemplate'] = settings.DJSTYLE_ADMIN_INTERFACE and "osqaadmin/djstyle_base.html" or "osqaadmin/base.html"
- context['allsets'] = Setting.sets
- context['othersets'] = sorted(
- [s for s in Setting.sets.values() if not s.name in
- ('basic', 'users', 'email', 'paths', 'extkeys', 'repgain', 'minrep', 'voting', 'accept', 'badges', 'about', 'faq', 'sidebar',
- 'form', 'moderation', 'css', 'headandfoot', 'head', 'view', 'urls')]
- , lambda s1, s2: s1.weight - s2.weight)
+ template, context = res
+ context['basetemplate'] = settings.DJSTYLE_ADMIN_INTERFACE and "osqaadmin/djstyle_base.html" or "osqaadmin/base.html"
+ context['allsets'] = Setting.sets
+ context['othersets'] = sorted(
+ [s for s in Setting.sets.values() if not s.name in
+ ('basic', 'users', 'email', 'paths', 'extkeys', 'repgain', 'minrep', 'voting', 'accept', 'badges', 'about', 'faq', 'sidebar',
+ 'form', 'moderation', 'css', 'headandfoot', 'head', 'view', 'urls')]
+ , lambda s1, s2: s1.weight - s2.weight)
- unsaved = request.session.get('previewing_settings', {})
- context['unsaved'] = set([getattr(settings, s).set.name for s in unsaved.keys() if hasattr(settings, s)])
+ unsaved = request.session.get('previewing_settings', {})
+ context['unsaved'] = set([getattr(settings, s).set.name for s in unsaved.keys() if hasattr(settings, s)])
- return render_to_response(template, context, context_instance=RequestContext(request))
+ return render_to_response(template, context, context_instance=RequestContext(request))
+
+def admin_page(fn):
+ @super_user_required
+ def wrapper(request, *args, **kwargs):
+ return admin_page_wrapper(fn, request, *args, **kwargs)
+
+ return wrapper
+
+def moderation_page(fn):
+ @staff_user_required
+ def wrapper(request, *args, **kwargs):
+ return admin_page_wrapper(fn, request, *args, **kwargs)
def flagged_posts(request):
return ('osqaadmin/flagged_posts.html', {
'flagged_posts': get_flagged_posts(),
def flagged_posts(request):
return ('osqaadmin/flagged_posts.html', {
'flagged_posts': get_flagged_posts(),
@admin_tools_page(_('createuser'), _("Create new user"))
def create_user(request):
if request.POST:
@admin_tools_page(_('createuser'), _("Create new user"))
def create_user(request):
if request.POST:
selected_nodes = request.POST.getlist('_selected_node')
if selected_nodes and request.POST.get('action', None):
selected_nodes = request.POST.getlist('_selected_node')
if selected_nodes and request.POST.get('action', None):