def make_app(global_conf, full_stack=True, **app_conf): """ Set biorepo up with the settings found in the PasteDeploy configuration file used. @param global_conf: The global settings for biorepo (those defined under the ``[DEFAULT]`` section). @type global_conf: dict @param full_stack: Should the whole TG2 stack be set up? @type full_stack: str or bool @return: The biorepo application with all the relevant middleware loaded. This is the PasteDeploy factory for the biorepo application. ``app_conf`` contains all the application-specific settings (those defined under ``[app:main]``. """ #app = make_base_app(global_conf, full_stack=True, **app_conf) ####begin test inject_resources = True serve_resources = True if 'prefix' in app_conf: custom = lambda app: twc.make_middleware( app, serve_resources=serve_resources, inject_resources=inject_resources, script_name=app_conf['prefix']) print app_conf['prefix'], "------- prefix" else: custom = lambda app: twc.make_middleware( app, serve_resources=serve_resources, inject_resources=inject_resources) print "------ no prefix found" app = make_base_app(global_conf, wrap_app=custom, full_stack=True, **app_conf) ####end test # Wrap your base TurboGears 2 application with custom middleware here # This custom middleware is about authentication app = make_middleware_with_config( app, global_conf, app_conf.get('who.config_file', 'who.ini'), app_conf.get('who.log_file', 'auth.log'), app_conf.get('who.log_level', 'debug')) return app
def test_rendering_extension_propagation(self): mw = twc.make_middleware(None, preferred_rendering_engines=['genshi', 'jinja'], rendering_extension_lookup={'genshi':['genshi', 'html'], 'jinja':['jinja']}) assert twc.templating.get_engine_name('tw2.core.test_templates.parent_genshi', mw) == 'genshi' #flush caches to avoid wrong results due to cached results twc.util.flush_memoization() twc.templating.engine_name_cache = {} mw = twc.make_middleware(None, preferred_rendering_engines=['genshi', 'jinja'], rendering_extension_lookup={'genshi':['genshi'], 'jinja':['jinja', 'html']}) assert twc.templating.get_engine_name('tw2.core.test_templates.parent_genshi', mw) == 'jinja'
def test_params_as_vars(self): import mako class MyTest(twc.Widget): template = 'mako:tw2.core.test_templates.simple_mako' test= twc.Param('blah', default='hello') testapi.request(1) twc.core.request_local()['middleware'] = twc.make_middleware(None, params_as_vars=True) MyTest.display() twc.core.request_local()['middleware'] = twc.make_middleware(None, params_as_vars=False) try: MyTest.display() assert(False) except TypeError: # this will raise a type error because "Undefined" is found (not a string) pass
def test_widget_nesting(self): twc.core.request_local()["middleware"] = twc.make_middleware(None) for outer, inner in itertools.product(engines, engines): outer = "%s:tw2.core.test_templates.widget_%s" % (outer, outer) inner = "%s:tw2.core.test_templates.inner_%s" % (inner, inner) test = twc.CompoundWidget(id="x", template=outer, children=[TestWD(id="y", template=inner)]) eq_(test.display(), "<p>TEST <p>TEST bob</p></p>")
def setup_tw(repl_app): # Stack TW's middleware configured with dummy default_view to signal # that a widget is being displayed so we can wrap and register its # output. conf = { 'toscawidgets.framework.default_view': 'tw_repl', 'toscawidgets.middleware.inject_resources': True } repl_app.app = twc.make_middleware(repl_app.app, conf) # monkey-patch display and render to hijack output def wrap(f): if f.func_name == 'wrapper': return f def wrapper(self, value=None, **kw): if self.displays_on == 'tw_repl': o = DeferredDisplay(self, value, **kw) repl_app.displayed_widgets[o.id] = o else: o = f(self, value, **kw) return o return wrapper twc.Widget.display = wrap(twc.Widget.display) twc.Widget.render = wrap(twc.Widget.render)
def _check_render(self, template, data, expected, engine=None): if engine: mw = twc.make_middleware(None, preferred_rendering_engines=[engine]) testapi.request(1, mw) out = twc.template.EngineManager().render(template, 'string', data) assert(isinstance(out, unicode)) assert out == expected, out
def test_jquery_script_name(): twc.core.request_local()['middleware'] = \ twc.make_middleware(script_name='/lol') from tw2.jquery import jquery_js twc.core.request_local()['middleware'].script_name = '/lol' the_link = '/lol/resources/tw2.jquery/static/jquery/1.7.1/jquery.js' eq_(jquery_js.req().link, the_link)
def dev_server( app=None, host='127.0.0.1', port=8000, logging=True, weberror=True, use_threadpool=None, threadpool_workers=10, request_queue_size=5, repoze_tm=False, **config): """ Run a development server, hosting the ToscaWidgets application. This requires Paste and WebError, which are only sure to be available if tw2.devtools is installed. """ config.setdefault('debug', True) config.setdefault('controller_prefix', '/') app = twc.make_middleware(app, **config) if repoze_tm: import repoze.tm as rtm, tw2.sqla as tws app = rtm.TM(app, tws.commit_veto) if weberror: import weberror.errormiddleware as we app = we.ErrorMiddleware(app, debug=True) if logging: import paste.translogger as pt app = pt.TransLogger(app) import paste.httpserver as ph ph.serve(app, host=host, port=port, use_threadpool=use_threadpool, threadpool_workers=threadpool_workers, request_queue_size=request_queue_size)
def test_params_as_vars(self): import mako class MyTest(twc.Widget): template = 'mako:tw2.core.test_templates.simple_mako' test= twc.Param('blah', default='hello') testapi.request(1) twc.core.request_local()['middleware'] = twc.make_middleware(None, params_as_vars=True) MyTest.display() twc.core.request_local()['middleware'] = twc.make_middleware(None, params_as_vars=False) try: MyTest.display() assert(False) except NameError: # this will raise a name error because "Undefined" # is found (not a string) pass
def test_widget_display(self): twc.core.request_local()['middleware'] = twc.make_middleware(None) mtest = TestWD(id='x') for eng in engines: test = mtest.req() test.template = '%s:tw2.core.test_templates.inner_%s' % (eng, eng) out = test.display() eq_(out, '<p>TEST bob</p>')
def test_widget_display(self): twc.core.request_local()["middleware"] = twc.make_middleware(None) mtest = TestWD(id="x") for eng in engines: test = mtest.req() test.template = "%s:tw2.core.test_templates.inner_%s" % (eng, eng) out = test.display() eq_(out, "<p>TEST bob</p>")
def make_app(global_conf, full_stack=True, **app_conf): """ Set biorepo up with the settings found in the PasteDeploy configuration file used. @param global_conf: The global settings for biorepo (those defined under the ``[DEFAULT]`` section). @type global_conf: dict @param full_stack: Should the whole TG2 stack be set up? @type full_stack: str or bool @return: The biorepo application with all the relevant middleware loaded. This is the PasteDeploy factory for the biorepo application. ``app_conf`` contains all the application-specific settings (those defined under ``[app:main]``. """ #app = make_base_app(global_conf, full_stack=True, **app_conf) ####begin test inject_resources = True serve_resources = True if 'prefix' in app_conf: custom = lambda app: twc.make_middleware(app, serve_resources=serve_resources, inject_resources=inject_resources, script_name=app_conf['prefix']) print app_conf['prefix'], "------- prefix" else: custom = lambda app: twc.make_middleware(app, serve_resources=serve_resources, inject_resources=inject_resources) print "------ no prefix found" app = make_base_app(global_conf, wrap_app=custom, full_stack=True, **app_conf) ####end test # Wrap your base TurboGears 2 application with custom middleware here # This custom middleware is about authentication app = make_middleware_with_config( app, global_conf, app_conf.get('who.config_file', 'who.ini'), app_conf.get('who.log_file', 'auth.log'), app_conf.get('who.log_level', 'debug') ) return app
def test_rendering_extension_propagation(self): mw = twc.make_middleware( None, preferred_rendering_engines=["genshi", "jinja"], rendering_extension_lookup={"genshi": ["genshi", "html"], "jinja": ["jinja"]}, ) assert twc.templating.get_engine_name("tw2.core.test_templates.parent_genshi", mw) == "genshi" # flush caches to avoid wrong results due to cached results twc.util.flush_memoization() twc.templating.engine_name_cache = {} mw = twc.make_middleware( None, preferred_rendering_engines=["genshi", "jinja"], rendering_extension_lookup={"genshi": ["genshi"], "jinja": ["jinja", "html"]}, ) assert twc.templating.get_engine_name("tw2.core.test_templates.parent_genshi", mw) == "jinja"
def _check_render(self, template, data, expected, engine=None): if engine: mw = twc.make_middleware(None, preferred_rendering_engines=[engine]) testapi.request(1, mw) twc.util.flush_memoization() out = twc.templating.render(template, "string", data) assert isinstance(out, six.text_type) eq_(out, expected)
def test_params_as_vars(self): import mako class MyTest(twc.Widget): template = "mako:tw2.core.test_templates.simple_mako" test = twc.Param("blah", default="hello") testapi.request(1) twc.core.request_local()["middleware"] = twc.make_middleware(None, params_as_vars=True) MyTest.display() twc.core.request_local()["middleware"] = twc.make_middleware(None, params_as_vars=False) try: MyTest.display() assert False except NameError: # this will raise a name error because "Undefined" # is found (not a string) pass
def test_widget_nesting(self): twc.core.request_local()['middleware'] = twc.make_middleware(None) for outer, inner in itertools.product(engines, engines): outer = '%s:tw2.core.test_templates.widget_%s' % (outer, outer) inner = '%s:tw2.core.test_templates.inner_%s' % (inner, inner) test = twc.CompoundWidget( id='x', template=outer, children=[TestWD(id='y', template=inner)]) eq_(test.display(), '<p>TEST <p>TEST bob</p></p>')
def _check_render(self, template, data, expected, engine=None): if engine: mw = twc.make_middleware(None, preferred_rendering_engines=[engine]) testapi.request(1, mw) twc.util.flush_memoization() out = twc.templating.render(template, 'string', data) assert (isinstance(out, six.text_type)) eq_(out, expected)
def test_widget_nesting(self): twc.core.request_local()['middleware'] = twc.make_middleware(None) for outer in engines: for inner in engines: test = twc.CompoundWidget(id='x', template = '%s:tw2.core.test_templates.widget_%s' % (outer, outer), children=[ TestWD(id='y', template='%s:tw2.core.test_templates.inner_%s' % (inner, inner)), ] ) assert(test.display().replace(kid_prefix, '') == '<p>TEST <p>TEST bob</p></p>')
def test_auto_select_unavailable_engine_not_strict(self): engine = 'mako' mw = twc.make_middleware( None, preferred_rendering_engines=[engine], strict_engine_selection=False, ) testapi.request(501, mw) self._check_render( 'tw2.core.test_templates.simple_genshi', {'test':'blah!'}, '<p>TEST blah!</p>', )
def setup(self): global _request_local _request_local = {} self.mw = twc.make_middleware(self) self.app = wt.TestApp(self.mw) js = twc.JSLink(link='paj') css = twc.CSSLink(link='joe') TestWidget = twc.Widget( template='genshi:tw2.core.test_templates.inner_genshi', test='test', ) self.inject_widget = TestWidget(id='a', resources=[js, css])
def test_auto_select_unavailable_engine_not_strict(self): engine = 'mako' mw = twc.make_middleware( None, preferred_rendering_engines=[engine], strict_engine_selection=False, ) testapi.request(501, mw) self._check_render( 'tw2.core.test_templates.simple_genshi', {'test': 'blah!'}, '<p>TEST blah!</p>', )
def setUp(self): global _request_local _request_local = {} self.mw = twc.make_middleware(self) self.app = wt.TestApp(self.mw) js = twc.JSLink(link='paj') css = twc.CSSLink(link='joe') TestWidget = twc.Widget( template='genshi:tw2.core.test_templates.inner_genshi', test='test', ) self.inject_widget = TestWidget(id='a', resources=[js, css])
def testAddCall(self): class T(wd.Widget): test = twc.Param("blah", default="hello") template = "mako:tw2.core.test_templates.simple_mako" i = T(id="foo").req() jscall = ["somefunc", "bodybottom"] i.add_call(jscall[0], jscall[1]) self.assert_(jscall in i._js_calls) testapi.request(1) twc.core.request_local()["middleware"] = twc.make_middleware(None, params_as_vars=True) res = i.display(displays_on="string") self.assert_(res) self.assert_(i.resources)
def test_rendering_extension_propagation(self): mw = twc.make_middleware( None, preferred_rendering_engines=['genshi', 'jinja'], rendering_extension_lookup={ 'genshi': ['genshi', 'html'], 'jinja': ['jinja'] }) assert twc.templating.get_engine_name( 'tw2.core.test_templates.parent_genshi', mw) == 'genshi' #flush caches to avoid wrong results due to cached results twc.util.flush_memoization() twc.templating.engine_name_cache = {} mw = twc.make_middleware( None, preferred_rendering_engines=['genshi', 'jinja'], rendering_extension_lookup={ 'genshi': ['genshi'], 'jinja': ['jinja', 'html'] }) assert twc.templating.get_engine_name( 'tw2.core.test_templates.parent_genshi', mw) == 'jinja'
def testAddCall(self): class T(wd.Widget): test = twc.Param('blah', default='hello') template = 'mako:tw2.core.test_templates.simple_mako' i = T(id="foo").req() jscall = ["somefunc", "bodybottom"] i.add_call(jscall[0], jscall[1]) self.assert_(jscall in i._js_calls) testapi.request(1) twc.core.request_local()['middleware'] = twc.make_middleware( None, params_as_vars=True) res = i.display(displays_on="string") self.assert_(res) self.assert_(i.resources)
def test_widget_relative_inheritance(self): twc.core.request_local()['middleware'] = twc.make_middleware(None) # These aren't yet supported in the tests yet. ignored_engines = ['jinja', 'kajiki', 'chameleon'] for engine in engines: if engine in ignored_engines: continue template = "%s:tw2.core.test_templates.child_%s" % (engine, engine) test = twc.Widget(id='x', template=template) expected = """ <html> <head><title>Parent</title></head> <body>Child</body> </html> """ assert_eq_xhtml(test.display(), expected)
def test_widget_relative_inheritance(self): twc.core.request_local()["middleware"] = twc.make_middleware(None) # These aren't yet supported in the tests yet. ignored_engines = ["jinja", "kajiki", "chameleon"] for engine in engines: if engine in ignored_engines: continue template = "%s:tw2.core.test_templates.child_%s" % (engine, engine) test = twc.Widget(id="x", template=template) expected = """ <html> <head><title>Parent</title></head> <body>Child</body> </html> """ assert_eq_xhtml(test.display(), expected)
def __init__(self, global_conf={}, template_dirs=None, interactive=False, docs_dir=None, full_stack=True): if isinstance(template_dirs, basestring): template_dirs = template_dirs.split() template_dirs = template_dirs or [] template_dirs.append( resource_filename('moksha.widgetbrowser', 'templates')) self.loader = TemplateLoader(template_dirs) self.interactive = asbool(interactive) if self.interactive: self.http_repl = repl.WidgetReplApp(globals(), weakref.proxy(self)) self.context = self.http_repl.repl.locals else: self.context = None self.http_repl = exc.HTTPForbidden("Interactive mode is disabled") if docs_dir: from paste.cascade import Cascade dest_dir = os.path.abspath(os.path.join(docs_dir)) #log.info('Building docs...') #try: # util.build_docs(docs_dir, dest_dir) #except Exception, e: # log.warning('Skipping building docs: %s' % str(e)) self.built_docs = dest_dir self.app = Cascade([self.docs_app, self.app]) if asbool(full_stack): self.app = twc.make_middleware( self.app, { 'toscawidgets.framework.default_view': 'genshi', }, stack_registry=True) self._default_controllers = dict(demo=self.show_demo, index=self.show_index, template=self.show_template, parameters=self.show_parameters, source=self.show_source, demo_source=self.show_demo_source)
def dev_server( app=None, host='127.0.0.1', port=8000, logging=True, weberror=True, use_threadpool=None, threadpool_workers=10, request_queue_size=5, repoze_tm=False, **config): """ Run a development server, hosting the ToscaWidgets application. This requires gearbox and WebError, which are only sure to be available if tw2.devtools is installed. """ config.setdefault('debug', True) config.setdefault('controller_prefix', '/') app = twc.make_middleware(app, **config) if repoze_tm: import repoze.tm as rtm import tw2.sqla as tws app = rtm.TM(app, tws.commit_veto) if weberror: import weberror.errormiddleware as we app = we.ErrorMiddleware(app, debug=True) # TODO - this got left behind in the python3 port. Revive it. #if logging: # import paste.translogger as pt # app = pt.TransLogger(app) # Handle old and new versions of gearbox. try: from gearbox.commands.serve import wsgiref_server_runner except ImportError: from gearbox.commands.server import wsgiref_server_runner wsgiref_server_runner( app, host=host, port=port, use_threadpool=use_threadpool, threadpool_workers=threadpool_workers, request_queue_size=request_queue_size, )
def setUp(self): testapi.setup() self.twe = encoder # Use TW2 encoder self.encode = self.twe.encode mw = twc.make_middleware(lambda *args, **kw: "I'm an app, lol!") testapi.request(1, mw=mw)
import tw2.core as twc, tw2.forms as twf, tw2.yui as twy opts = ["Paj", {"label": "blah", "children": ["a", "b", "c"]}, "Joe"] class Index(twf.FormPage): title = "YUI Test" attrs = {"class": "yui-skin-sam"} class child(twf.Form): class child(twf.TableLayout): check = twf.CheckBox(validator=twc.Required) color = twy.TreeView(options=opts) if __name__ == "__main__": import wsgiref.simple_server as wrs wrs.make_server("", 8000, twc.make_middleware(controller_prefix="/")).serve_forever()
def test_fontawesome_scriptname(): twc.core.request_local()['middleware'] = twc.make_middleware( script_name='/foo') from tw2.fontawesome import fontawesome_css the_link = "/foo/resources/tw2.fontawesome/static/css/font-awesome.css" eq_(fontawesome_css.req().link, the_link)
def setUp(self): twc.core.request_local = request_local_tst twc.core.request_local()['middleware'] = twc.make_middleware() self.w = MokshaContainer(id='test')
js = twc.JSLink(link='paj') css = twc.CSSLink(link='joe') csssrc = twc.CSSSource(src='.bob { font-weight: bold; }') jssrc = twc.JSSource(src='bob') html = "<html><head><title>a</title></head><body>hello</body></html>" def simple_app(environ, start_response): req = wo.Request(environ) ct = 'text/html' if req.path == '/' else 'test/plain' resp = wo.Response(request=req, content_type="%s; charset=UTF8" % ct) resp.body = html return resp(environ, start_response) mw = twc.make_middleware(simple_app) def setup(): testapi.setup() def test_weird_case_for_zykes(): rl = testapi.request(1, mw) tw2.jqplugins.ui.jquery_ui.inject() rl = twc.core.request_local() r = rl['resources'] import pprint pprint.pprint(rl['resources']) for r in rl['resources']:
def test_auto_select_unavailable_engine_not_strict(self): engine = "mako" mw = twc.make_middleware(None, preferred_rendering_engines=[engine], strict_engine_selection=False) testapi.request(501, mw) self._check_render("tw2.core.test_templates.simple_genshi", {"test": "blah!"}, "<p>TEST blah!</p>")
import tw2.core as twc, tw2.forms as twf class Index(twf.FormPage): title = 'GridLayout Validation' class child(twf.Form): class child(twf.GridLayout): repetitions = 5 name = twf.TextField(validator=twc.Required) email = twf.TextField(validator=twc.EmailValidator()) if __name__ == '__main__': import wsgiref.simple_server as wrs wrs.make_server( '', 8000, twc.make_middleware(controller_prefix='/')).serve_forever()
def __init__(self, app): self.app = app self.app.extensions['toscawidgets'] = self config = self.extract_config(self.app) self.mw = twc.make_middleware(self.app.wsgi_app, **config) self.app.wsgi_app = self.mw
def tw_middleware(app): conf = {'default_view':'genshi'} return twc.make_middleware(app, **conf)
html = "<html><head><title>a</title></head><body>hello</body></html>" inject_widget = TestWidget(id='a', resources=[js]) def simple_app(environ, start_response): req = wo.Request(environ) ct = 'text/html' if req.path == '/' else 'test/plain' resp = wo.Response(request=req, content_type="%s; charset=UTF8" % ct) inject_widget.display() if six.PY3: resp.text = html else: resp.body = html return resp(environ, start_response) mw = twc.make_middleware(simple_app) tst_mw = wt.TestApp(mw) class TestResources(object): def setUp(self): testapi.setup() def test_res_collection(self): rl = testapi.request(1, mw) wa = TestWidget(id='a') wb = TestWidget(id='b', resources=[js, css]) wa.display() rl = twc.core.request_local() assert(len(rl.get('resources', [])) == 0) wb.display() for r in rl['resources']:
</table> <div class="push"></div> </div> <div class="footer"> <p>This is a project of <a href="http://threebean.org">[three]Bean.org</a>. Tests are run nightly. Last generated at ${timestamp}.</p> <p> If you'd like to see your widget library listed on this page or the <a href="http://tw2-demos.threebean.org">demo page</a>, please email the <a href="http://groups.google.com/group/toscawidgets-discuss">toscawidgets-discuss</a> mailing list.</p> </div> </body> </html> """ if __name__ == '__main__': # Ridiculous hack :/ rl = tw2.core.core.request_local() rl.clear() rl['middleware'] = make_middleware() page = page.req() for r in repos: r.gather_results() template = mako.template.Template(tmpl_str) output = template.render(repos=repos, sparkwidget=page.commits, timestamp=datetime.now().strftime('%F %T')) with open('htmlcov/index.html', 'w') as f: f.write(output)
def setup(): twc.core.request_local = request_local_tst twc.core.request_local()['middleware'] = twc.make_middleware()
import tw2.core as twc, tw2.forms as twf opts = ['Red', 'Yellow', 'Green', 'Blue'] class Index(twf.FormPage): title = 'tw2.forms Deep Children' class child(twf.Form): class child(twc.CompoundWidget): class noname(twf.TableFieldSet): id = None legend = 'Contact Info' name = twf.TextField() email = twf.TextField(validator=twc.EmailValidator()) class noname2(twf.TableFieldSet): id = None legend = 'Work Info' job_title = twf.TextField(validator=twc.Required) location = twf.TextField() if __name__ == "__main__": import wsgiref.simple_server as wrs wrs.make_server('', 8000, twc.make_middleware(controller_prefix='/')).serve_forever()
def setup(self): global _request_local _request_local = {} self.mw = twc.make_middleware(self) self.app = wt.TestApp(self.mw)