aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/moderation/views.py
diff options
context:
space:
mode:
authortilly-Q <nattilypigeonfowl@gmail.com>2013-08-29 17:31:19 -0400
committertilly-Q <nattilypigeonfowl@gmail.com>2013-08-29 17:31:19 -0400
commit1bb367f6136ae4cbcdf6dd86af65eb613913dbd8 (patch)
treec3565801fcf21de1383b5bdb764208b3a98c8e49 /mediagoblin/moderation/views.py
parentdfd66b789cd6cc9470c2a98bcbda9ee5e0f3ad0f (diff)
downloadmediagoblin-1bb367f6136ae4cbcdf6dd86af65eb613913dbd8.tar.lz
mediagoblin-1bb367f6136ae4cbcdf6dd86af65eb613913dbd8.tar.xz
mediagoblin-1bb367f6136ae4cbcdf6dd86af65eb613913dbd8.zip
This is a quick commit. I gave admins the ability to ban or unban users
straight from the moderation.users_detail page. I also changed the UserBan.expiration_date type from DateTime into Date. I also began work on the Terms of Service, pulled from another website (which will be cited clearly before I'm done). I added new tests as well for the ban/unbanning. Lastly, I added a few `user_not_banned` decorators to relevant views, so banned users cannot access any pages.
Diffstat (limited to 'mediagoblin/moderation/views.py')
-rw-r--r--mediagoblin/moderation/views.py26
1 files changed, 24 insertions, 2 deletions
diff --git a/mediagoblin/moderation/views.py b/mediagoblin/moderation/views.py
index b2223744..869b7b8a 100644
--- a/mediagoblin/moderation/views.py
+++ b/mediagoblin/moderation/views.py
@@ -24,7 +24,7 @@ from mediagoblin.decorators import (require_admin_or_moderator_login, \
from mediagoblin.tools.response import render_to_response, redirect
from mediagoblin.moderation import forms as moderation_forms
from mediagoblin.moderation.tools import (take_punitive_actions, \
- take_away_privileges, give_privileges)
+ take_away_privileges, give_privileges, ban_user, unban_user)
from datetime import datetime
@require_admin_or_moderator_login
@@ -74,6 +74,7 @@ def moderation_users_detail(request):
ReportBase.discriminator=='archived_report').all()
privileges = Privilege.query
user_banned = UserBan.query.get(user.id)
+ ban_form = moderation_forms.BanForm()
return render_to_response(
request,
@@ -81,7 +82,8 @@ def moderation_users_detail(request):
{'user':user,
'privileges': privileges,
'reports':active_reports,
- 'user_banned':user_banned})
+ 'user_banned':user_banned,
+ 'ban_form':ban_form})
@require_admin_or_moderator_login
def moderation_reports_panel(request):
@@ -154,3 +156,23 @@ def give_or_take_away_privilege(request, url_user):
request,
'mediagoblin.moderation.users_detail',
user=url_user.username)
+
+@user_has_privilege(u'admin')
+@active_user_from_url
+def ban_or_unban(request, url_user):
+ """
+ A page to ban or unban a user. Only can be used by an admin.
+ """
+ form = moderation_forms.BanForm(request.form)
+ print "accessed page"
+ if request.method == "POST" and form.validate():
+ already_banned = unban_user(url_user.id)
+ if not already_banned:
+ user_ban = ban_user(url_user.id,
+ expiration_date = form.user_banned_until.data,
+ reason = form.why_user_was_banned.data)
+ user_ban.save()
+ return redirect(
+ request,
+ 'mediagoblin.moderation.users_detail',
+ user=url_user.username)