def index(self, **k): index_query = "select distinct kind from entities" db = self.model.site.db queues = Queues(db) engines = ('<H3>Engines</H3>' + ', '.join(str(e[0]) for e in db('show engines'))) entities = ('<H3>Entities</H3>' + ', '.join([ link_to(kind, 'storage', 'entity', kind) for kind, in db(index_query) ])) tables = ('<H3>Tables</H3>' + ', '.join([ link_to(kind, 'storage', 'table', kind) for kind, in db('show tables') ])) zap = link_to_page('clear queues', 'clear_queues') + '<br>' queues = ('<H3>Queues</H3>' + zap + ', '.join([ link_to(kind, 'storage', 'queue', kind) for kind in Queues(db).topics() ])) content = tables + entities + queues database_info = 'database: %s' % zoom.system.site.db.connect_string return Page(content, title='Storage', subtitle=database_info)
def get_owner_link(self): """Returns a link for the site owner.""" if self.owner_url: return link_to(self.owner_name, self.owner_url) if self.owner_email: return mail_to(self.owner_name, self.owner_email) return self.owner_name
def error_panel(db): host = zoom.system.request.host data = db( """ select log.id, username, path, timestamp from log left join users on log.user_id = users.id where log.status in ("E") and timestamp>=%s and server = %s order by log.id desc limit 10 """, today(), host) rows = [] for rec in data: row = [ link_to(str(rec[0]), '/admin/entry/' + str(rec[0])), link_to_user(rec[1]), rec[2], how_long_ago(rec[3]), ] rows.append(row) labels = 'id', 'user', 'path', 'when' return zoom.browse(rows, labels=labels, title=link_to_page('Errors'))
def __init__(self, fields, **kwargs): def name_from(fields): """make a name from the field function provided""" def rtrim(text, suffix): if text.endswith(suffix): return text[:-len(suffix)] return text return name_for(rtrim(rtrim(fields.__name__, '_fields'), '_form')) def calc_url(): """calculate default collection URL""" return '/' + '/'.join(context.request.route[:2]) get = kwargs.pop self.fields = callable(fields) and fields() or fields self.item_name = get('item_name', None) or name_from(fields) self.name = get('name', self.item_name + 's') self.title = self.name.capitalize() self.item_title = self.item_name.capitalize() self.filter = get('filter', None) self.columns = get('columns', None) or self.calc_columns() self.labels = get('labels', None) or self.calc_labels() self.model = get('model', CollectionModel) self.store = get('store', None) self.url = get('url', calc_url()) self.controller = get('controller', self.controller) self.link = link_to(self.name, self.url) if 'policy' in kwargs: self.allows = get('policy')
def log_data(db, status, n, limit, q): """retreive log data""" host = zoom.system.request.host statuses = tuple(status) offset = int(n) * int(limit) cmd = """ select id, status, user_id, address, app, path, timestamp, elapsed from log where status in %s and server = %s order by id desc limit {limit} offset {offset} """.format(limit=int(limit), offset=offset, statuses=statuses) data = db(cmd, statuses, host) data = [[ link_to(str(item[0]), '/admin/entry/' + str(item[0])), item[1], zoom.helpers.who(item[2]), ] + list(item[3:]) for item in data if q in repr(item)] labels = ('id', 'status', 'user', 'address', 'app', 'path', 'timestamp', 'elapsed') return browse(data, labels=labels)
def activity_panel(db): host = zoom.system.request.host data = db( """ select log.id, users.username, log.address, log.path, log.timestamp, log.elapsed from log left join users on log.user_id = users.id where server = %s and path not like "%%\\/\\_%%" and log.status = 'C' order by timestamp desc limit 15 """, host) rows = [] for rec in data: row = [ link_to(str(rec[0]), '/admin/entry/' + str(rec[0])), link_to_user(rec[1]), rec[2], zoom.link_to(rec[3]), how_long_ago(rec[4]), rec[4], rec[5], ] rows.append(row) labels = 'id', 'user', 'address', 'path', 'when', 'timestamp', 'elapsed' return zoom.browse(rows, labels=labels, title=link_to_page('Requests'))
def index(self, q=None): def serializable(i): _, v = i try: json.dumps(v) return True except TypeError: return False request = self.request links = link_to('hello', '/hello') tpl = links + '<pre>{}</pre>' request_values = dict(filter(serializable, request.__dict__.items())) values = dict( request_values, data=request.data, a_url=url_for('howdy', name='Joe Smith'), a_rooted_url=url_for('/howdy', name='Joe Smith'), ) actions = 'New', return page(tpl.format(json.dumps(values, indent=4)), title='System Info', actions=actions, search=request.data.get('q', ''), subtitle='this is the subtitle') return page('overview', title='my page')
def index(self, **k): index_query = "select distinct kind from entities" db = self.model.site.db entities = '<br>'.join([ link_to(kind, 'storage', kind, 'browse') for kind, in db(index_query) ]) return Page('<H1>Storage</H1><H3>Entities</H3><br>%s' % entities)
def index(self, **k): index_query = "select distinct kind from entities" db = self.model.site.db queues = Queues(db) entities = ('<H3>Entities</H3>' + '<br>'.join([ link_to(kind, 'storage', 'entity', kind) for kind, in db(index_query) ])) tables = ('<H3>Tables</H3>' + '<br>'.join([ link_to(kind, 'storage', 'table', kind) for kind, in db('show tables') ])) queues = ('<H3>Queues</H3>' + '<br>'.join([ link_to(kind, 'storage', 'queue', kind) for kind in Queues(db).topics() ])) content = entities + tables + queues return Page(content, title='Storage')
def __init__(self, name, filename, site): self.name = name self.filename = filename self.url = site.url + '/' + name self.abs_url = site.abs_url + '/' + name self.path = os.path.dirname(filename) self.site = site self.config_parser = configparser.ConfigParser() self.config = self.get_config(DEFAULT_SETTINGS) self.link = link_to(self.title, self.url) self.visible = self.config.get('visible') self.enabled = self.config.get('enabled') self.in_development = self.config.get('in_development') self._method = None
def __init__(self, fields, **kwargs): def name_from(fields): """make a name from the field function provided""" def rtrim(text, suffix): if text.endswith(suffix): return text[:-len(suffix)] return text return name_for( rtrim(rtrim(fields.__name__, '_fields'), '_form') ) def calc_url(): """calculate default collection URL""" return '/' + '/'.join(context.request.route[:2]) get = kwargs.pop self.__fields = fields self.item_name = get('item_name', None) or name_from(fields) self.name = get('name', self.item_name + 's') self.title = self.name.title().replace('_',' ') self.item_title = self.item_name.title().replace('_',' ') self.filter = get('filter', None) self.columns = get('columns', None) self.labels = get('labels', None) self.model = get('model', None) self.store = get('store', None) self.url = get('url', calc_url()) self.controller = get('controller', self.controller) self.view = get('view', self.view) self.link = link_to(self.name, self.url) self.key_name = get('key_name', 'key') self.user = None self.request = None self.route = None self.search_engine = get('search_engine', BasicSearch) self.many_records = 50 self.sorter = get('sorter', None) self.sortable = get('sortable', False) if 'policy' in kwargs: self.allows = get('policy')
def app(request): zoom.requires('Morphext') content = ul(link_to(text, url) for text, url in [ ('Info', '/info'), ]) js = """ $("#js-rotating").Morphext({ animation: "bounceIn", separator: ",", speed: 2000, }); """ return page( '<span id="js-rotating">Hello, Howdy, Hola, Hi</span> World!<br>{}'. format(content), title='Hello', js=js, )
def errors(self, n=0, limit=50): offset = int(n) * int(limit) db = self.model.site.db log_data = db(""" select id, user_id, address, app, path, timestamp, elapsed from log where status='E' order by timestamp desc limit {limit} offset {offset}""".format(**locals())) labels = 'id', 'user', 'address', 'app', 'path', 'timestamp', 'elapsed' data = [ [link_to(str(item[0]), '/admin/show_error/' + str(item[0]))] + list(item[1:]) for item in log_data ] return page(browse(data, labels=labels), title='Errors')
def link(self): """Return a link""" return link_to(self.name, self.url)
def link(self): """user as link""" return link_to(self.username, self.url)
def app(request): content = ul(link_to(text, url) for text, url in [ ('Info', '/info'), ]) return page('Hello World!<br>{}'.format(content), title='Hello')
def link(self): """user as link""" if zoom.system.user and zoom.system.user.is_admin: return link_to(self.username, self.url) else: return self.username
def fmt(rec): entry = (link_to(str(rec[0]), '/admin/entry/' + str(rec[0])), ) user = (zoom.helpers.who(rec[4]), ) link = (zoom.link_to(rec[2]), ) return entry + (rec[1], ) + link + rec[3:4] + user + rec[5:]
def link_to_user(username): return link_to(username, '/admin/users/{}'.format(key_for(username)))