I've moved on to one of the last phases of my work! Now I'm just checking off

items from my last to-do list. The biggest change in this commit is that I made
the moderation reports panel sortable via get request. I also added in page nu-
mbers so that more than 10 reports can be viewed. I'm hoping to go from here to
make a search page. Aside from that, there were only a few other changes I made
this time. I fixed two bugs in my code. I copy-ed and pasted function
mediagoblin.user_pages.views:media_preview_comment which I must've deleted ear-
-lier in a merge. And I moved some of the javascript I was using in the modera-
-tion templates into it's own seperate .js file.

===============================================================================
    Made the moderation reports panel view sortable
===============================================================================
--\ mediagoblin/moderation/forms.py
--\ mediagoblin/moderation/views.py
--\ mediagoblin/templates/mediagoblin/moderation/report_panel.html
--\ mediagoblin/templates/mediagoblin/moderation/user.html
--|  Made `<user> report history` into a link that automatically shows all open
  | and closed reports on <user>.

===============================================================================
    Grabbed some code from master that I accidentally deleted in a merge
===============================================================================
--\ mediagoblin/user_pages/views.py

===============================================================================
    Moved javascript away from templates into its own file
===============================================================================
--\ mediagoblin/static/js/setup_report_forms.js
--\ mediagoblin/templates/mediagoblin/moderation/report.html
--\ mediagoblin/templates/mediagoblin/moderation/user.html

===============================================================================
    Cleared trailing white space
===============================================================================
--\ mediagoblin/templates/mediagoblin/moderation/media_panel.html
--\ mediagoblin/moderation/tools.py
--\ mediagoblin/templates/mediagoblin/meta/terms_of_service.html
--\ mediagoblin/templates/mediagoblin/moderation/report_panel.html
--\ mediagoblin/templates/mediagoblin/user_pages/media.html
--\ mediagoblin/tests/test_modelmethods.py

===============================================================================
    Small fixes
===============================================================================
--\ mediagoblin/templates/mediagoblin/moderation/report.html
--|  Fixed a link so that it points to the correct user page

--\ mediagoblin/templates/mediagoblin/user_pages/media.html
--|  Fixed a bug that crashed this page when a guest visitted it (because
  | request.user is None)
This commit is contained in:
tilly-Q
2013-09-03 11:57:10 -04:00
parent 1bb367f613
commit dc31cd1b65
12 changed files with 351 additions and 204 deletions

View File

@@ -67,3 +67,23 @@ class ReportResolutionForm(wtforms.Form):
validators=[wtforms.validators.optional()])
resolution_content = wtforms.TextAreaField()
class ReportPanelSortingForm(wtforms.Form):
active_p = wtforms.IntegerField(
_(u'Page'),
validators=[wtforms.validators.optional()])
active_reported_user = wtforms.IntegerField(
_(u'Reported User'),
validators=[wtforms.validators.optional()])
active_reporter = wtforms.IntegerField(
_(u'Reporter'),
validators=[wtforms.validators.optional()])
closed_p = wtforms.IntegerField(
_(u'Page'),
validators=[wtforms.validators.optional()])
closed_reported_user = wtforms.IntegerField(
_(u'Reported User'),
validators=[wtforms.validators.optional()])
closed_reporter = wtforms.IntegerField(
_(u'Reporter'),
validators=[wtforms.validators.optional()])

View File

@@ -163,7 +163,7 @@ def give_privileges(user,*privileges):
def ban_user(user_id, expiration_date=None, reason=None):
"""
This function is used to ban a user. If the user is already banned, the
function returns False. If the user is not already banned, this function
function returns False. If the user is not already banned, this function
bans the user using the arguments to build a new UserBan object.
:returns False if the user is already banned and the ban is not updated
@@ -177,7 +177,7 @@ def ban_user(user_id, expiration_date=None, reason=None):
user_id=user_id,
expiration_date=expiration_date,
reason=reason)
return new_user_ban
return new_user_ban
def unban_user(user_id):
"""

View File

@@ -26,6 +26,7 @@ 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)
from datetime import datetime
from math import ceil
@require_admin_or_moderator_login
def moderation_media_processing_panel(request):
@@ -91,19 +92,47 @@ def moderation_reports_panel(request):
Show the global panel for monitoring reports filed against comments or
media entries for this instance.
'''
report_list = ReportBase.query.filter(
ReportBase.discriminator!="archived_report").order_by(
ReportBase.created.desc()).limit(10)
closed_report_list = ReportBase.query.filter(
ReportBase.discriminator=="archived_report").order_by(
ReportBase.created.desc()).limit(10)
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()]
all_active = ReportBase.query.filter(
ReportBase.discriminator!="archived_report").filter(
*active_filter)
all_closed = ReportBase.query.filter(
ReportBase.discriminator=="archived_report").filter(
*closed_filter)
report_list = all_active.order_by(
ReportBase.created.desc()).offset((active_settings['start_page']-1)*10).limit(10)
closed_report_list = all_closed.order_by(
ReportBase.created.desc()).offset((closed_settings['start_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
return render_to_response(
request,
'mediagoblin/moderation/report_panel.html',
{'report_list':report_list,
'closed_report_list':closed_report_list})
'closed_report_list':closed_report_list,
'active_settings':active_settings,
'closed_settings':closed_settings})
@require_admin_or_moderator_login
def moderation_reports_detail(request):