aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/moderation/views.py
diff options
context:
space:
mode:
authortilly-Q <nattilypigeonfowl@gmail.com>2013-09-10 13:16:22 -0400
committertilly-Q <nattilypigeonfowl@gmail.com>2013-09-10 13:17:07 -0400
commit6acf4ee60e3c07aea5bbd9e613335f0de1240d73 (patch)
treeff897644ee801d5faec2aba93f29a03866591083 /mediagoblin/moderation/views.py
parent25625107b6c7805b474ad7da976171991b259e58 (diff)
downloadmediagoblin-6acf4ee60e3c07aea5bbd9e613335f0de1240d73.tar.lz
mediagoblin-6acf4ee60e3c07aea5bbd9e613335f0de1240d73.tar.xz
mediagoblin-6acf4ee60e3c07aea5bbd9e613335f0de1240d73.zip
This should be my final code update before I am ready for review! Basically, in
this update I finished the search/sort function on the Reports Panel. I also finished the Terms of Service and made the decision to remove the meta portion of the site I had planned to create. I decided that the features involved were just unnecessary at this point. I also dropped the User status column and added a migration to establish default privileges (and create the privilege foundat- -ions. I fixed a few small errors that were left over as well, in the implemen- tation and in the tests. Next, I just need to await code review and work on the documentation for these new features. I also need to supervise a new merge to master. =============================================================================== Dropped the vestigial 'status' column =============================================================================== --\ mediagoblin/db/migrations.py --\ mediagoblin/db/models.py --| Also added in comments describing the current situation with the `is_admin` | and `email_verified` columns, where they are 100% vestigial but cannot be | dropped. =============================================================================== Wrote necessary migrations to set up Privilege foundations and give users the necessary privileges on an older implementation of mediagoblin that is migrating into this update =============================================================================== --\ mediagoblin/db/migrations.py =============================================================================== Deleted the meta pages =============================================================================== --\ Deleted mediagoblin/meta/__init__.py --\ Deleted mediagoblin/meta/routing.py --\ Deleted mediagoblin/meta/views.py --\ Deleted mediagoblin/templates/mediagoblin/meta/code_of_conduct.html --\ Deleted mediagoblin/templates/mediagoblin/meta/reports_details.html --\ Deleted mediagoblin/templates/mediagoblin/meta/reports_panel.html ---------------------------------------------------------------- Moved the terms of service to /terms_of_service ---------------------------------------------------------------- --\ Moved mediagoblin/templates/mediagoblin/meta/terms_of_service.html -> mediagoblin/templates/mediagoblin/terms_of_service.html --| I decided that terms of service were really the only necessary part of my | planned "meta" pages, so I moved it instead to its own singular page --\ mediagoblin/routing.py --\ mediagoblin/static/css/base.css --\ mediagoblin/templates/mediagoblin/base.html --\ mediagoblin/views.py =============================================================================== Simplified & Finished the Reports Panel Searching =============================================================================== --\ mediagoblin/moderation/forms.py --\ mediagoblin/moderation/tools.py --\ mediagoblin/moderation/views.py --\ mediagoblin/templates/mediagoblin/moderation/report_panel.html --\ mediagoblin/templates/mediagoblin/moderation/user.html =============================================================================== Fixed Small Errors =============================================================================== --\ mediagoblin/templates/mediagoblin/user_pages/user.html --\ mediagoblin/tests/test_moderation.py --\ mediagoblin/tests/tools.py ===============================================================================
Diffstat (limited to 'mediagoblin/moderation/views.py')
-rw-r--r--mediagoblin/moderation/views.py50
1 files changed, 25 insertions, 25 deletions
diff --git a/mediagoblin/moderation/views.py b/mediagoblin/moderation/views.py
index f09f4c99..6a23ddd6 100644
--- a/mediagoblin/moderation/views.py
+++ b/mediagoblin/moderation/views.py
@@ -24,7 +24,9 @@ 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, ban_user, unban_user)
+ take_away_privileges, give_privileges, ban_user, unban_user, \
+ parse_report_panel_settings)
+from werkzeug.datastructures import ImmutableMultiDict
from datetime import datetime
from math import ceil
@@ -92,37 +94,35 @@ def moderation_reports_panel(request):
Show the global panel for monitoring reports filed against comments or
media entries for this instance.
'''
-
- form = moderation_forms.ReportPanelSortingForm(request.args)
- active_settings = {'start_page':1, 'filters':{}}
- closed_settings = {'start_page':1, 'filters':{}}
- if form.validate():
- active_settings['start_page'] = form.active_p.data or 1
- active_settings['filters']['reported_user_id'] = form.active_reported_user.data
- active_settings['filters']['reporter_id'] = form.active_reporter.data
- closed_settings['start_page'] = form.closed_p.data or 1
- closed_settings['filters']['reported_user_id'] = form.closed_reported_user.data
- closed_settings['filters']['reporter_id'] = form.closed_reporter.data
-
- active_settings['filters']=dict((k, v) for k, v in active_settings['filters'].iteritems() if v)
- closed_settings['filters']=dict((k, v) for k, v in closed_settings['filters'].iteritems() if v)
- active_filter = [
- getattr(ReportBase,key)==val \
-for key,val in active_settings['filters'].viewitems()]
- closed_filter = [
- getattr(ReportBase,key)==val \
-for key,val in active_settings['filters'].viewitems()]
+ filters = []
+ active_settings, closed_settings = {'current_page':1}, {'current_page':1}
+
+ if len(request.args) > 0:
+ form = moderation_forms.ReportPanelSortingForm(request.args)
+ if form.validate():
+ filters = parse_report_panel_settings(form)
+ active_settings['current_page'] = form.active_p.data or 1
+ closed_settings['current_page'] = form.closed_p.data or 1
+ filters = [
+ getattr(ReportBase,key)==val
+ for key,val in filters.viewitems()]
all_active = ReportBase.query.filter(
ReportBase.discriminator!="archived_report").filter(
- *active_filter)
+ *filters)
all_closed = ReportBase.query.filter(
ReportBase.discriminator=="archived_report").filter(
- *closed_filter)
+ *filters)
+
+ # report_list and closed_report_list are the two lists of up to 10
+ # items which are actually passed to the user in this request
report_list = all_active.order_by(
- ReportBase.created.desc()).offset((active_settings['start_page']-1)*10).limit(10)
+ ReportBase.created.desc()).offset(
+ (active_settings['current_page']-1)*10).limit(10)
closed_report_list = all_closed.order_by(
- ReportBase.created.desc()).offset((closed_settings['start_page']-1)*10).limit(10)
+ ReportBase.created.desc()).offset(
+ (closed_settings['current_page']-1)*10).limit(10)
+
active_settings['last_page'] = int(ceil(all_active.count()/10.))
closed_settings['last_page'] = int(ceil(all_closed.count()/10.))
# Render to response