Ejemplo n.º 1
0
class Uploader(formrender.Form):
	"""A renderer allowing for updates to individual records using file upload.

	This renderer exposes a form with a file widget.	It is likely that
	the interface will change.
	"""

	name = "upload"

	def render_uploadInfo(self, ctx, data):
		if data is None:
			return T.invisible()
		else:
			for key, val in data.original.getPrimaryTable().rows[0].iteritems():
				ctx.tag.fillSlots(key, str(val))
			return ctx.tag

	docFactory = loaders.stan(T.html[
		T.head[
			T.title["Upload"],
			T.invisible(render=T.directive("commonhead")),
		],
		T.body(render=T.directive("withsidebar"))[
			T.h1(render=T.directive("meta"))["title"],
			T.p(class_="procMessage", data=T.directive("result"), 
					render=T.directive("uploadInfo"))[
				T.slot(name="nAffected"),
				" record(s) modified."
			],
			T.invisible(render=T.directive("form genForm"))
		]
	])
Ejemplo n.º 2
0
class Index(rend.Page):

    addSlash = True

    def __init__(self, name='main'):
        rend.Page.__init__(self)
        self.name = name

    def render_name(self, ctx, data):
        return self.name

    def render_links(self, ctx, data):
        inner = [T.li[T.a(href=url.here.child(x))[x]] for x in ['a', 'b', 'c']]
        return T.ul[inner]

    def childFactory(self, ctx, name):
        return Index(self.name+'/'+name)

    docFactory = loaders.stan(
        T.html[
            T.head[T.title['Nevow wsgi Test cgi app']],
            T.body[
                T.h1(render=T.directive('name')),
                T.invisible(render=T.directive('links'))
            ]
        ]
    )
Ejemplo n.º 3
0
 def render_content(self, ctx, data):
     if self.db[0] == "FIRSTRUN":
         return ctx.tag[tags.table(
             height="100%", width="100%"
         )[tags.tr(height="100%")[tags.td[tags.div(
             id="centerBox", valign="middle"
         )[tags.div(id="blockTop")
           [""],
           tags
           .div(id="centerBlock")[tags.h1(
               style="color:#fff;font-family:arial;"
           )["TUMS Installation Wizard"]],
           tags
           .div(id="menuBlock")[tags.div(
               style=
               "margin-top:-5em; text-align:left; font-family:arial; color:#786D38;"
           )[tags.h3["Welcome to the TUMS installation wizard."],
             """This wizard will guide you through an initial configuration of the host system.
                                     This should be carried out by a Thusa employee. If your server has arrived unconfigured it
                                     is recommended that you contact Thusa support for this to be carried out. 
                                     """, tags.br,
             """Click the NEXT button bellow to continue with the installation""",
             tags.br, tags.br,
             tags.a(href="Wizard/1/")[tags.img(
                 src='/images/next.png')]]]]]]]]
     return ctx.tag[tags.a(href="/auth/")["Login"]]
Ejemplo n.º 4
0
class FormExamplePage(formal.ResourceMixin, rend.Page):
    """
    A base page for the actual examples. The page renders something sensible,
    including the title example and description. It also include the "example"
    form in an appropriate place.
    
    Each example page is expected to provide the title and description
    attributes as well as a form_example method that builds and returns a
    formal.Form instance.
    """
    docFactory = loaders.stan(
        T.invisible[DOCTYPE, T.html[
            T.head[CHARSET,
                   T.title(data=T.directive('title'), render=rend.data),
                   T.link(rel='stylesheet',
                          type='text/css',
                          href=url.root.child('examples.css')),
                   T.link(rel='stylesheet',
                          type='text/css',
                          href=url.root.child('formal.css')),
                   T.script(type='text/javascript', src='js/formal.js'), ],
            T.body[T.h1(data=T.directive('title'), render=rend.data),
                   T.p(data=T.directive('description'), render=rend.data),
                   T.directive('form example'), ], ], ], )

    def data_title(self, ctx, data):
        return self.title

    def data_description(self, ctx, data):
        return self.description
Ejemplo n.º 5
0
    def render_middle(self, context, data):
        yield T.div(render=T.directive('trail'), data=data.get_ancestry())
        yield T.h1(class_='main-heading')[data.title]

        yield T.div(render=T.directive('items'), data=data.get_subdirs())

        yield T.div(render=T.directive('rst'))

        yield T.div(render=T.directive('items'), data=data.get_items())
