Пример #1
0
class Root(rend.Page):
    addSlash = True
    docFactory = loaders.stan(
        t.html[t.head[t.title["Nested Sequence"]], t.body[t.ul(
            data=t.directive("vertexes"), render=t.directive("sequence"))[t.li(
                pattern="item"
            )[t.span(data=t.directive("name"), render=t.directive("string")),
              t.ul(data=t.directive('edges'), render=t.directive("sequence")
                   )[t.li(pattern="item", render=t.directive("string"))]]]]])

    def data_vertexes(self, ctx, data):
        return [v1, v2, v3]
Пример #2
0
 def render_pagination(self, ctx, data):
     pagin = T.ul(id='pagination')
     
     numPages = self.getNumPages()
     
     request = inevow.IRequest(ctx)
     href = str(request.URLPath())
     
     def createPageLink(pageId, pageTitle, isActive=False):
         _ = pagin[T.li(_class = 'active' if isActive else '')[
                        T.a(onclick=livepage.server.handle('page', pageId),
                            href='#')[pageTitle]]]
     
     firstPage = max(self.pageId - 1, 0)
     lastPage = min(firstPage + 3, numPages)
     
     # print 'first: %d last: %d num: %d cur: %d' % (firstPage, lastPage, numPages, self.pageId)
     
     if firstPage > 0:
         createPageLink(0, '<<')
     if self.pageId > 0:
         createPageLink(self.pageId - 1, '<')
     
     pageList = map(lambda p: (p, str(p+1)), range(firstPage, lastPage))
     
     for pageId, pageTitle in pageList:
         createPageLink(pageId, pageTitle, pageId == self.pageId)
     
     if self.pageId < (numPages - 1):
         createPageLink(self.pageId + 1, '>')
     if lastPage < numPages:
         createPageLink(numPages, '>>')
     
     return pagin
Пример #3
0
class Root(TransactionalPage):
    child_webform_css = webform.defaultCSS
    implements(IInsert)

    docFactory = loaders.stan(t.html[
        t.head[t.title['Imagination'],
               t.link(rel='stylesheet',
                      type='text/css',
                      href=url.root.child('webform_css'))],
        t.body[webform.renderForms(),
               t.ul(render=t.directive("sequence"), data=t.directive("images")
                    )[t.li(pattern="item", render=t.directive("image")),
                      t.li(pattern="empty")["No images yet"]]]])

    def data_images(self, ctx, data):
        return IImages(self.store).getImages(15)

    def render_image(self, ctx, data):
        return t.a(href=url.root.child('fs').child(data.hash))[data.title]

    def insert(self, ctx, title, author, image):
        img = Image(store=self.store,
                    image=image.value,
                    title=title.decode('utf-8'),
                    author=author.decode('utf-8'),
                    hash=label().decode('utf-8'))

    def locateChild(self, ctx, segments):
        if segments[0] == 'fs':
            data = IImages(self.store).getOne(segments[1].decode('utf-8'))
            return static.Data(data.image, 'image/jpeg'), ()
        return super(Root, self).locateChild(ctx, segments)
Пример #4
0
        class R(rend.Page):
            def data_numbers(context, data):
                return ['one', 'two', 'three']

            tags = ul(data=data_numbers, render=directive('sequence'))[li(
                pattern='item')[span(render=str)]]
            docFactory = loaders.stan(tags)
Пример #5
0
 def render_links(self, context, data):
     ds = self.root.edits(self.ob)
     therange = range(len(ds))
     rev = therange[self.rev]
     ul = tags.ul()
     for i in therange:
         li = tags.li()
         if i:
             li[tags.a(href=url.URL.fromContext(
                 context).sibling('diff').add('ob', self.ob.fullName()).add(
                     'revA', i - 1).add('revB', i))["(diff)"]]
         else:
             li["(diff)"]
         li[" - "]
         if i == len(ds) - 1:
             label = "Latest"
         else:
             label = str(i)
         if i == rev:
             li[label]
         else:
             li[tags.a(href=url.gethere.replace('rev', str(i)))[label]]
         li[' - ' + ds[i].user + '/' + ds[i].time]
         ul[li]
     return context.tag[ul]
Пример #6
0
class Page(rend.Page):
    def render_item(self, ctx, data):
        return inevow.IRenderer(data)

    docFactory = loaders.stan(
        T.html[T.body[T.ul(data=objs, render=rend.sequence)[T.li(
            pattern='item')[render_item], ], ], ])
Пример #7
0
    def create_nav_list(self,
                        ctx,
                        items,
                        uri_builder,
                        external=False,
                        disabled=False):
        tmp = inevow.IRequest(ctx).URLPath()
        tmp = tmp.clear()  # remove query parameters
        pageuri = str(tmp)

        ul = T.ul()
        for [text, urilist] in items:
            classes = []
            if disabled:
                classes.append('disabled')
                li = T.li[text]
            else:
                # first uri in list is the 'primary' URI (in menu)
                href = uri_builder(urilist[0])
                a = T.a(href=href)[text]
                if external:
                    a(target='_blank')
                li = T.li[a]
            for u in urilist:
                # any uri in the list is recognized as 'current' page
                if pageuri.endswith(u):  # XXX: could be better
                    classes.append('current')
                    break
            if len(classes) > 0:
                li(_class=' '.join(classes))
            ul[li]

        return ul
