From c926c7562cc325f960f610630225fb85d37c9179 Mon Sep 17 00:00:00 2001 From: jordan Date: Thu, 2 Jun 2011 15:37:45 +0000 Subject: [PATCH] making the flagged posts administration page visible by moderators, creating a separate decorator @moderation_page and a separate internal wrapper, combined for both @admin_page and @moderation_page git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@1057 0cfe37f9-358a-4d5e-be75-b63607b5c754 --- forum/views/admin.py | 55 +++++++++++++++++++++++++++++--------------- 1 file changed, 37 insertions(+), 18 deletions(-) diff --git a/forum/views/admin.py b/forum/views/admin.py index 4b07915..696bf66 100644 --- a/forum/views/admin.py +++ b/forum/views/admin.py @@ -31,28 +31,47 @@ def super_user_required(fn): return wrapper -def admin_page(fn): - @super_user_required +def staff_user_required(fn): def wrapper(request, *args, **kwargs): - res = fn(request, *args, **kwargs) - if isinstance(res, HttpResponse): - return res + if request.user.is_authenticated() and request.user.is_staff: + return fn(request, *args, **kwargs) + else: + return HttpResponseUnauthorized(request) - 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) + return wrapper + +def admin_page_wrapper(fn, request, *args, **kwargs): + res = fn(request, *args, **kwargs) + if isinstance(res, HttpResponse): + return res - context['tools'] = TOOLS + 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)]) + context['tools'] = TOOLS - return render_to_response(template, context, context_instance=RequestContext(request)) + 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)) + +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) return wrapper @@ -328,7 +347,7 @@ def maintenance(request): }) -@admin_page +@moderation_page def flagged_posts(request): return ('osqaadmin/flagged_posts.html', { 'flagged_posts': get_flagged_posts(), -- 2.45.1