from flask import (Flask, request, abort, ) import os # Flask app app = Flask(__name__, static_folder='static', static_url_path='', instance_relative_config=True) CONFIG = os.environ.get('CONFIG') or 'config.Development' app.config.from_object('config.Default') app.config.from_object(CONFIG) # logging import logging from log.config import LoggingConfiguration LoggingConfiguration.set( logging.DEBUG if os.getenv('DEBUG') else logging.INFO, 'lightop.log', name='Web') import json from functools import wraps import subprocess import time FIRST = True def exception_to_json(func): @wraps(func) def wrapper(*args, **kwargs): try: result = func(*args, **kwargs) return result except (BadRequest, KeyError, ValueError, ) as e: result = {'error': {'code': 400, 'message': str(e)}} except PermissionDenied as e: result = {'error': {'code': 403, 'message': ', '.join(e.args)}} except (NotImplementedError, RuntimeError, AttributeError) as e: result = {'error': {'code': 500, 'message': ', '.join(e.args)}} return json.dumps(result) return wrapper class PermissionDenied(Exception): pass class BadRequest(Exception): pass HTML_INDEX = '''