Пример #8
0
    def render_pagination(self, ctx, data):
        pagin = T.ul(id='pagination')

        numPages = self.getNumPages()

        request = inevow.IRequest(ctx)
        href = str(request.URLPath())

        def createPageLink(pageId, pageTitle, isActive=False):
            _ = pagin[T.li(_class='active' if isActive else '')[T.a(
                onclick=livepage.server.handle('page',
                                               pageId), href='#')[pageTitle]]]

        firstPage = max(self.pageId - 1, 0)
        lastPage = min(firstPage + 3, numPages)

        # print 'first: %d last: %d num: %d cur: %d' % (firstPage, lastPage, numPages, self.pageId)

        if firstPage > 0:
            createPageLink(0, '<<')
        if self.pageId > 0:
            createPageLink(self.pageId - 1, '<')

        pageList = map(lambda p: (p, str(p + 1)), range(firstPage, lastPage))

        for pageId, pageTitle in pageList:
            createPageLink(pageId, pageTitle, pageId == self.pageId)

        if self.pageId < (numPages - 1):
            createPageLink(self.pageId + 1, '>')
        if lastPage < numPages:
            createPageLink(numPages, '>>')

        return pagin
Пример #9
0
        def gotMail(mail):
            print mail
            attachments, hdrs, data = mail
            uFrom, uDate, uSubject = hdrs

            toolbar = [("/mail/Mail/##%s" % self.params[0], 'Inbox',
                        "/images/inbox.png"),
                       ("/mail/New/##%s.%s" % self.params, 'Reply',
                        "/images/inbox.png")]

            return ctx.tag[tags.div(
                id="mailViewHolder")[
                    tags.ul(
                        id="mailTools")[[
                            tags.li[tags.a(href=link)[tags.div[tags.img(
                                src=image)], name]]
                            for link, name, image in toolbar
                        ]],
                    tags.table(
                        id="mailViewHeaders"
                    )[tags.tr[tags.td["From:"],
                              tags.td[uFrom]], tags.tr[tags.td["Date:"],
                                                       tags.td[uDate]],
                      tags.tr[tags.td["Subject:"], tags.td[uSubject]],
                      tags.tr[tags.td["Attachments:"], tags.td[[[
                          tags.a(href="/mail/mdata/%s/%s" %
                                 (self.avatarId.username, v[0]))[tags.img(
                                     src="/images/attachment.png"), " ", k],
                          " (%0.2f KB)" % (v[1] / 1024.0), tags.br
                      ] for k, v in attachments.items()]]], ],
                    tags.div(id="mailViewContentBox")[tags.xml(data)], ]]
Пример #10
0
class DBBrowser(rend.Page):
    implements(IAddItem)
    addSlash = True

    def addItem(self, newSubject):
        doQuery('insert into foo values subject = "%s"', newSubject)

    def data_queryDatabase(self, context, data):
        return doQuery('select * from foo')

    def render_row(self, context, data):
        theId, theSubj = data
        return context.tag[  # put our anchor in the li provided by the template
            tags.a(href=theId)[theSubj]]

    docFactory = loaders.stan(tags.html[tags.body[
        tags.h1["Welcome, user"],
        tags.ul(data=tags.directive("queryDatabase"),
                render=tags.directive("sequence")
                )[tags.li(pattern="item", render=render_row)],
        webform.renderForms()]])

    def childFactory(self, ctx, name):
        """Since we created anchor tags linking to children of this resource
        directly by id, when the anchor is clicked, childFactory will be called
        with the appropriate id as the name argument."""
        try:
            ## Pass the id of the database item we want to be rendered on this page
            ## to the DBItem constructor. This integer will be used as the default data
            ## for this page.
            return DBItem(int(name))
        except ValueError:
            pass
Пример #11
0
    def render_lease_last_cycle_results(self, ctx, data):
        lc = self.storage.lease_checker
        h = lc.get_state()["history"]
        if not h:
            return ""
        last = h[max(h.keys())]

        start, end = last["cycle-start-finish-times"]
        ctx.tag["Last complete cycle (which took %s and finished %s ago)"
                " recovered: " % (abbreviate_time(end-start),
                                  abbreviate_time(time.time() - end)),
                self.format_recovered(last["space-recovered"], "actual")
                ]

        p = T.ul()
        def add(*pieces):
            p[T.li[pieces]]

        saw = self.format_recovered(last["space-recovered"], "examined")
        add("and saw a total of ", saw)

        if not last["expiration-enabled"]:
            rec = self.format_recovered(last["space-recovered"], "configured")
            add("but expiration was not enabled. If it had been, "
                "it would have recovered: ", rec)

        if last["corrupt-shares"]:
            add("Corrupt shares:",
                T.ul[ [T.li[ ["SI %s shnum %d" % corrupt_share
                              for corrupt_share in last["corrupt-shares"] ]
                             ]]])

        return ctx.tag[p]
