def exposeForThisName(func): module = func.__module__.replace('controllers', 'templates') module = re.sub(r'\.[\w]+$', '', module) controller = re.findall(r'<function ([\w.]+).+>', repr(func))[0] controller = re.sub('Controller\.', '.', controller) path = "%s.%s" % (module, controller) return expose(path)(func)
def __call__(self, func): def dict_wrap(*args, **kw): passvalue=dict(func(*args, **kw)) for key,value in passvalue.items(): if 'error' in value: return redirect('/error/restError?error='+value['error']+'&descript='+value['descript']) return passvalue res = expose("json")(dict_wrap) return res
def logoutput(meth): """Decorator to use log output""" @functools.wraps(meth) def wrapper(*args, **kwargs): buf = io.StringIO() with contextlib.redirect_stdout(buf): meth(*args, **kwargs) return {'content': buf.getvalue()} return expose('algobowl.templates.logoutput')(wrapper)
def test_default_chameleon_genshi_renderer(): if ChameleonGenshiRenderer is None: raise SkipTest() def add_chameleon_renderer(app_config): app_config.register_rendering_engine(ChameleonGenshiRenderer) app_config.renderers.append('chameleon_genshi') app = setup_noDB(add_chameleon_renderer) # Manually add the exposition again as it was already discarded # due to chameleon_genshi not being in the available renderes. milestones.renderers_ready._reset() from .controllers.root import RootController controller = im_func(RootController.chameleon_index_dotted) expose('chameleon_genshi:tests.test_stack.rendering.templates.index')(controller) milestones.renderers_ready.reach() resp = app.get('/chameleon_index_dotted') assert "Welcome" in resp, resp assert "TurboGears" in resp, resp
def test_chameleon_genshi_base(): if ChameleonGenshiRenderer is None: raise SkipTest() def add_chameleon_renderer(app_config): app_config.register_rendering_engine(ChameleonGenshiRenderer) app_config.renderers.append('chameleon_genshi') app = setup_noDB(extra_init=add_chameleon_renderer) # Manually add the exposition again as it was already discarded # due to chameleon_genshi not being in the available renderes. milestones.renderers_ready._reset() from .controllers.root import RootController controller = im_func(RootController.chameleon_genshi_index) expose('chameleon_genshi:index.html')(controller) milestones.renderers_ready.reach() resp = app.get('/chameleon_genshi_index') assert ("<p>TurboGears 2 is rapid web application development toolkit" " designed to make your life easier.</p>") in resp
def test_default_chameleon_genshi_renderer(): if ChameleonGenshiRenderer is None: raise SkipTest() def add_chameleon_renderer(app_config): app_config.register_rendering_engine(ChameleonGenshiRenderer) app_config.renderers.append('chameleon_genshi') app = setup_noDB(add_chameleon_renderer) # Manually add the exposition again as it was already discarded # due to chameleon_genshi not being in the available renderes. milestones.renderers_ready._reset() from .controllers.root import RootController controller = im_func(RootController.chameleon_index_dotted) expose('chameleon_genshi:tests.test_stack.rendering.templates.index')( controller) milestones.renderers_ready.reach() resp = app.get('/chameleon_index_dotted') assert "Welcome" in resp, resp assert "TurboGears" in resp, resp
def test_chameleon_genshi_inheritance(): if ChameleonGenshiRenderer is None: raise SkipTest() def add_chameleon_renderer(app_config): app_config.register_rendering_engine(ChameleonGenshiRenderer) app_config.renderers.append("chameleon_genshi") try: import lxml except ImportError: # match templates need lxml, but since they don're really work anyway # (at least not fully compatible with Genshi), we just skip this test return app = setup_noDB(extra_init=add_chameleon_renderer) milestones.renderers_ready._reset() from .controllers.root import RootController controller = im_func(RootController.chameleon_genshi_inherits) expose("chameleon_genshi:genshi_inherits.html")(controller) milestones.renderers_ready.reach() try: resp = app.get("/chameleon_genshi_inherits") except NameError as e: # known issue with chameleon.genshi 1.0 if "match_templates" not in str(e): raise except AttributeError as e: # known issue with chameleon.genshi 1.3 if "XPathResult" not in str(e): raise else: assert "Inheritance template" in resp assert "Master template" in resp
def test_chameleon_genshi_inheritance(): if ChameleonGenshiRenderer is None: raise SkipTest() def add_chameleon_renderer(app_config): app_config.register_rendering_engine(ChameleonGenshiRenderer) app_config.renderers.append('chameleon_genshi') try: import lxml except ImportError: # match templates need lxml, but since they don're really work anyway # (at least not fully compatible with Genshi), we just skip this test return app = setup_noDB(extra_init=add_chameleon_renderer) milestones.renderers_ready._reset() from .controllers.root import RootController controller = im_func(RootController.chameleon_genshi_inherits) expose('chameleon_genshi:genshi_inherits.html')(controller) milestones.renderers_ready.reach() try: resp = app.get('/chameleon_genshi_inherits') except NameError as e: # known issue with chameleon.genshi 1.0 if 'match_templates' not in str(e): raise except AttributeError as e: # known issue with chameleon.genshi 1.3 if 'XPathResult' not in str(e): raise else: assert "Inheritance template" in resp assert "Master template" in resp
def test_use_default_renderer(self): base_config = TestConfig(folder = 'dispatch', values = {'use_sqlalchemy': False, 'use_toscawidgets': False, 'use_toscawidgets2': False, 'ignore_parameters': ["ignore", "ignore_me"] }) app = app_from_config(base_config) exposition = tg.expose('nonexisting') exposition._resolve_options() assert exposition.engine == tg.config['default_renderer'] assert exposition.template == 'nonexisting'
def test_expose_without_function_does_nothing(self): base_config = TestConfig(folder = 'dispatch', values = {'use_sqlalchemy': False, 'use_toscawidgets': False, 'use_toscawidgets2': False, 'ignore_parameters': ["ignore", "ignore_me"] }) app = app_from_config(base_config) exposition = tg.expose('nonexisting') exposition._apply() assert exposition._func is None assert exposition.engine is None
def test_use_default_renderer(self): base_config = TestConfig(folder='dispatch', values={ 'use_sqlalchemy': False, 'use_toscawidgets': False, 'use_toscawidgets2': False, 'ignore_parameters': ["ignore", "ignore_me"] }) app = app_from_config(base_config) exposition = tg.expose('nonexisting') assert exposition.engine == tg.config['default_renderer'] assert exposition.template == 'nonexisting'
def test_use_default_renderer(self): base_config = TestConfig( folder="dispatch", values={ "use_sqlalchemy": False, "use_toscawidgets": False, "use_toscawidgets2": False, "ignore_parameters": ["ignore", "ignore_me"], }, ) app = app_from_config(base_config) exposition = tg.expose("nonexisting") assert exposition.engine == tg.config["default_renderer"] assert exposition.template == "nonexisting"
def test_expose_without_function_does_nothing(self): base_config = TestConfig(folder='dispatch', values={ 'use_sqlalchemy': False, 'use_toscawidgets': False, 'use_toscawidgets2': False, 'ignore_parameters': ["ignore", "ignore_me"] }) app = app_from_config(base_config) exposition = tg.expose('nonexisting') exposition._apply() assert exposition._func is None assert exposition.engine is None
def test_expose_idempotent(self): base_config = TestConfig(folder = 'dispatch', values = {'use_sqlalchemy': False, 'use_toscawidgets': False, 'use_toscawidgets2': False, 'ignore_parameters': ["ignore", "ignore_me"] }) app = app_from_config(base_config) exposition = tg.expose('nonexisting') @exposition @exposition def func(*args, **kw): pass milestones.renderers_ready.reach() deco = Decoration.get_decoration(func) assert len(deco.engines) == 1, deco.engines
def test_expose_idempotent(self): base_config = TestConfig(folder='dispatch', values={ 'use_sqlalchemy': False, 'use_toscawidgets': False, 'use_toscawidgets2': False, 'ignore_parameters': ["ignore", "ignore_me"] }) app = app_from_config(base_config) exposition = tg.expose('nonexisting') @exposition @exposition def func(*args, **kw): pass milestones.renderers_ready.reach() deco = Decoration.get_decoration(func) assert len(deco.engines) == 1, deco.engines
def call(self): tglocals = request.environ['tg.locals'] def start_response(status, headers, exc_info=None): response.status = status response.headers.update(headers) if exc_info: response.headerlist = exc_info tglocals.request.body = request.environ['request_body'] return fn(self, tglocals.request.environ, start_response) return call exp = expose() class ApiController(BaseController): @expose('json') def index(self): return {"greeting": "Hello."} _process = FindUpstreamAgentsService() _upstream = FindUpstreamAgentsService() _downstream = FindDownstreamTargetsService() _search = TextSearchService() @expose() @wsgi_wrap def process(self, environ, start_response):
class CCTVController(BaseController): """ allow_only = Any( has_permission('manage'), has_permission('marketingmanage'), has_permission('marketing'), msg=l_('Only for people with the "marketing" permission') ) """ @expose('jistdocstore.templates.cctv.cctvindex') def index(self): return dict(page="Index", form=test_form) @expose('jistdocstore.templates.cctv.cctvindex') def menu(self): cam1 = camsmobotix[0] cam1_stream_src = "http://%s/control/faststream.jpg?stream=full&fps=10.0&dummy=1804289385" % cam1 cams = self.setup5camtopbar() return dict(page='Camera Views', cam1=cam1_stream_src, cam2=cams[0], cam3=cams[1], cam4=cams[2], cam5=cams[3], cam6=cams[4], selfname="getfastframe") @expose('jistdocstore.templates.cctv.cctvgridviewresponsive') def cctvgridviewresponsive(self): return dict(page="CCTV Grid View Responsive") @expose('jistdocstore.templates.cctv.cctvcarousel') def cctvcarousel(self): return dict(page="CCTV Carousel") @expose('jistdocstore.templates.cctv.cctvinternalcams_grid') def cctvinternalcams_grid(self): return dict(page="CCTV Grid View") @expose('jistdocstore.templates.cctv.cctvinternalcams_carousel') def cctvinternalcams_carousel(self): return dict(page="CCTV Carousel") @expose() #@validate(test_form, error_handler=form_show) def form_submit(self, **kw): return 'Thanks: {name} {surname}'.format(**kw) @expose('jistdocstore.templates.cctv.jistcams_single') def view_single_cam_jist(self, **kw): #for k, w in kw.iteritems(): # print k, w #return imgtag = "<img class='cctv_img_small' src=" httptag = "http://*****:*****@" iptag = "jisttrading.no-ip.org:10091" cgitag = "/cgi-bin/faststream.jpg?" pic_cgi = "/cgi-bin/image.jpg?size=100x75&quality=60" #imgsrc = imgtag + httptag + iptag + cgitag + params html1 = '' camimglist = [] for cam in camsmobotix: rnd = random.random() rnd = str(rnd).split('.')[1] iptag = cam params = "stream=full&fps=1.0&error=picture&dummy=" + str( rnd) valuetag = httptag + iptag + cgitag + params imgsrc = httptag + iptag + pic_cgi camimglist.append({ 'src': imgsrc, 'value': httptag + iptag + cgitag }) return dict(page='Single Camera View', camimg_srclist=camimglist) @expose('jistdocstore.templates.cctv.jistcams_single') def view_single_cam_jistfamily_home(self, **kw): #for k, w in kw.iteritems(): # print k, w #return imgtag = "<img class='cctv_img_small' src=" httptag = "http://*****:*****@" iptag = "jistfamily.dyndns.org:10090" cgitag = "/cgi-bin/faststream.jpg?" pic_cgi = "/cgi-bin/image.jpg?size=100x75&quality=60" #imgsrc = imgtag + httptag + iptag + cgitag + params html1 = '' camimglist = [] for cam in camsjistfamily: rnd = random.random() rnd = str(rnd).split('.')[1] iptag = cam params = "stream=full&fps=1.0&error=picture&dummy=" + str( rnd) valuetag = httptag + iptag + cgitag + params imgsrc = httptag + iptag + pic_cgi camimglist.append({ 'src': imgsrc, 'value': httptag + iptag + cgitag }) return dict(page='JIST Family Home Camera View', camimg_srclist=camimglist) @expose() def view_single_cam_jist_ajax(self, **kw): #for k, w in kw.iteritems(): #print k, w rnd = random.random() rnd = str(rnd).split('.')[1] src = kw['src'] imgtag = "<img class='cctv_main' src=" + src #httptag = "http://*****:*****@" #iptag = "jisttrading.no-ip.org:10091" cgitag = "/cgi-bin/faststream.jpg?" #pic_cgi = "/cgi-bin/image.jpg?size=100x75&quality=60" #imgsrc = imgtag + httptag + iptag + cgitag + params params = "stream=full&fps=1.0&error=picture&dummy=" + str( rnd) html = imgtag + cgitag + params + '/>' return html @expose() def indexold(self): redirect('cctvcont/menu') @expose('jistdocstore.templates.cctv.camconnected') def view_connect_came_dir(self, **named): """Handle the 'cam connected' page.""" from tg.decorators import paginate return dict( selfname='view_connected_came_dir', src='192.168.0.11:8080', page='View Connected Server Directory', ) @expose('jistdocstore.templates.cctv.viewaxiscam') @require(in_any_group("managers", )) def viewaxiscam(self): cam1 = camsaxis[0] cam1_stream_src = "http://%s/control/faststream.jpg?stream=full&fps=10.0&dummy=1804289385" % cam1 cams = self.setup5camtopbar() return dict(page='Axis Camera View', cam1=cam1_stream_src, cam2=cams[0], cam3=cams[1], cam4=cams[2], cam5=cams[3], cam6=cams[4], selfname="viewaxiscam") @expose('jistdocstore.templates.cctv.viewvivotekcam') @require(in_any_group("managers", )) def viewvivotekcam(self): cam1 = camsvivotek[0] cam1_stream_src = "http://%s/control/faststream.jpg?stream=full&fps=10.0&dummy=1804289385" % cam1 cams = self.setup5camtopbar() return dict(page='Vivotek Camera View', cam1=cam1_stream_src, cam2=cams[0], cam3=cams[1], cam4=cams[2], cam5=cams[3], cam6=cams[4], selfname="viewvivotekcam") @expose('jistdocstore.templates.cctv.fastframe') @require(in_any_group("managers", )) def getfastframe(self): cam1 = camsmobotix[0] cam1_stream_src = "http://%s/control/faststream.jpg?stream=full&fps=10.0&dummy=1804289385" % cam1 cams = self.setup5camtopbar() return dict(page='Mobotix Camera View', cam1=cam1_stream_src, cam2=cams[0], cam3=cams[1], cam4=cams[2], cam5=cams[3], cam6=cams[4], selfname="getfastframe") @expose('jistdocstore.templates.cctv.getanycam') @require(in_any_group("managers", )) def getanycam(self, thiscamip=None, cambrand=None): if not thiscamip: cam1 = camsmobotix[0] cam1_stream_src = "http://%s/control/faststream.jpg?stream=full&fps=10.0&dummy=1804289385" % cam1 else: cam1 = thiscamip if cambrand == "mob": cam1_stream_src = "http://%s/control/faststream.jpg?stream=full&fps=10.0&dummy=1804289385" % cam1 elif cambrand == "axi": cam1_stream_src = "http://%s/axis-cgi/mjpg/video.cgi?" % cam1 elif cambrand == "viv": cam1_stream_src = "http://%s/video.mjpg" % cam1 else: pass cams = self.setup5camtopbar() return dict(page='Mobotix,Axis,Vivotek Camera View', cam1=cam1_stream_src, cam2=cams[0], cam3=cams[1], cam4=cams[2], cam5=cams[3], cam6=cams[4], selfname="getanycam") expose() def setup5sidebarbar(self): cam2 = camsmobotix[1] cam2_stream_src = "http://%s/control/faststream.jpg?stream=full&fps=10.0&dummy=1804289385" % cam2 cam3 = camsmobotix[2] cam3_stream_src = "http://%s/control/faststream.jpg?stream=full&fps=10.0&dummy=1804289385" % cam3 cam4 = camsmobotix[3] cam4_stream_src = "http://%s/control/faststream.jpg?stream=full&fps=10.0&dummy=1804289385" % cam4 cam5 = camsaxis[0] cam5_stream_src = "http://%s/axis-cgi/mjpg/video.cgi?" % cam5 cam6 = camsvivotek[0] cam6_stream_src = "http://%s/video.mjpg" % cam6 return (cam2_stream_src, cam3_stream_src, cam4_stream_src, cam5_stream_src, cam6_stream_src) expose() def setup5camtopbar(self): cam2 = camsmobotix[1] cam2_stream_src = "http://%s/control/faststream.jpg?stream=full&fps=10.0&dummy=1804289385" % cam2 cam3 = camsmobotix[2] cam3_stream_src = "http://%s/control/faststream.jpg?stream=full&fps=10.0&dummy=1804289385" % cam3 cam4 = camsmobotix[3] cam4_stream_src = "http://%s/control/faststream.jpg?stream=full&fps=10.0&dummy=1804289385" % cam4 cam5 = camsaxis[0] cam5_stream_src = "http://%s/axis-cgi/mjpg/video.cgi?" % cam5 cam6 = camsvivotek[0] cam6_stream_src = "http://%s/video.mjpg" % cam6 return (cam2_stream_src, cam3_stream_src, cam4_stream_src, cam5_stream_src, cam6_stream_src)
def __init__(self, template_norm='', template_xhr='json', **kwargs): self.normal_decorator = expose(template=template_norm, **kwargs) self.xhr_decorator = expose(template=template_xhr, **kwargs)
result = [[y for y in x] for x in resultSet] return result def wsgi_wrap(fn): def call(self): tglocals = request.environ['tg.locals'] def start_response(status, headers, exc_info=None): response.status = status response.headers.update(headers) if exc_info: response.headerlist = exc_info tglocals.request.body = request.environ['request_body'] return fn(self,tglocals.request.environ, start_response) return call exp = expose() class ApiController(BaseController): @expose('json') def index(self): return {"greeting":"Hello."} _process = FindUpstreamAgentsService() _upstream = FindUpstreamAgentsService() _downstream = FindDownstreamTargetsService() _search = TextSearchService() @expose() @wsgi_wrap def process(self,environ, start_response): return self._process(environ, start_response)