コード例 #1
0
ファイル: index.py プロジェクト: robinsax/zoom
    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)
コード例 #2
0
ファイル: site.py プロジェクト: zodman/ZoomFoundry
 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
コード例 #3
0
ファイル: index.py プロジェクト: zodman/ZoomFoundry
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'))
コード例 #4
0
    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')
コード例 #5
0
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)
コード例 #6
0
ファイル: index.py プロジェクト: zodman/ZoomFoundry
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'))
コード例 #7
0
ファイル: app.py プロジェクト: RyanLainchbury/zoom
    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')
コード例 #8
0
ファイル: index.py プロジェクト: RyanLainchbury/zoom
 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)
コード例 #9
0
    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')
コード例 #10
0
ファイル: apps.py プロジェクト: RyanLainchbury/zoom
    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
コード例 #11
0
    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')
コード例 #12
0
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,
    )
コード例 #13
0
 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')
コード例 #14
0
 def link(self):
     """Return a link"""
     return link_to(self.name, self.url)
コード例 #15
0
ファイル: users.py プロジェクト: RyanLainchbury/zoom
 def link(self):
     """user as link"""
     return link_to(self.username, self.url)
コード例 #16
0
ファイル: app.py プロジェクト: sean-hayes/zoom
def app(request):
    content = ul(link_to(text, url) for text, url in [
        ('Info', '/info'),
    ])
    return page('Hello World!<br>{}'.format(content), title='Hello')
コード例 #17
0
ファイル: users.py プロジェクト: ZoomFoundry/ZoomFoundry
 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
コード例 #18
0
ファイル: index.py プロジェクト: zodman/ZoomFoundry
 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:]
コード例 #19
0
ファイル: users.py プロジェクト: ZoomFoundry/ZoomFoundry
def link_to_user(username):
    return link_to(username, '/admin/users/{}'.format(key_for(username)))