Пример #12
0
 def render_links(self, context, data):
     ds = self.root.edits(self.ob)
     therange = range(len(ds))
     rev = therange[self.rev]
     ul = tags.ul()
     for i in therange:
         li = tags.li()
         if i:
             li[tags.a(href=url.URL.fromContext(context).sibling(
                 'diff').add(
                 'ob', self.ob.fullName()).add(
                 'revA', i-1).add(
                 'revB', i))["(diff)"]]
         else:
             li["(diff)"]
         li[" - "]
         if i == len(ds) - 1:
             label = "Latest"
         else:
             label = str(i)
         if i == rev:
             li[label]
         else:
             li[tags.a(href=url.gethere.replace('rev', str(i)))[label]]
         li[' - ' + ds[i].user + '/' + ds[i].time]
         ul[li]
     return context.tag[ul]
Пример #13
0
    def create_nav_list(self, ctx, items, uri_builder, external=False, disabled=False):
        tmp = inevow.IRequest(ctx).URLPath()
        tmp = tmp.clear()  # remove query parameters
        pageuri = str(tmp)

        ul = T.ul()
        for [text, urilist] in items:
            classes = []
            if disabled:
                classes.append('disabled')
                li = T.li[text]
            else:
                # first uri in list is the 'primary' URI (in menu)
                href = uri_builder(urilist[0])
                a = T.a(href=href)[text]
                if external:
                    a(target='_blank')
                li = T.li[a]
            for u in urilist:
                # any uri in the list is recognized as 'current' page
                if pageuri.endswith(u):  # XXX: could be better
                    classes.append('current')
                    break
            if len(classes) > 0:
                li(_class=' '.join(classes))
            ul[li]

        return ul
Пример #14
0
    def render_menu(self, context, items, class_='menu'):
        def _menu(items, class_):
            for item in items:
                yield T.li(class_=class_)[T.a(href=item.get_url(),
                                              class_=class_)[item.title]]

        return T.ul(class_=class_)[_menu(items, class_)]
Пример #15
0
def render(ctx, data):

    def render_children(ctx, data):
        yield [T.invisible(data=child, render=render_node) for child in data ]        

    def render_node(ctx, data):
        tag = T.li[item()]
        children = INode(data).children
        if children:
            tag[T.ul[render_children(ctx, children)]]
        return tag
            
    item = inevow.IQ(ctx).patternGenerator('item')
    try:
        itemdisabled = inevow.IQ(ctx).patternGenerator('itemdisabled')
    except stan.NodeNotFound:
        itemdisabled = item
        
    tag = T.ul()
    if isinstance(data, (tuple,list)):
        tag = tag[render_children]
    else:
        tag = tag[render_node]
        
    return tag
Пример #16
0
 def _render(sharemap):
     if sharemap is None:
         return "None"
     l = T.ul()
     for shnum, servers in sorted(sharemap.items()):
         server_names = ', '.join([s.get_name() for s in servers])
         l[T.li["%d -> placed on [%s]" % (shnum, server_names)]]
     return l
Пример #17
0
 def _render(sharemap):
     if sharemap is None:
         return "None"
     l = T.ul()
     for shnum, peerids in sorted(sharemap.items()):
         peerids = ', '.join([idlib.shortnodeid_b2a(i) for i in peerids])
         l[T.li["%d -> placed on [%s]" % (shnum, peerids)]]
     return l
Пример #18
0
 def _render(sharemap):
     if sharemap is None:
         return "None"
     l = T.ul()
     for shnum, servers in sorted(sharemap.items()):
         server_names = ', '.join([s.get_name() for s in servers])
         l[T.li["%d -> placed on [%s]" % (shnum, server_names)]]
     return l
Пример #19
0
 def render_images(self, ctx, data):
     """Render a list of images.
     """
     tag = T.div(data=images, render=rend.sequence)[T.div(pattern='item')[
         T.p(data=T.directive('filename'), render=T.directive('data')),
         T.ul(data=T.directive('comments'), render=rend.sequence)[
             T.li(pattern='item', render=T.directive('data')), ], ], ]
     return tag
Пример #20
0
 def _got(server_problems):
     if not server_problems:
         return ""
     l = T.ul()
     for peerid in sorted(server_problems.keys()):
         peerid_s = idlib.shortnodeid_b2a(peerid)
         l[T.li["[%s]: %s" % (peerid_s, server_problems[peerid])]]
     return T.li["Server Problems:", l]
Пример #21
0
 def _got(server_problems):
     if not server_problems:
         return ""
     l = T.ul()
     for peerid in sorted(server_problems.keys()):
         peerid_s = idlib.shortnodeid_b2a(peerid)
         l[T.li["[%s]: %s" % (peerid_s, server_problems[peerid])]]
     return T.li["Server Problems:", l]
