Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions etc/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,6 @@ misaka @ https://pypi.weasyl.dev/misaka/misaka-1.0.3%2Bweasyl.6.tar.gz#sha224=a7

# https://github.com/Weasyl/sanpera
sanpera @ https://pypi.weasyl.dev/sanpera/sanpera-0.1.1%2Bweasyl.6.tar.gz#sha224=49ec99f337a620b6e0a3d99ffbe387b3f6c74e03a9ede4f5525daaed

jinja2
pyramid_jinja2
14 changes: 0 additions & 14 deletions libweasyl/libweasyl/html.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
Specifically, utilities for creating HTML and utilities for removing HTML.
"""

import json

try:
from html.parser import HTMLParser
Expand Down Expand Up @@ -45,16 +44,3 @@ def handle_charref(self, name):
parser = Parser()
parser.feed(markdown)
return "".join(parser.text_parts)


def inline_json(obj):
"""
Format a python object as JSON for inclusion in HTML.

Parameters:
obj: A python object that can be converted to JSON.

Returns:
An escaped :term:`native string` of JSON.
"""
return json.dumps(obj).replace("</", r"<\/").replace("<!--", r"<\!--")
12 changes: 0 additions & 12 deletions libweasyl/libweasyl/test/test_html.py

This file was deleted.

57 changes: 30 additions & 27 deletions weasyl/controllers/admin.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
from __future__ import absolute_import

from pyramid.httpexceptions import HTTPSeeOther
from pyramid.response import Response
from pyramid.view import view_config

from libweasyl import staff
from libweasyl.models.site import SiteUpdate

from weasyl import errorcode, login, moderation, profile, siteupdate
from weasyl import login, moderation, profile, siteupdate
from weasyl.error import WeasylError
from weasyl.controllers.decorators import admin_only
from weasyl.controllers.decorators import token_checked
Expand All @@ -16,16 +16,19 @@
""" Administrator control panel view callables """


@view_config(route_name="admincontrol", renderer='/admincontrol/admincontrol.jinja2')
@admin_only
def admincontrol_(request):
return Response(d.webpage(request.userid, "admincontrol/admincontrol.html", title="Admin Control Panel"))
return {'title': "Admin Control Panel"}


@view_config(route_name="admin_siteupdate", renderer='/admincontrol/siteupdate.jinja2', request_method="GET")
@admin_only
def admincontrol_siteupdate_get_(request):
return Response(d.webpage(request.userid, "admincontrol/siteupdate.html", (SiteUpdate(),), title="Submit Site Update"))
return {'update': SiteUpdate(), 'title': "Submit Site Update"}


@view_config(route_name="admin_siteupdate", renderer='/admincontrol/siteupdate.jinja2', request_method="POST")
@admin_only
@token_checked
def admincontrol_siteupdate_post_(request):
Expand All @@ -43,13 +46,15 @@ def admincontrol_siteupdate_post_(request):
raise HTTPSeeOther(location="/site-updates/%d" % (update.updateid,))


@view_config(route_name="site_update_edit", renderer='/admincontrol/siteupdate.jinja2', request_method="GET")
@admin_only
def site_update_edit_(request):
updateid = int(request.matchdict['update_id'])
update = SiteUpdate.query.get_or_404(updateid)
return Response(d.webpage(request.userid, "admincontrol/siteupdate.html", (update,), title="Edit Site Update"))
return {'update': update, 'title': "Edit Site Update"}


@view_config(route_name="site_update", renderer='/admincontrol/siteupdate.jinja2', request_method="POST")
@admin_only
@token_checked
def site_update_put_(request):
Expand All @@ -73,6 +78,7 @@ def site_update_put_(request):
raise HTTPSeeOther(location="/site-updates/%d" % (update.updateid,))


@view_config(route_name="admin_manageuser", renderer='/admincontrol/manageuser.jinja2', request_method="GET")
@admin_only
def admincontrol_manageuser_get_(request):
form = request.web_input(name="")
Expand All @@ -81,14 +87,12 @@ def admincontrol_manageuser_get_(request):
if not otherid:
raise WeasylError("userRecordMissing")
if request.userid != otherid and otherid in staff.ADMINS and request.userid not in staff.TECHNICAL:
return Response(d.errorpage(request.userid, errorcode.permission))
raise WeasylError('InsufficientPermissions')

return Response(d.webpage(request.userid, "admincontrol/manageuser.html", [
# Manage user information
profile.select_manage(otherid),
], title="User Management"))
return {'profile': profile.select_manage(otherid), 'title': "User Management"}


@view_config(route_name="admin_manageuser", renderer='/admincontrol/manageuser.jinja2', request_method="POST")
@admin_only
@token_checked
def admincontrol_manageuser_post_(request):
Expand All @@ -97,7 +101,7 @@ def admincontrol_manageuser_post_(request):
userid = d.get_int(form.userid)

if request.userid != userid and userid in staff.ADMINS and request.userid not in staff.TECHNICAL:
return d.errorpage(request.userid, errorcode.permission)
raise WeasylError('InsufficientPermissions')

profile.do_manage(request.userid, userid,
username=form.username.strip() if form.ch_username else None,
Expand All @@ -111,6 +115,7 @@ def admincontrol_manageuser_post_(request):
raise HTTPSeeOther(location="/admincontrol")


@view_config(route_name="admin_acctverifylink", renderer='/admincontrol/acctverifylink.jinja2', request_method="POST")
@admin_only
@token_checked
def admincontrol_acctverifylink_(request):
Expand All @@ -120,11 +125,12 @@ def admincontrol_acctverifylink_(request):
username=form.username, email=form.email)

if token:
return Response(d.webpage(request.userid, "admincontrol/acctverifylink.html", [token]))
return {'token': token}

return Response(d.errorpage(request.userid, "No pending account found."))
return {'message': "No pending account found."}


@view_config(route_name="admincontrol_pending_accounts", renderer='/admincontrol/pending_accounts.jinja2', request_method="GET")
@admin_only
def admincontrol_pending_accounts_get_(request):
"""
Expand All @@ -139,14 +145,10 @@ def admincontrol_pending_accounts_get_(request):
ORDER BY username
""").fetchall()

return Response(d.webpage(
request.userid,
"admincontrol/pending_accounts.html",
[query],
title="Accounts Pending Creation"
))
return {'query': query, 'title': "Accounts Pending Creation"}


@view_config(route_name="admincontrol_pending_accounts", renderer='/admincontrol/pending_accounts.jinja2', request_method="POST")
@admin_only
@token_checked
def admincontrol_pending_accounts_post_(request):
Expand All @@ -166,11 +168,13 @@ def admincontrol_pending_accounts_post_(request):
raise HTTPSeeOther(location="/admincontrol/pending_accounts")


@view_config(route_name="admincontrol_finduser", renderer='/admincontrol/finduser.jinja2', request_method="GET")
@admin_only
def admincontrol_finduser_get_(request):
return Response(d.webpage(request.userid, "admincontrol/finduser.html", title="Search Users"))
return {'title': "Search Users"}


@view_config(route_name="admincontrol_finduser", renderer='/admincontrol/finduser.jinja2', request_method="POST")
@admin_only
@token_checked
def admincontrol_finduser_post_(request):
Expand All @@ -181,10 +185,9 @@ def admincontrol_finduser_post_(request):
if int(form.row_offset) < 0:
raise HTTPSeeOther("/admincontrol/finduser")

return Response(d.webpage(request.userid, "admincontrol/finduser.html", [
# Search results
moderation.finduser(request.userid, form),
# Pass the form and row offset in to enable pagination
form,
int(form.row_offset)
], title="Search Users: Results"))
return {
'query': moderation.finduser(request.userid, form),
'form': form,
'row_offset': int(form.row_offset),
'title': "Search Users: Results"
}
Loading