Ejemplo n.º 6
0
    def render_middle(self, context, data):
        yield T.div(render=T.directive('trail'), data=data.get_ancestry())
        yield T.h1(class_='main-heading')[data.title]

        yield T.div(render=T.directive('items'), data=data.get_subdirs())

        yield T.div(render=T.directive('rst'))      

        yield T.div(render=T.directive('items'), data=data.get_items())
Ejemplo n.º 7
0
 def render_pageLabel(self, ctx, data):
     labels = {
         1: "Server Identification",
         2: "Network configuration - Initial Layout",
         3: "Network configuration - LAN Details",
         4: "Network configuration - ADSL Details",
         5: "Network configuration - WAN Details",
         6: "Firewall configuration",
         7: "Samba configuration",
         8: "Mail configuration",
         9: "Congratulations"
     }
     try:
         return ctx.tag[tags.h1(
             style="color:#fff;font-family:arial;")[labels[self.id]]]
     except:
         return ctx.tag[tags.h1(
             style="color:#fff;font-family:arial;")["No Title"]]
Ejemplo n.º 8
0
 def getTemplate(self, resultFormat):
     if resultFormat in self.service.templates:
         return self.service.getTemplate(resultFormat)
     return common.doctypedStan(T.html[
         T.head(render=T.directive("commonhead"))[T.title(
             render=T.directive("meta"))['title'], ],
         T.body(render=T.directive("withsidebar"))[
             T.h1(render=T.directive("meta"))['title'],
             T.div(class_="result", data=T.directive("result"))[T.invisible(
                 render=T.directive(resultFormat))]]])
Ejemplo n.º 9
0
class HistoryPage(rend.Page):
    def __init__(self, root, ob, rev):
        self.root = root
        self.ob = ob
        self.rev = rev

    def render_title(self, context, data):
        return context.tag[u"History of \N{LEFT DOUBLE QUOTATION MARK}" +
                           self.ob.fullName() +
                           u"\N{RIGHT DOUBLE QUOTATION MARK}s docstring"]

    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]

    def render_docstring(self, context, data):
        docstring = self.root.editsbyob[self.ob][self.rev].newDocstring
        if docstring is None:
            docstring = ''
        return epydoc2stan.doc2html(self.ob, docstring=docstring)[0]

    def render_linkback(self, context, data):
        return util.taglink(self.ob, label="Back")

    docFactory = loaders.stan(
        tags.html[tags.head[
            tags.title(render=tags.directive('title')),
            tags.link(rel="stylesheet", type="text/css", href='apidocs.css')],
                  tags.body[tags.h1(render=tags.directive('title')),
                            tags.p(render=tags.directive('links')),
                            tags.div(render=tags.directive('docstring')),
                            tags.p(render=tags.directive('linkback'))]])
Ejemplo n.º 10
0
class VirtualHostList(rend.Page):
    def __init__(self, nvh):
        rend.Page.__init__(self)
        self.nvh = nvh

    stylesheet = """
    body { border: 0; padding: 0; margin: 0; background-color: #efefef; }
    h1 {padding: 0.1em; background-color: #777; color: white; border-bottom: thin white dashed;}
"""

    def getStyleSheet(self):
        return self.stylesheet

    def data_hostlist(self, context, data):
        return self.nvh.hosts.keys()

    def render_hostlist(self, context, data):
        host = data
        req = context.locate(inevow.IRequest)
        proto = req.clientproto.split('/')[0].lower()
        port = req.getHeader('host').split(':')[1]

        link = "%s://%s" % (proto, host)

        if port != 80:
            link += ":%s" % port

        link += req.path

        return context.tag[tags.a(href=link)[host]]

    def render_title(self, context, data):
        req = context.locate(inevow.IRequest)
        proto = req.clientproto.split('/')[0].lower()
        host = req.getHeader('host')
        return context.tag["Virtual Host Listing for %s://%s" % (proto, host)]

    def render_stylesheet(self, context, data):
        return tags.style(type="text/css")[self.getStyleSheet()]

    docFactory = loaders.stan(tags.html[tags.head[
        tags.title(render=render_title),
        tags.directive('stylesheet'), ], tags.body[
            tags.h1(render=render_title),
            tags.ul(data=directive("hostlist"), render=directive("sequence")
                    )[tags.li(pattern="item", render=render_hostlist)]]])