Пример #22
0
class Root(rend.Page):
    implements(ITodo)
    
    child_css = webform.defaultCSS
    
    docFactory = loaders.stan(
        t.html(render=t.directive("time"))[
            t.head[
                t.title['todo'],
                t.style(type="text/css")[".done { color: #dddddd; }"],
                t.style(type="text/css")["@import url(/css);"]
                ],
            t.body[
                webform.renderForms(),
                t.ul(data=t.directive("findAll"),
                     render=t.directive("sequence"))[
                         t.li(pattern="item",render=t.directive('todo')),
                         t.li(pattern="empty",render=t.directive('empty')),
                ],
                t.p(render=t.directive("end"))
            ]
        ]
    )
    
    def insert(self, ctx, description):
        return itodo.ITodos(ctx).add(description, 0)
    
    def delete(self, ctx, id):
        return itodo.ITodos(ctx).delete(id)

    def update(self, ctx, id, oldstate):
        newstate = [1, 0][oldstate]
        return itodo.ITodos(ctx).update(id, newstate)
        
    def data_findAll(self, ctx, data):
        return itodo.ITodos(ctx).findAll()

    def render_todo(self, ctx, data):
        deluri = "freeform_post!!delete?id="+str(data[0])
        updateuri = "freeform_post!!update?id="+str(data[0])+"&oldstate="+str(data[2])
        state = [" Done", " To Do"][int(data[2])==0]
        tag = ctx.tag
        if data[2]:
            tag = ctx.tag(_class="done")
        return tag[data[1]+" - ",
                   t.a(href=deluri)["Delete"], " / ",
                   t.a(href=updateuri)[("Mark Done", "Mark Undone")[data[2]]],
                   state]

    def render_empty(self, ctx, data):
        return ctx.tag["No Todos"]
    
    def render_time(self, ctx, data):
        ctx.remember(now(), itodo.ITimer)
        return ctx.tag
        
    def render_end(self, ctx, data):
        return ctx.tag["%.3f"%(now()-itodo.ITimer(ctx))]
Пример #23
0
 def _render(per_server):
     if per_server is None:
         return ""
     l = T.ul()
     for peerid in sorted(per_server.keys()):
         peerid_s = idlib.shortnodeid_b2a(peerid)
         times_s = ", ".join([self.render_time(None, t) for t in per_server[peerid]])
         l[T.li["[%s]: %s" % (peerid_s, times_s)]]
     return T.li["Per-Server Segment Fetch Response Times: ", l]
Пример #24
0
 def _render(servermap):
     if servermap is None:
         return "None"
     l = T.ul()
     for peerid in sorted(servermap.keys()):
         peerid_s = idlib.shortnodeid_b2a(peerid)
         shares_s = ",".join(["#%d" % shnum for shnum in servermap[peerid]])
         l[T.li["[%s] got share%s: %s" % (peerid_s, plural(servermap[peerid]), shares_s)]]
     return l
Пример #25
0
 def render_sharemap(self, ctx, data):
     servermap = data.get_servermap()
     if servermap is None:
         return ctx.tag["None"]
     l = T.ul()
     sharemap = servermap.make_sharemap()
     for shnum in sorted(sharemap.keys()):
         l[T.li["%d -> Placed on " % shnum, ", ".join(["[%s]" % server.get_name() for server in sharemap[shnum]])]]
     return ctx.tag["Sharemap:", l]
Пример #26
0
def entrySerializer(original, context):
    ul = tags.ul()
    for a,l in original.items():
        if len(l)==0:
            ul[tags.li[a, ': none']]
        elif len(l)==1:
            for attr in l:
                first = attr
                break
            ul[tags.li[a, ': ', first]]
        else:
            li=tags.li[a, ':']
            ul[li]
            liul=tags.ul()
            li[liul]
            for i in l:
                liul[tags.li[i]]
    return flat.serialize(ul, context)
Пример #27
0
 def render_problems(self, ctx, data):
     problems = data.problems
     if not problems:
         return ""
     l = T.ul()
     for peerid in sorted(problems.keys()):
         peerid_s = idlib.shortnodeid_b2a(peerid)
         l[T.li["[%s]: %s" % (peerid_s, problems[peerid])]]
     return ctx.tag["Server Problems:", l]
Пример #28
0
 def _render(sharemap):
     if sharemap is None:
         return "None"
     l = T.ul()
     for shnum, peerids in sorted(sharemap.items()):
         peerids = ', '.join(
             [idlib.shortnodeid_b2a(i) for i in peerids])
         l[T.li["%d -> placed on [%s]" % (shnum, peerids)]]
     return l
Пример #29
0
 def _render(servermap):
     if servermap is None:
         return "None"
     l = T.ul()
     for server, shnums in sorted(servermap.items()):
         shares_s = ",".join(["#%d" % shnum for shnum in shnums])
         l[T.li["[%s] got share%s: %s" %
                (server.get_name(), plural(shnums), shares_s)]]
     return l
