Example #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]
Example #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
Example #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)
Example #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)
Example #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]
Example #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], ], ], ])
Example #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
Example #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
Example #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)], ]]
Example #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
Example #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]
Example #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]
Example #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
Example #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_)]
Example #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
Example #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
Example #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
Example #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
Example #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
Example #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]
Example #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]
Example #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))]
Example #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]
Example #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
Example #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]
Example #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)
Example #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]
Example #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
Example #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
Example #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)
Example #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
Example #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'))]
Example #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]
Example #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]
Example #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]
Example #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]
Example #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]
Example #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]
Example #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]
        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]
Example #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]
Example #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
Example #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)
Example #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)
Example #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]
Example #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]
Example #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
Example #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])+']);')
     ]
Example #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'))]
Example #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]
Example #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)
Example #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)
Example #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>')
Example #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
Example #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
                           ]) + ']);')]
Example #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)
Example #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)
Example #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]
Example #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