Whew. This is a big update. I did some significant keeping work. I moved all of
the folders and enpoints labeled 'admin' to the more accurate term of 'moderat- ion.' I also created the ability for admins and moderators to add or remove pr- ivileges or to ban a user in response to a report. This also meant implementing the UserBan class in various places. I also had to add a column called result to the ReportBase table. This allows the moderator/admin to leave comments when they respond to a report, allowing for archiving of what responses they do/n't take. --\ mediagoblin/db/migrations.py --| Added result column to ReportBase --\ mediagoblin/db/models.py --| Added result column to ReportBase --| Added documentation to tables I had made previously --\ mediagoblin/decorators.py --| Editted the user_has_privilege decorator to check whether a user has been | banned or not --| Created a seperate user_not_banned decorator to prevent banned users from | accessing any pages --| Changed require_admin_login into require_admin_or_moderator login --\ mediagoblin/gmg_commands/users.py --| Made the gmg command `adduser` create a user w/ the appropriate privileges --\ mediagoblin/moderation/routing.py << formerly mediagoblin/admin/routing.py --| Renamed all of the routes from admin -> moderation --\ mediagoblin/routing.py --| Renamed all of the routes from admin -> moderation --\ mediagoblin/moderation/views.py << formerly mediagoblin/admin/views.py --| Renamed all of the routes & functions from admin -> moderation --| Expanded greatly on the moderation_reports_detail view and functionality --| Added in the give_or_take_away_privilege form, however this might be a use- | -less function which I could remove (because privilege changes should happe- | n in response to a report so they can be archived and visible) --\ mediagoblin/static/css/base.css --| Added in a style for the reports_detail page --\ mediagoblin/templates/mediagoblin/base.html --| Renamed all of the routes from admin -> moderation --\ mediagoblin/templates/mediagoblin/moderation/report.html --| Added form to allow moderators and admins to respond to reports. --\ mediagoblin/templates/mediagoblin/moderation/reports_panel.html --| Fixed the table for closed reports --\ mediagoblin/templates/mediagoblin/moderation/user.html --| Added in a table w/ all of the user's privileges and the option to add or | remove them. Again, this is probably vestigial --| Renamed all of the routes from admin -> moderation --\ mediagoblin/templates/mediagoblin/moderation/user_panel.html --| Renamed all of the routes from admin -> moderation --\ mediagoblin/tools/response.py --| Added function render_user_banned, this is the view function for the redir- | -ect that happens when a user tries to access the site whilst banned --\ mediagoblin/user_pages/forms.py --| Added important translate function where I had text --\ mediagoblin/user_pages/lib.py --| Renamed functiion for clarity --\ mediagoblin/user_pages/views.py --| Added the user_not_banned decorator to every view --\ mediagoblin/views.py --| Added the user_not_banned decorator --\ mediagoblin/moderation/forms.py --| Created this new file --\ mediagoblin/templates/mediagoblin/banned.html --| Created this new file --| This is the page which people are redirected to when they access the site | while banned
This commit is contained in:
@@ -51,11 +51,15 @@ class MediaCollectForm(wtforms.Form):
|
||||
Markdown</a> for formatting."""))
|
||||
|
||||
class CommentReportForm(wtforms.Form):
|
||||
report_reason = wtforms.TextAreaField('Reason for Reporting')
|
||||
report_reason = wtforms.TextAreaField(
|
||||
_('Reason for Reporting'),
|
||||
[wtforms.validators.Required()])
|
||||
comment_id = wtforms.IntegerField()
|
||||
reporter_id = wtforms.IntegerField()
|
||||
|
||||
class MediaReportForm(wtforms.Form):
|
||||
report_reason = wtforms.TextAreaField('Reason for Reporting')
|
||||
report_reason = wtforms.TextAreaField(
|
||||
_('Reason for Reporting'),
|
||||
[wtforms.validators.Required()])
|
||||
media_entry_id = wtforms.IntegerField()
|
||||
reporter_id = wtforms.IntegerField()
|
||||
|
||||
@@ -78,7 +78,7 @@ def add_media_to_collection(collection, media, note=None, commit=True):
|
||||
if commit:
|
||||
Session.commit()
|
||||
|
||||
def build_report_form(form_dict):
|
||||
def build_report_table(form_dict):
|
||||
"""
|
||||
This function is used to convert a form dictionary (from a User filing a
|
||||
report) into either a MediaReport or CommentReport object.
|
||||
|
||||
@@ -26,14 +26,14 @@ from mediagoblin.tools.response import render_to_response, render_404, \
|
||||
from mediagoblin.tools.translate import pass_to_ugettext as _
|
||||
from mediagoblin.tools.pagination import Pagination
|
||||
from mediagoblin.user_pages import forms as user_forms
|
||||
from mediagoblin.user_pages.lib import (send_comment_email, build_report_form,
|
||||
from mediagoblin.user_pages.lib import (send_comment_email, build_report_table,
|
||||
add_media_to_collection)
|
||||
|
||||
from mediagoblin.decorators import (uses_pagination, get_user_media_entry,
|
||||
get_media_entry_by_id, user_has_privilege,
|
||||
require_active_login, user_may_delete_media, user_may_alter_collection,
|
||||
get_user_collection, get_user_collection_item, active_user_from_url,
|
||||
get_media_comment_by_id)
|
||||
get_media_comment_by_id, user_not_banned)
|
||||
|
||||
from werkzeug.contrib.atom import AtomFeed
|
||||
|
||||
@@ -41,7 +41,7 @@ from werkzeug.contrib.atom import AtomFeed
|
||||
_log = logging.getLogger(__name__)
|
||||
_log.setLevel(logging.DEBUG)
|
||||
|
||||
|
||||
@user_not_banned
|
||||
@uses_pagination
|
||||
def user_home(request, page):
|
||||
"""'Homepage' of a User()"""
|
||||
@@ -80,7 +80,7 @@ def user_home(request, page):
|
||||
'media_entries': media_entries,
|
||||
'pagination': pagination})
|
||||
|
||||
|
||||
@user_not_banned
|
||||
@active_user_from_url
|
||||
@uses_pagination
|
||||
def user_gallery(request, page, url_user=None):
|
||||
@@ -114,7 +114,7 @@ def user_gallery(request, page, url_user=None):
|
||||
|
||||
MEDIA_COMMENTS_PER_PAGE = 50
|
||||
|
||||
|
||||
@user_not_banned
|
||||
@get_user_media_entry
|
||||
@uses_pagination
|
||||
def media_home(request, media, page, **kwargs):
|
||||
@@ -190,7 +190,7 @@ def media_post_comment(request, media):
|
||||
|
||||
return redirect_obj(request, media)
|
||||
|
||||
|
||||
@user_not_banned
|
||||
@get_media_entry_by_id
|
||||
@require_active_login
|
||||
def media_collect(request, media):
|
||||
@@ -269,6 +269,7 @@ def media_collect(request, media):
|
||||
|
||||
|
||||
#TODO: Why does @user_may_delete_media not implicate @require_active_login?
|
||||
@user_not_banned
|
||||
@get_media_entry_by_id
|
||||
@require_active_login
|
||||
@user_may_delete_media
|
||||
@@ -305,7 +306,7 @@ def media_confirm_delete(request, media):
|
||||
{'media': media,
|
||||
'form': form})
|
||||
|
||||
|
||||
@user_not_banned
|
||||
@active_user_from_url
|
||||
@uses_pagination
|
||||
def user_collection(request, page, url_user=None):
|
||||
@@ -335,7 +336,7 @@ def user_collection(request, page, url_user=None):
|
||||
'collection_items': collection_items,
|
||||
'pagination': pagination})
|
||||
|
||||
|
||||
@user_not_banned
|
||||
@active_user_from_url
|
||||
def collection_list(request, url_user=None):
|
||||
"""A User-defined Collection"""
|
||||
@@ -391,7 +392,7 @@ def collection_item_confirm_remove(request, collection_item):
|
||||
{'collection_item': collection_item,
|
||||
'form': form})
|
||||
|
||||
|
||||
@user_not_banned
|
||||
@get_user_collection
|
||||
@require_active_login
|
||||
@user_may_alter_collection
|
||||
@@ -575,7 +576,7 @@ def collection_atom_feed(request):
|
||||
|
||||
return feed.get_response()
|
||||
|
||||
|
||||
@user_not_banned
|
||||
@require_active_login
|
||||
def processing_panel(request):
|
||||
"""
|
||||
@@ -625,8 +626,8 @@ def processing_panel(request):
|
||||
@user_has_privilege(u'reporter')
|
||||
def file_a_report(request, media, comment=None):
|
||||
if request.method == "POST":
|
||||
report_form = build_report_form(request.form)
|
||||
report_form.save()
|
||||
report_table = build_report_table(request.form)
|
||||
report_table.save()
|
||||
|
||||
return redirect(
|
||||
request,
|
||||
|
||||
Reference in New Issue
Block a user