Пример #30
0
def entrySerializer(original, context):
    ul = tags.ul()
    for a, l in original.items():
        if len(l) == 0:
            ul[tags.li[a, ': none']]
        elif len(l) == 1:
            for attr in l:
                first = attr
                break
            ul[tags.li[a, ': ', first]]
        else:
            li = tags.li[a, ':']
            ul[li]
            liul = tags.ul()
            li[liul]
            for i in l:
                liul[tags.li[i]]
    return flat.serialize(ul, context)
Пример #31
0
 def _render(servermap):
     if servermap is None:
         return "None"
     l = T.ul()
     for server, shnums in sorted(servermap.items()):
         shares_s = ",".join(["#%d" % shnum for shnum in shnums])
         l[T.li["[%s] got share%s: %s" % (server.get_name(),
                                          plural(shnums), shares_s)]]
     return l
Пример #32
0
    def render_content(self, ctx, data):
        toolbar = [("#", 'Send', "/images/inbox.png", "sendBtn")]

        return ctx.tag[tags.ul(id="mailTools")[[
            tags.li[tags.a(id=id, href=link)[tags.div[tags.img(src=image)],
                                             name]]
            for link, name, image, id in toolbar
        ]],
                       tags.invisible(render=tags.directive('thisFragment'))]
Пример #33
0
 def render_problems(self, ctx, data):
     problems = data.problems
     if not problems:
         return ""
     l = T.ul()
     for peerid in sorted(problems.keys()):
         peerid_s = idlib.shortnodeid_b2a(peerid)
         l[T.li["[%s]: %s" % (peerid_s, problems[peerid])]]
     return ctx.tag["Server Problems:", l]
Пример #34
0
    def render_lease_current_cycle_results(self, ctx, data):
        lc = self.storage.lease_checker
        p = lc.get_progress()
        if not p["cycle-in-progress"]:
            return ""
        s = lc.get_state()
        so_far = s["cycle-to-date"]
        sr = so_far["space-recovered"]
        er = s["estimated-remaining-cycle"]
        esr = er["space-recovered"]
        ec = s["estimated-current-cycle"]
        ecr = ec["space-recovered"]

        p = T.ul()
        def add(*pieces):
            p[T.li[pieces]]

        def maybe(d):
            if d is None:
                return "?"
            return "%d" % d
        add("So far, this cycle has examined %d shares in %d buckets"
            % (sr["examined-shares"], sr["examined-buckets"]),
            " (%d mutable / %d immutable)"
            % (sr["examined-buckets-mutable"], sr["examined-buckets-immutable"]),
            " (%s / %s)" % (abbreviate_space(sr["examined-diskbytes-mutable"]),
                            abbreviate_space(sr["examined-diskbytes-immutable"])),
            )
        add("and has recovered: ", self.format_recovered(sr, "actual"))
        if so_far["expiration-enabled"]:
            add("The remainder of this cycle is expected to recover: ",
                self.format_recovered(esr, "actual"))
            add("The whole cycle is expected to examine %s shares in %s buckets"
                % (maybe(ecr["examined-shares"]), maybe(ecr["examined-buckets"])))
            add("and to recover: ", self.format_recovered(ecr, "actual"))

        else:
            add("If expiration were enabled, we would have recovered: ",
                self.format_recovered(sr, "configured"), " by now")
            add("and the remainder of this cycle would probably recover: ",
                self.format_recovered(esr, "configured"))
            add("and the whole cycle would probably recover: ",
                self.format_recovered(ecr, "configured"))

        add("if we were strictly using each lease's default 31-day lease lifetime "
            "(instead of our configured behavior), "
            "this cycle would be expected to recover: ",
            self.format_recovered(ecr, "original"))

        if so_far["corrupt-shares"]:
            add("Corrupt shares:",
                T.ul[ [T.li[ ["SI %s shnum %d" % corrupt_share
                              for corrupt_share in so_far["corrupt-shares"] ]
                             ]]])

        return ctx.tag["Current cycle:", p]
Пример #35
0
 def render_server_timings(self, ctx, data):
     per_server = self.publish_status.timings.get("send_per_server")
     if not per_server:
         return ""
     l = T.ul()
     for server in sorted(per_server.keys(), key=lambda s: s.get_name()):
         times_s = ", ".join(
             [self.render_time(None, t) for t in per_server[server]])
         l[T.li["[%s]: %s" % (server.get_name(), times_s)]]
     return T.li["Per-Server Response Times: ", l]
Пример #36
0
 def render_server_timings(self, ctx, data):
     per_server = self.publish_status.timings.get("send_per_server")
     if not per_server:
         return ""
     l = T.ul()
     for server in sorted(per_server.keys(), key=lambda s: s.get_name()):
         times_s = ", ".join([self.render_time(None, t)
                              for t in per_server[server]])
         l[T.li["[%s]: %s" % (server.get_name(), times_s)]]
     return T.li["Per-Server Response Times: ", l]
Пример #37
0
 def render_server_timings(self, ctx, data):
     per_server = self.publish_status.timings.get("send_per_server")
     if not per_server:
         return ""
     l = T.ul()
     for peerid in sorted(per_server.keys()):
         peerid_s = idlib.shortnodeid_b2a(peerid)
         times_s = ", ".join([self.render_time(None, t) for t in per_server[peerid]])
         l[T.li["[%s]: %s" % (peerid_s, times_s)]]
     return T.li["Per-Server Response Times: ", l]