Ejemplo n.º 11
0
    def test_authenticatedStartmenu(self):
        """
        The I{startmenu} renderer should add navigation elements to the tag it
        is passed if it is called on a L{_PublicPageMixin} being rendered for an
        authenticated user.
        """
        navigable = FakeNavigableElement(store=self.userStore)
        installOn(navigable, self.userStore)
        navigable.tabs = [Tab('foo', 123, 0, [Tab('bar', 432, 0)])]

        page = self.createPage(self.username)
        startMenuTag = div[
            h1(pattern='tab'),
            h2(pattern='subtabs')]

        ctx = context.WebContext(tag=startMenuTag)
        tag = page.render_startmenu(ctx, None)
        self.assertEqual(tag.tagName, 'div')
        self.assertEqual(tag.attributes, {})
        children = [child for child in tag.children if child.pattern is None]
        self.assertEqual(len(children), 0)
        # This structure seems overly complex.
        tabs = list(tag.slotData.pop('tabs'))
        self.assertEqual(len(tabs), 1)
        fooTab = tabs[0]
        self.assertEqual(fooTab.tagName, 'h1')
        self.assertEqual(fooTab.attributes, {})
        self.assertEqual(fooTab.children, [])
        self.assertEqual(fooTab.slotData['href'], self.privateApp.linkTo(123))
        self.assertEqual(fooTab.slotData['name'], 'foo')
        self.assertEqual(fooTab.slotData['kids'].tagName, 'h2')
        subtabs = list(fooTab.slotData['kids'].slotData['kids'])
        self.assertEqual(len(subtabs), 1)
        barTab = subtabs[0]
        self.assertEqual(barTab.tagName, 'h1')
        self.assertEqual(barTab.attributes, {})
        self.assertEqual(barTab.children, [])
        self.assertEqual(barTab.slotData['href'], self.privateApp.linkTo(432))
        self.assertEqual(barTab.slotData['name'], 'bar')
        self.assertEqual(barTab.slotData['kids'], '')
Ejemplo n.º 12
0
    def test_authenticatedStartmenu(self):
        """
        The I{startmenu} renderer should add navigation elements to the tag it
        is passed if it is called on a L{_PublicPageMixin} being rendered for an
        authenticated user.
        """
        navigable = FakeNavigableElement(store=self.userStore)
        installOn(navigable, self.userStore)
        navigable.tabs = [Tab('foo', 123, 0, [Tab('bar', 432, 0)])]

        page = self.createPage(self.username)
        startMenuTag = div[h1(pattern='tab'), h2(pattern='subtabs')]

        ctx = context.WebContext(tag=startMenuTag)
        tag = page.render_startmenu(ctx, None)
        self.assertEqual(tag.tagName, 'div')
        self.assertEqual(tag.attributes, {})
        children = [child for child in tag.children if child.pattern is None]
        self.assertEqual(len(children), 0)
        # This structure seems overly complex.
        tabs = list(tag.slotData.pop('tabs'))
        self.assertEqual(len(tabs), 1)
        fooTab = tabs[0]
        self.assertEqual(fooTab.tagName, 'h1')
        self.assertEqual(fooTab.attributes, {})
        self.assertEqual(fooTab.children, [])
        self.assertEqual(fooTab.slotData['href'], self.privateApp.linkTo(123))
        self.assertEqual(fooTab.slotData['name'], 'foo')
        self.assertEqual(fooTab.slotData['kids'].tagName, 'h2')
        subtabs = list(fooTab.slotData['kids'].slotData['kids'])
        self.assertEqual(len(subtabs), 1)
        barTab = subtabs[0]
        self.assertEqual(barTab.tagName, 'h1')
        self.assertEqual(barTab.attributes, {})
        self.assertEqual(barTab.children, [])
        self.assertEqual(barTab.slotData['href'], self.privateApp.linkTo(432))
        self.assertEqual(barTab.slotData['name'], 'bar')
        self.assertEqual(barTab.slotData['kids'], '')
