def output(self): return flatten(T.html[ T.head[T.script(type="text/javascript", src="wz_jsgraphics.js")], T.body(bgcolor="#cdcdb4")[T.script( type="text/javascript")["var jg = new jsGraphics();", self.draw_cmds, "jg.paint();", ], self.html_cmds]])
def __init__(self, ctx, restWriter, key, srcId): self.restWriter = restWriter form = iformal.IForm(ctx) u = widgetResourceURLFromContext( ctx, form.name).child(key).child(srcId).child('_submit') self.destId = srcId + '-dest' formId = srcId + '-form' stan = T.html( )[T.head()[T.script(type="text/javascript")[""" function ReSTTranslate() { dest = document.getElementById('%(destId)s'); form = document.getElementById('%(formId)s'); src = parent.document.getElementById('%(srcId)s'); dest.value = src.value; form.submit(); } """ % { 'srcId': srcId, 'destId': self.destId, 'formId': formId }]], T.body( )[T.form(id=formId, method="POST", action=u )[T.input(type="hidden", name=self.destId, id=self.destId)], T.script(type="text/javascript")["ReSTTranslate();"], ], ] self.docFactory = loaders.stan(stan)
def doRendering(self, fragmentClass): """ Verify that the given fragment class will render without raising an exception. """ siteStore = Store() loginSystem = LoginSystem(store=siteStore) installOn(loginSystem, siteStore) p = Product( store=siteStore, types=["xmantissa.webadmin.LocalUserBrowser", "xmantissa.signup.SignupConfiguration"] ) account = loginSystem.addAccount(u"testuser", u"localhost", None) p.installProductOn(account.avatars.open()) f = fragmentClass(None, u"testuser", account) p = LivePage(docFactory=stan(html[head(render=directive("liveglue")), body(render=lambda ctx, data: f)])) f.setFragmentParent(p) ctx = WovenContext() req = FakeRequest() ctx.remember(req, IRequest) d = p.renderHTTP(ctx) def rendered(ign): p.action_close(None) d.addCallback(rendered) return d
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")) ] ])
def doRendering(self, fragmentClass): """ Verify that the given fragment class will render without raising an exception. """ siteStore = Store() loginSystem = LoginSystem(store=siteStore) installOn(loginSystem, siteStore) p = Product(store=siteStore, types=["xmantissa.webadmin.LocalUserBrowser", "xmantissa.signup.SignupConfiguration"]) account = loginSystem.addAccount(u'testuser', u'localhost', None) p.installProductOn(account.avatars.open()) f = fragmentClass(None, u'testuser', account) p = LivePage( docFactory=stan( html[ head(render=directive('liveglue')), body(render=lambda ctx, data: f)])) f.setFragmentParent(p) ctx = WovenContext() req = FakeRequest() ctx.remember(req, IRequest) d = p.renderHTTP(ctx) def rendered(ign): p.action_close(None) d.addCallback(rendered) return d
def speed(self, speed): return rend.Page( docFactory=loaders.stan( tags.html[ tags.body(id='body')[ "Thanks for taking our survey! You said: %r %r %r" % ( self.original[0], self.original[1], speed)]]))
def __init__(self, ctx, restWriter, key, srcId): self.restWriter = restWriter form = iformal.IForm( ctx ) u = formal_widgetResourceURLFromContext(ctx, form.name).child(key).child( srcId ).child('_submit') self.destId=srcId + '-dest' formId=srcId + '-form' stan = T.html()[ T.head()[ T.script(type="text/javascript")[""" function ReSTTranslate() { dest = document.getElementById('%(destId)s'); form = document.getElementById('%(formId)s'); src = parent.document.getElementById('%(srcId)s'); dest.value = src.value; form.submit(); } """%{'srcId':srcId, 'destId':self.destId, 'formId':formId}] ], T.body()[ T.form(id=formId, method="POST", action=u)[ T.input(type="hidden", name=self.destId, id=self.destId) ], T.script(type="text/javascript")["ReSTTranslate();"], ], ] self.docFactory = loaders.stan(stan)
def test_tagWithRender(self): render = lambda c, d: 'body' result = ten.precompile(tags.html[tags.body(render=render)]) prelude, dynamic, postlude = result self.assertEqual(prelude, '<html>') self.assertEqual(dynamic.tag.render, render) self.assertEqual(postlude, '</html>') self.assertEqual(ten.flatten(result), '<html>body</html>')
class ReSTPreview(rend.Page): def __init__(self, ctx, restWriter, key, srcId): self.restWriter = restWriter form = iformal.IForm(ctx) u = widgetResourceURLFromContext( ctx, form.name).child(key).child(srcId).child('_submit') self.destId = srcId + '-dest' formId = srcId + '-form' stan = T.html( )[T.head()[T.script(type="text/javascript")[""" function ReSTTranslate() { dest = document.getElementById('%(destId)s'); form = document.getElementById('%(formId)s'); src = parent.document.getElementById('%(srcId)s'); dest.value = src.value; form.submit(); } """ % { 'srcId': srcId, 'destId': self.destId, 'formId': formId }]], T.body( )[T.form(id=formId, method="POST", action=u )[T.input(type="hidden", name=self.destId, id=self.destId)], T.script(type="text/javascript")["ReSTTranslate();"], ], ] self.docFactory = loaders.stan(stan) def child__submit(self, ctx): args = inevow.IRequest(ctx).args value = args.get(self.destId, [''])[0] from docutils.utils import SystemMessage try: if self.restWriter: restValue = self._html_fragment(value, writer=self.restWriter) else: restValue = self._html_fragment(value, writer_name='html') except SystemMessage, e: restValue = str(e) stan = T.html()[T.head()[T.style(type="text/css")[""" .system-message {border: 1px solid red; background-color: #FFFFDD; margin: 5px; padding: 5px;} .system-message-title { font-weight: bold;} """]], T.body()[T.div()[T.xml(restValue)]], ] self.docFactory = loaders.stan(stan) return self
class MyPage(athena.LivePage): addSlash = True docFactory = loaders.stan(T.html[T.head(render=T.directive('liveglue')), T.body(render=T.directive('myElement'))]) def render_myElement(self, ctx, data): f = MyElement() f.setFragmentParent(self) return ctx.tag[f]
def test_tagWithRender(self): render = lambda c, d: 'body' result = ten.precompile( tags.html[ tags.body(render=render)]) prelude, dynamic, postlude = result self.assertEquals(prelude, '<html>') self.assertEquals(dynamic.tag.render, render) self.assertEquals(postlude, '</html>') self.assertEquals(ten.flatten(result), '<html>body</html>')
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))]]])
class Page1(Base): docFactory = loaders.stan( html[ body(render=directive('foo'))[ p(macro=directive('content')) ] ]) def render_foo(self, ctx, data): return ctx.tag
def output(self): return flatten( T.html[ T.head[T.script(type="text/javascript", src="wz_jsgraphics.js")], T.body(bgcolor="#cdcdb4")[ T.script(type="text/javascript")[ "var jg = new jsGraphics();", self.draw_cmds, "jg.paint();", ], self.html_cmds ]])
def test_precompilePrecompiled(self): def render_same(context, data): return context.tag doc = tags.html[tags.body( render=render_same, data={'foo': 5})[tags.p["Hello"], tags.p(data=tags.directive('foo'))[str]]] result1 = self.render(doc, precompile=True) result2 = self.render(result1, precompile=True) rendered = self.render(result2) self.assertEquals(rendered, "<html><body><p>Hello</p><p>5</p></body></html>")
def test_precompilePrecompiled(self): def render_same(context, data): return context.tag doc = tags.html[ tags.body(render=render_same, data={'foo':5})[ tags.p["Hello"], tags.p(data=tags.directive('foo'))[ str ] ] ] result1 = self.render(doc, precompile=True) result2 = self.render(result1, precompile=True) rendered = self.render(result2) self.assertEquals(rendered, "<html><body><p>Hello</p><p>5</p></body></html>")
def test_rendering(self): """ Test that L{webadmin.UserInteractionFragment} renders without raising any exceptions. """ f = UserInteractionFragment(self.browser) p = LivePage(docFactory=stan(html[head(render=directive("liveglue")), body(render=lambda ctx, data: f)])) f.setFragmentParent(p) ctx = WovenContext() req = FakeRequest() ctx.remember(req, IRequest) d = p.renderHTTP(ctx) def rendered(ign): p.action_close(None) d.addCallback(rendered) return d
class ResultPage(athena.LivePage): addSlash = True source = None CSS = open(basedir+'/ajaxpb.css').read() start = CSS.find('height', CSS.find('resultOut')) stop = CSS.find('\n', start) css = CSS[:start]+'height: 30em;\n'+CSS[stop:] docFactory = loaders.stan(tags.html[ tags.head(render=tags.directive('liveglue')), tags.style(type="text/css")[css], tags.body(render=tags.directive('resultElement'))]) def __init__(self, source): athena.LivePage.__init__(self) self.source = source def render_resultElement(self, ctx, data): f = ResultElement() f.setFragmentParent(self) reactor.callLater(1, self.source.addGatherer, f) return ctx.tag[f]
class NotebookPage(athena.LivePage): addSlash = True docFactory = loaders.stan( tags.html[tags.head( render=tags.directive('liveglue') )[tags.title["IPython Notebook"], tags.link(href="notebook.css", rel="stylesheet", type="text/css"), ], tags.body(render=tags.directive('widget'))]) def __init__(self, controller): athena.LivePage.__init__(self) self.controller = controller if self.children is None: self.children = {} self.children["notebook.css"] = static.File( util.sibpath(__file__, 'notebook.css')) def render_widget(self, ctx, data): w = aw.NotebookWidget(self.controller) w.setFragmentParent(self) return ctx.tag[w]
def test_rendering(self): """ Test that L{webadmin.UserInteractionFragment} renders without raising any exceptions. """ f = UserInteractionFragment(self.browser) p = LivePage( docFactory=stan( html[ head(render=directive('liveglue')), body(render=lambda ctx, data: f)])) f.setFragmentParent(p) ctx = WovenContext() req = FakeRequest() ctx.remember(req, IRequest) d = p.renderHTTP(ctx) def rendered(ign): p.action_close(None) d.addCallback(rendered) return d
class Benchmark(athena.LivePage): docFactory = loaders.stan( tags.html[tags.head(render=tags.directive('liveglue')), tags.body(render=tags.directive('body'))]) def __init__(self, maxNodes, maxDepth): self.maxNodes = maxNodes self.maxDepth = maxDepth super(Benchmark, self).__init__() here = filepath.FilePath(__file__).parent().child('benchmark.js') self.jsModules.mapping.update({'Nevow.Benchmarks': here.path}) def render_body(self, ctx, data): for j in range(self.maxNodes // self.maxDepth): top = t = tags.div() for i in range(self.maxDepth): m = tags.div() t[m] t = m t[InitializationBenchmark(self)] yield top
def child_postTarget(self, ctx): return rend.Page( docFactory=loaders.stan( tags.html[tags.body(id="body")[str(ctx.arg('blah'))]]))
def test_dynamic(self): self.assertEquals( ten.flatten( tags.html[ tags.body(render=lambda c, d: 'body!')]), '<html>body!</html>')
def speed(self, speed): return rend.Page(docFactory=loaders.stan(tags.html[tags.body( id='body')["Thanks for taking our survey! You said: %r %r %r" % (self.original[0], self.original[1], speed)]]))
test = loaders.xmlstr(xml, ignoreDocType=True).load() except Exception, e: restValue = "HTML Validation Error: please check any raw HTML blocks." stan = T.html()[ T.head()[ T.style(type="text/css")[""" .system-message {border: 1px solid red; background-color: #FFFFDD; margin: 5px; padding: 5px;} .system-message-title { font-weight: bold;} """ ] ], T.body()[ T.div()[ T.xml(restValue) ] ], ] self.docFactory = loaders.stan(stan) return self def _html_fragment(self, input_string, writer=None, writer_name=None): return restsupport.htmlFragment(input_string, writer=writer, writer_name=writer_name) registerAdapter(converters.NullConverter, RichText, IRichTextConvertible) registerAdapter(RichTextArea, RichText, iforms.IWidget)