Пример #38
0
 def _render(per_server):
     if per_server is None:
         return ""
     l = T.ul()
     for peerid in sorted(per_server.keys()):
         peerid_s = idlib.shortnodeid_b2a(peerid)
         times_s = ", ".join(
             [self.render_time(None, t) for t in per_server[peerid]])
         l[T.li["[%s]: %s" % (peerid_s, times_s)]]
     return T.li["Per-Server Segment Fetch Response Times: ", l]
Пример #39
0
 def render_sharemap(self, ctx, data):
     servermap = data.get_servermap()
     if servermap is None:
         return ctx.tag["None"]
     l = T.ul()
     sharemap = servermap.make_sharemap()
     for shnum in sorted(sharemap.keys()):
         l[T.li["%d -> Placed on " % shnum, ", ".join(
             ["[%s]" % server.get_name() for server in sharemap[shnum]])]]
     return ctx.tag["Sharemap:", l]
Пример #40
0
        def _render(self, ctx, key, args, errors, value, tag):
            def data_facets(ctx, data):

                storeSession = util.getStoreSession(ctx)
                avatar = util.getAvatar(ctx)

                @defer.deferredGenerator
                def loadCategories(facets):
                    d = defer.waitForDeferred(avatar.getCategoryManager(storeSession))
                    yield d
                    categories = d.getResult()
                    rv = []
                    for f in facets:
                        facetData = FacetData()
                        facetData.label = f[2]
                        facetData.textid = f[1]
                        rv.append(facetData)
                        d = defer.waitForDeferred(categories.loadCategories(facetData.textid))
                        yield d
                        facetData.tree = d.getResult().children
                    yield rv

                d = avatar.getCategoryManager(storeSession)
                d.addCallback(lambda categories: categories.loadFacets())
                d.addCallback(loadCategories)
                return d

            def render_facet(ctx, data):
                tag = ctx.tag
                tag.fillSlots("facetlabel", data.label)
                return tag

            def render_node(ctx, data):
                tag = ctx.tag
                tag.fillSlots("value", data.path)
                tag.fillSlots("label", data.label)
                if data.path in value:
                    tag.children[0] = tag.children[0](checked="checked")
                else:
                    tag.children[0](checked=None)
                return tag

            template = T.div(class_="categorieswidget")[
                T.p(class_="opener")["click to open/close"],
                T.ul(class_="panel", data=data_facets, render=rend.sequence)[
                    T.li(pattern="item", render=render_facet)[
                        T.slot("facetlabel"),
                        T.div(data=T.directive("tree"), render=tree.render)[
                            T.invisible(pattern="item", render=render_node)[tag, T.slot("label")]
                        ],
                    ]
                ],
            ]

            return T.invisible()[template]
Пример #41
0
 def render_problems(self, ctx, data):
     problems = data.get_problems()
     if not problems:
         return ""
     l = T.ul()
     # XXX: is this exercised? I don't think PublishStatus.problems is
     # ever populated
     for peerid in sorted(problems.keys()):
         peerid_s = idlib.shortnodeid_b2a(peerid)
         l[T.li["[%s]: %s" % (peerid_s, problems[peerid])]]
     return ctx.tag["Server Problems:", l]
Пример #42
0
 def _render(servermap):
     if servermap is None:
         return "None"
     l = T.ul()
     for peerid in sorted(servermap.keys()):
         peerid_s = idlib.shortnodeid_b2a(peerid)
         shares_s = ",".join(
             ["#%d" % shnum for shnum in servermap[peerid]])
         l[T.li["[%s] has share%s: %s" %
                (peerid_s, plural(servermap[peerid]), shares_s)]]
     return l
Пример #43
0
	def data_identities(self, ctx, data):
		"""
		Template function to display a list of user identities.
		"""
		result = yield self.user.getIdentities()
		output = [tags.h3()['identities'],
			tags.ul(_class="url-list")[[
				tags.li()[item['url']] for item in result
			]]
		]
		returnValue(output)
Пример #44
0
	def data_trusted_roots(self, ctx, data):
		"""
		Template function to display a list of user roots.
		"""
		result = yield self.user.getTrustedRoots()
		output = [tags.h3()['trusted roots'],
			tags.ul(_class="url-list")[[
				tags.li()[item['url']] for item in result
			]]
		]
		returnValue(output)
Пример #45
0
 def render_server_timings(self, ctx, data):
     per_server = self.publish_status.timings.get("send_per_server")
     if not per_server:
         return ""
     l = T.ul()
     for peerid in sorted(per_server.keys()):
         peerid_s = idlib.shortnodeid_b2a(peerid)
         times_s = ", ".join(
             [self.render_time(None, t) for t in per_server[peerid]])
         l[T.li["[%s]: %s" % (peerid_s, times_s)]]
     return T.li["Per-Server Response Times: ", l]
