Beispiel #1
0
class ResponseTimer(object):
    """Nearly trivial class, used for tracking how long the page took to
    create.

    Properties are `total_time`, `sql_time`, and `sql_queries`.

    In SQL debug mode, `sql_query_log` is also populated.  Its keys are
    queries; values are dicts of parameters, time, and caller.
    """
    def __init__(self):
        self._start_time = datetime.now()
        self._total_time = None

        self.from_cache = None

        # SQLAlchemy will add to these using the above event listeners; see
        # spline.config.environment
        self.sql_time = timedelta()
        self.sql_queries = 0
        self.sql_query_log = OrderedDict()

    @property
    def total_time(self):
        # Calculate and save the total render time as soon as this is accessed
        if self._total_time is None:
            self._total_time = datetime.now() - self._start_time
        return self._total_time

    def add_log(self, log):
        self.sql_query_log.setdefault(log['statement'], []).append(log)
Beispiel #2
0
    def render_imports(self, model):
        d = OrderedDict()
        for col in model.table.columns:
            if col.server_default:
                d.setdefault('sqlalchemy', ('text', '_text'))

        imports = ''
        for k, v in d.items():
            if isinstance(v, tuple):
                imports += 'from {} import {} as {}\n'.format(k, v[0], v[1])
            else:
                imports += 'from {} import {}\n'.format(k, v)
        if len(d) > 0:
            imports += '\n'
        imports += 'from {} import db\n'.format(self.name)
        return imports