import logging from flask import Blueprint, render_template from lakesuperior.api import admin as admin_api # Admin interface and REST API. logger = logging.getLogger(__name__) admin = Blueprint('admin', __name__) @admin.route('/stats', methods=['GET']) def stats(): ''' Get repository statistics. ''' def fsize_fmt(num, suffix='b'): ''' Format an integer into 1024-block file size format. Adapted from Python 2 code on https://stackoverflow.com/a/1094933/3758232 @param num (int) Size value in bytes. @param suffix (string) Suffix label (defaults to `B`). @return string Formatted size to largest fitting unit. ''' for unit in ['','K','M','G','T','P','E','Z']: if abs(num) < 1024.0: return "{:3.1f} {}{}".format(num, unit, suffix) num /= 1024.0 return "{:.1f} {}{}".format(num, 'Y', suffix) repo_stats = admin_api.stats() return render_template( 'stats.html', fsize_fmt=fsize_fmt, **repo_stats) @admin.route('/tools', methods=['GET']) def admin_tools(): ''' Admin tools. @TODO stub. ''' return render_template('admin_tools.html')