Пример #46
0
 def render_problems(self, ctx, data):
     problems = data.get_problems()
     if not problems:
         return ""
     l = T.ul()
     # XXX: is this exercised? I don't think PublishStatus.problems is
     # ever populated
     for peerid in sorted(problems.keys()):
         peerid_s = idlib.shortnodeid_b2a(peerid)
         l[T.li["[%s]: %s" % (peerid_s, problems[peerid])]]
     return ctx.tag["Server Problems:", l]
Пример #47
0
 def render_images(self, ctx, data):
     """Render a list of images.
     """
     tag = T.div(data=images, render=rend.sequence)[
         T.div(pattern='item')[
             T.p(data=T.directive('filename'), render=T.directive('data')),
             T.ul(data=T.directive('comments'), render=rend.sequence)[
                 T.li(pattern='item', render=T.directive('data')),
                 ],
             ],
         ]
     return tag
Пример #48
0
 def tabbedPane(self, ctx, data):
     tab_names = [element[0] for element in data]
     
     return t.invisible[
     t.div(class_='tabbedPane')[
         t.ul(class_='tabs')[
             [t.li(id_="tab-"+name.replace(' ', '_'))[name] for name in tab_names]
         ],
         [t.div(id_="page-"+name.replace(' ', '_'))[fragment] for name, fragment in data]
     ],
     t.inlineJS('setupTabbedPane(['+','.join([le.flt(le.js['tab-'+name.replace(' ', '_'),'page-'+name.replace(' ', '_')], quote=False) for name, junk in data])+']);')
     ]
Пример #49
0
    def render_content(self, ctx, data):
        toolbar = [
            ("/mail/New/", 'New', "/images/inbox.png", "newmail"),
            ("#", 'Delete', "/images/inbox.png", "deletesel"),
        ]

        return ctx.tag[tags.ul(id="mailTools")[[
            tags.li(id=id)[tags.a(href=link)[tags.div[tags.img(src=image)],
                                             name]]
            for link, name, image, id in toolbar
        ]],
                       tags.invisible(render=tags.directive('thisFragment'))]
Пример #50
0
def moduleSummary(modorpack):
    r = tags.li[taglink(modorpack), ' - ', epydoc2stan.doc2html(modorpack, summary=True)[0]]
    if not isinstance(modorpack, model.Package):
        return r
    contents = [m for m in modorpack.orderedcontents
                if m.isVisible and m.name != '__init__']
    if not contents:
        return r
    ul = tags.ul()
    for m in sorted(contents, key=lambda m:m.fullName()):
        ul[moduleSummary(m)]
    return r[ul]
Пример #51
0
    def workloadType(self, ctx, wltypeName):
        session = inevow.ISession(ctx)
        if self.workloadTypes is None:
            self.workloadTypes = yield session.agent.expsvcAgent.getWorkloadTypes(
                agentId=self.agentId)

        wltype = self.workloadTypes[wltypeName]

        wlcDescriptions = [T.li[wlclasses[wlc][1]] for wlc in wltype.wlclass]

        ctx.fillSlots('name', wltypeName)
        ctx.fillSlots('module', wltype.module)
        ctx.fillSlots('path', wltype.path)
        ctx.fillSlots('classes', T.ul()[wlcDescriptions])

        self.data_workloadParams = []

        for paramName, param in wltype.params.iteritems():
            if param.flags & TSWLParamCommon.WLPF_OPTIONAL:
                paramName = T.span[paramName, T.sup['OPT']]

            wlpType = WLParamHelper.getTypeName(param)

            minVal, maxVal = WLParamHelper.getIntegerRange(param)
            lenVal = WLParamHelper.getStringLength(param)
            range = 'None'

            if minVal is not None and maxVal is not None:
                range = '[%s...%s]' % (_wlparamToStr(
                    minVal, param), _wlparamToStr(maxVal, param))
            elif lenVal is not None:
                range = 'len: %s' % lenVal

            default = WLParamHelper.getDefaultValue(param)
            if default is not None:
                default = _wlparamToStr(default, param)
            else:
                default = 'None'

            self.data_workloadParams.append({
                'param': paramName,
                'type': wlpType,
                'range': range,
                'default': default,
                'description': param.description
            })

        wltparams = loaders.xmlfile(webappPath('agent/wltypeparam.html'))

        returnValue(wltparams)
