Add /admin/dbdownload.

master
voussoir 2022-07-15 23:35:35 -07:00
parent 0e00a1e981
commit 49992f59aa
No known key found for this signature in database
GPG Key ID: 5F7554F8C26DACCB
2 changed files with 21 additions and 1 deletions

View File

@ -2,6 +2,8 @@ import flask; from flask import request
from voussoirkit import flasktools from voussoirkit import flasktools
import etiquette
from .. import common from .. import common
site = common.site site = common.site
@ -23,3 +25,19 @@ def post_reload_config():
common.P.load_config() common.P.load_config()
return flasktools.json_response({}) return flasktools.json_response({})
@site.route('/admin/dbdownload')
def get_dbdump():
if not request.is_localhost:
flask.abort(403)
with common.P.transaction:
binary = common.P.database_filepath.read('rb')
now = etiquette.helpers.now(timestamp=False).strftime('%Y-%m-%d_%H-%M-%S')
download_as = f'etiquette {now}.db'
outgoing_headers = {
'Content-Type': 'application/octet-stream',
'Content-Disposition': f'attachment; filename*=UTF-8\'\'{download_as}',
}
return flask.Response(binary, headers=outgoing_headers)

View File

@ -21,7 +21,9 @@
{{header.make_header(session=session)}} {{header.make_header(session=session)}}
<div id="content_body"> <div id="content_body">
<div class="panel"> <div class="panel">
<button id="reload_config_button" class="green_button" onclick="return reload_config_form();">Reload config file</button> <h1>Admin tools</h1>
<p><button id="reload_config_button" class="green_button" onclick="return reload_config_form();">Reload config file</button></p>
<p><a href="/admin/dbdownload">Download database file</a></p>
</div> </div>
</div> </div>
</body> </body>