Ejemplo n.º 13
0
class Mine(rend.Page):

    addSlash = True
    docFactory = loaders.stan(T.html[T.head[T.title["This is title"]], T.body[
        T.h1(id="header")["Welcome"],
        T.ol(data=directive("theList"), render=directive("sequence"))[
            T.span(pattern="header")["HEADER"],
            T.li(pattern="item")["Stuff: ",
                                 T.span(render=directive("string")), "!"],
            T.span(pattern="divider")["-----"],
            T.div(pattern="empty")["Nothing."],
            T.span(pattern="footer")["FOOTER"], ],
        T.ol(data=directive("empty"), render=directive("sequence"))[
            T.span(pattern="header")["HEADER"],
            T.li(pattern="item")["Stuff: ",
                                 T.span(render=directive("string")), "!"],
            T.span(pattern="divider")["-----"],
            T.div(pattern="empty")["Nothing."],
            T.span(pattern="footer")["FOOTER"], ],
        T.span(render=directive("foo"))[
            "This entire node, including the span tag, will be replaced by \
                    a randomly chosen node from below:",
            T.div(pattern="one", style="color: red")["one"],
            T.table(pattern="two")[T.tr[T.td["two"], T.td["two"],
                                        T.td["two"]]],
            T.ol(pattern="three")[T.li["three"], T.li["three"],
                                  T.li["three"], ]]]])

    def render_foo(self, context, data):
        return inevow.IQ(context).onePattern(
            random.choice(['one', 'two', 'three']))

    def data_theList(self, context, data):
        return [random.randint(0, 5000) for x in range(random.randint(0, 10))]

    def data_empty(self, context, data):
        return []
Ejemplo n.º 14
0
 def heading(self):
     return tags.h1(class_=self.ob.css_class)[self.mediumName(self.ob),
                                              " : ",
                                              self.ob.kind.lower(),
                                              " documentation"]
Ejemplo n.º 15
0
class DirectoryLister(rend.Page):
    def __init__(self,
                 pathname,
                 dirs=None,
                 contentTypes={},
                 contentEncodings={},
                 defaultType='text/html'):
        self.contentTypes = contentTypes
        self.contentEncodings = contentEncodings
        self.defaultType = defaultType
        # dirs allows usage of the File to specify what gets listed
        self.dirs = dirs
        self.path = pathname
        rend.Page.__init__(self)

    def data_listing(self, context, data):
        from nevow.static import getTypeAndEncoding

        if self.dirs is None:
            directory = os.listdir(self.path)
            directory.sort()
        else:
            directory = self.dirs

        files = []
        dirs = []

        for path in directory:
            url = quote(path, '/')
            if os.path.isdir(os.path.join(self.path, path)):
                url = url + '/'
                dirs.append({
                    'link': url,
                    'linktext': path + "/",
                    'type': '[Directory]',
                    'filesize': '',
                    'encoding': '',
                })
            else:
                mimetype, encoding = getTypeAndEncoding(
                    path, self.contentTypes, self.contentEncodings,
                    self.defaultType)
                try:
                    filesize = os.stat(os.path.join(self.path,
                                                    path))[stat.ST_SIZE]
                except OSError as x:
                    if x.errno != 2 and x.errno != 13:
                        raise x
                else:
                    files.append({
                        'link':
                        url,
                        'linktext':
                        path,
                        'type':
                        '[%s]' % mimetype,
                        'filesize':
                        formatFileSize(filesize),
                        'encoding': (encoding and '[%s]' % encoding or '')
                    })

        return dirs + files

    def data_header(self, context, data):
        request = context.locate(inevow.IRequest)
        return "Directory listing for %s" % unquote(request.uri)

    def render_tableLink(self, context, data):
        return tags.a(href=data['link'])[data['linktext']]

    def __repr__(self):
        return '<DirectoryLister of %r>' % self.path

    __str__ = __repr__

    docFactory = loaders.stan(tags.html[tags.head[tags.title(
        data=tags.directive('header'))[str], tags.style['''
          th, .even td, .odd td { padding-right: 0.5em; }
          .even-dir { background-color: #efe0ef }
          .even { background-color: #eee }
          .odd-dir {background-color: #f0d0ef }
          .odd { background-color: #dedede }
          .icon { text-align: center }
          .listing {
              margin-left: auto;
              margin-right: auto;
              width: 50%;
              padding: 0.1em;
              }

          body { border: 0; padding: 0; margin: 0; background-color: #efefef;}
          h1 {padding: 0.1em; background-color: #777; color: white; border-bottom: thin white dashed;}
          ''']], tags.body[tags.div(_class='directory-listing')[
            tags.h1(data=tags.directive('header'))[str],
            tags.table(render=rend.sequence, data=tags.directive('listing'))[
                tags.tr(pattern="header")[tags.th["Filename"], tags.th["Size"],
                                          tags.th["Content type"],
                                          tags.th["Content encoding"], ],
                tags.tr(_class="even", pattern="item")[
                    tags.td[tags.a(render=tags.directive("tableLink"))],
                    tags.td(data=tags.directive("filesize"))[str],
                    tags.td(data=tags.directive("type"))[str],
                    tags.td(data=tags.directive("encoding"))[str], ],
                tags.tr(_class="odd", pattern="item")[
                    tags.td[tags.a(render=tags.directive("tableLink"))],
                    tags.td(data=tags.directive("filesize"))[str],
                    tags.td(data=tags.directive("type"))[str],
                    tags.td(data=tags.directive("encoding"))[str], ]]]]])