Пример #52
0
 def workloadType(self, ctx, wltypeName):
     session = inevow.ISession(ctx) 
     if self.workloadTypes is None:
         self.workloadTypes = yield session.agent.expsvcAgent.getWorkloadTypes(agentId = self.agentId)
     
     wltype = self.workloadTypes[wltypeName]
     
     wlcDescriptions = [T.li[wlclasses[wlc][1]]
                        for wlc 
                        in wltype.wlclass]
     
     ctx.fillSlots('name', wltypeName)
     ctx.fillSlots('module', wltype.module)
     ctx.fillSlots('path', wltype.path)
     ctx.fillSlots('classes', T.ul()[wlcDescriptions])
     
     self.data_workloadParams = []
     
     for paramName, param in wltype.params.iteritems():
                 if param.flags & TSWLParamCommon.WLPF_OPTIONAL:
                     paramName = T.span[paramName,
                                        T.sup['OPT']]
                 
                 wlpType = WLParamHelper.getTypeName(param)
                 
                 minVal, maxVal = WLParamHelper.getIntegerRange(param)
                 lenVal = WLParamHelper.getStringLength(param)
                 range = 'None'
                 
                 if minVal is not None and maxVal is not None:
                     range = '[%s...%s]' % (_wlparamToStr(minVal, param), 
                                            _wlparamToStr(maxVal, param))
                 elif lenVal is not None:
                     range = 'len: %s' % lenVal
                 
                 default = WLParamHelper.getDefaultValue(param)
                 if default is not None:
                     default = _wlparamToStr(default, param)
                 else:
                     default = 'None'
                 
                 self.data_workloadParams.append({'param': paramName, 
                                                  'type': wlpType, 
                                                  'range': range, 
                                                  'default': default, 
                                                  'description': param.description})
     
     wltparams = loaders.xmlfile(webappPath('agent/wltypeparam.html'))
     
     returnValue(wltparams)
Пример #53
0
    def test_stanPrecompiled(self):
        """
        Test that a stan loader works with precompiled documents.

        (This behavior will probably be deprecated soon, but we need to test
        that it works right until we remove it.)
        """
        doc = flat.precompile(t.ul(id='nav')[t.li['one'], t.li['two'], t.slot('three')])
        df = loaders.stan(doc)
        loaded = df.load()
        self.assertEqual(loaded[0], '<ul id="nav"><li>one</li><li>two</li>')
        self.failUnless(isinstance(loaded[1], _PrecompiledSlot))
        self.assertEqual(loaded[1].name, 'three')
        self.assertEqual(loaded[2], '</ul>')
Пример #54
0
 def stuff(self, request, tag):
     t = tag
     anchors = set()
     for b, o in findRootClasses(self.system):
         if isinstance(o, model.Class):
             t[subclassesFrom(self.system, o, anchors)]
         else:
             item = tags.li[b]
             if o:
                 ul = tags.ul()
                 for sc in sorted(o, key=_lckey):
                     ul[subclassesFrom(self.system, sc, anchors)]
                 item[ul]
             t[item]
     return t
Пример #55
0
    def tabbedPane(self, ctx, data):
        tab_names = [element[0] for element in data]

        return t.invisible[t.div(class_='tabbedPane')[t.ul(class_='tabs')[[
            t.li(id_="tab-" + name.replace(' ', '_'))[name]
            for name in tab_names
        ]], [
            t.div(id_="page-" + name.replace(' ', '_'))[fragment]
            for name, fragment in data
        ]],
                           t.inlineJS('setupTabbedPane([' + ','.join([
                               le.flt(le.js['tab-' + name.replace(' ', '_'),
                                            'page-' + name.replace(' ', '_')],
                                      quote=False) for name, junk in data
                           ]) + ']);')]
Пример #56
0
	def data_trusted_roots(self, ctx, data):
		"""
		Template function to display a checkbox list of user roots.
		"""
		result = yield self.user.getTrustedRoots()
		output = [tags.h3()['trusted roots'],
			tags.ul(_class="url-list")[[
				tags.li()[[
					tags.input(type='checkbox', name='root-%s' % item['id'], value='1'),
					item['url'],
				]]
				for item in result
			]]
		]
		returnValue(output)
Пример #57
0
	def data_identities(self, ctx, data):
		"""
		Template function to display a checkbox list of user identities.
		"""
		result = yield self.user.getIdentities()
		output = [tags.h3()['identities'],
			tags.ul(_class="url-list")[[
				tags.li()[[
					tags.input(type='checkbox', name='identity-%s' % item['id'], value='1'),
					item['url'],
				]]
				for item in result
			]]
		]
		returnValue(output)
Пример #58
0
    def render_magic_folder_row(self, ctx, data):
        magic_folder = self.client._magic_folders[data]
        (ok, messages) = magic_folder.get_public_status()
        ctx.fillSlots("magic_folder_name", data)
        if ok:
            ctx.fillSlots("magic_folder_status", "yes")
            ctx.fillSlots("magic_folder_status_alt", "working")
        else:
            ctx.fillSlots("magic_folder_status", "no")
            ctx.fillSlots("magic_folder_status_alt", "not working")

        status = T.ul(class_="magic-folder-status")
        for msg in messages:
            status[T.li[str(msg)]]
        return ctx.tag[status]
Пример #59
0
 def stuff(self, request, tag):
     t = tag
     anchors = set()
     for b, o in findRootClasses(self.system):
         if isinstance(o, model.Class):
             t[subclassesFrom(self.system, o, anchors)]
         else:
             item = tags.li[b]
             if o:
                 ul = tags.ul()
                 for sc in sorted(o, key=_lckey):
                     ul[subclassesFrom(self.system, sc, anchors)]
                 item[ul]
             t[item]
     return t