diff options
author | tilly-Q <nattilypigeonfowl@gmail.com> | 2013-08-29 17:31:19 -0400 |
---|---|---|
committer | tilly-Q <nattilypigeonfowl@gmail.com> | 2013-08-29 17:31:19 -0400 |
commit | 1bb367f6136ae4cbcdf6dd86af65eb613913dbd8 (patch) | |
tree | c3565801fcf21de1383b5bdb764208b3a98c8e49 /mediagoblin/moderation/views.py | |
parent | dfd66b789cd6cc9470c2a98bcbda9ee5e0f3ad0f (diff) | |
download | mediagoblin-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.py | 26 |
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) |