Ejemplo n.º 16
0
 def heading(self):
     return tags.h1(class_=self.ob.css_class)[
         self.mediumName(self.ob), " : ", self.ob.kind.lower(),
         " documentation"]
Ejemplo n.º 17
0
 def render_ListTitle(self, _, data):
     """Render the list title."""
     # pylint: disable-msg=E1101
     return T.div(render=self.render_small_rounded_box, _class="listtitle")[
         T.h1(style="color:white; padding: 1ex")[data]]
Ejemplo n.º 18
0
          .even-dir { background-color: #efe0ef }
          .even { background-color: #eee }
          .odd-dir {background-color: #f0d0ef }
          .odd { background-color: #dedede }
          .icon { text-align: center }
          .listing {
              margin-left: auto;
              margin-right: auto;
              width: 50%;
              padding: 0.1em;
              }

          body { border: 0; padding: 0; margin: 0; background-color: #efefef;}
          h1 {padding: 0.1em; background-color: #777; color: white; border-bottom: thin white dashed;}
          ''']], tags.body[tags.div(_class='directory-listing')[
            tags.h1(data=tags.directive('header'))[str],
            tags.table(render=rend.sequence, data=tags.directive('listing'))[
                tags.tr(pattern="header")[tags.th["Filename"], tags.th["Size"],
                                          tags.th["Content type"],
                                          tags.th["Content encoding"], ],
                tags.tr(_class="even", pattern="item")[
                    tags.td[tags.a(render=tags.directive("tableLink"))],
                    tags.td(data=tags.directive("filesize"))[str],
                    tags.td(data=tags.directive("type"))[str],
                    tags.td(data=tags.directive("encoding"))[str], ],
                tags.tr(_class="odd", pattern="item")[
                    tags.td[tags.a(render=tags.directive("tableLink"))],
                    tags.td(data=tags.directive("filesize"))[str],
                    tags.td(data=tags.directive("type"))[str],
                    tags.td(data=tags.directive("encoding"))[str], ]]]]])
Ejemplo n.º 19
0
          .odd-dir {background-color: #f0d0ef }
          .odd { background-color: #dedede }
          .icon { text-align: center }
          .listing {
              margin-left: auto;
              margin-right: auto;
              width: 50%;
              padding: 0.1em;
              }

          body { border: 0; padding: 0; margin: 0; background-color: #efefef;}
          h1 {padding: 0.1em; background-color: #777; color: white; border-bottom: thin white dashed;}
          ''']
      ],
      tags.body[tags.div(_class='directory-listing')[
        tags.h1(data=tags.directive('header'))[str],
        tags.table(render=rend.sequence, data=tags.directive('listing'))[
          tags.tr(pattern="header")[
            tags.th["Filename"],
            tags.th["Size"],
            tags.th["Content type"],
            tags.th["Content encoding"],
          ],
          tags.tr(_class="even", pattern="item")[
            tags.td[tags.a(render=tags.directive("tableLink"))],
            tags.td(data=tags.directive("filesize"))[str],
            tags.td(data=tags.directive("type"))[str],
            tags.td(data=tags.directive("encoding"))[str],
          ],
          tags.tr(_class="odd", pattern="item")[
            tags.td[tags.a(render=tags.directive("tableLink"))],