def add_report(request):
"""
Add an abuse report to the database
:param request: a request object
:return: a redirect to the abuse reports page
"""
if request.authenticated_userid is None:
raise exc.HTTPNotFound()
reporter = request.authenticated_user
if reporter is None:
raise exc.HTTPNotFound()
public_language_id = request.matchdict["public_language_id"]
page_url = urllib.unquote(urllib.unquote(request.matchdict["page_uri"]))
public_group_id = request.matchdict['public_group_id']
user_id = request.matchdict['user_id']
page = annotran.pages.models.Page.get_by_uri(page_url)
author = h.models.User.get_by_username(user_id)
reporter = h.models.User.get_by_username(request.authenticated_user.username)
group = h.groups.models.Group.get_by_pubid(public_group_id)
language = annotran.languages.models.Language.get_by_public_language_id(public_language_id)
if page is None or author is None or reporter is None or group is None or language is None:
raise exc.HTTPNotFound()
translation = annotran.translations.models.Translation.get_translation(page, language, group)
if translation is None:
raise exc.HTTPNotFound()
report = annotran.reports.models.Report.get_report(translation, author, reporter)
# if already in a database, it means it was reported previously
if report:
return exc.HTTPBadRequest()
report = annotran.reports.models.Report(translation, author, reporter)
request.db.add(report)
request.db.flush()
reports = request.route_url('admin_reports')
body_text = u'Hello,\n\nA new abuse report has been filed. ' \
u'Please see <a href="{0}">{0}</a>.\n\nAnnotran'.format(reports)
annotran.mailer.send(request, subject=u'A new abuse report has been filed',
recipients=[annotran.views.Shared.support_address],
body=body_text)
return {}
评论列表
文章目录