Example #1
0
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)
Example #2
0
 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
Example #3
0
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)
Example #4
0
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
Example #5
0
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
Example #6
0
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
Example #7
0
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
Example #8
0
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'
Example #10
0
    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
Example #11
0
    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"
Example #13
0
    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
Example #14
0
    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
Example #15
0
    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
Example #16
0
    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):
Example #17
0
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&amp;fps=10.0&amp;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&amp;fps=1.0&amp;error=picture&amp;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&amp;fps=1.0&amp;error=picture&amp;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&amp;fps=1.0&amp;error=picture&amp;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&amp;fps=10.0&amp;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&amp;fps=10.0&amp;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&amp;fps=10.0&amp;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&amp;fps=10.0&amp;dummy=1804289385" % cam1
        else:
            cam1 = thiscamip
            if cambrand == "mob":
                cam1_stream_src = "http://%s/control/faststream.jpg?stream=full&amp;fps=10.0&amp;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&amp;fps=10.0&amp;dummy=1804289385" % cam2
        cam3 = camsmobotix[2]
        cam3_stream_src = "http://%s/control/faststream.jpg?stream=full&amp;fps=10.0&amp;dummy=1804289385" % cam3
        cam4 = camsmobotix[3]
        cam4_stream_src = "http://%s/control/faststream.jpg?stream=full&amp;fps=10.0&amp;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&amp;fps=10.0&amp;dummy=1804289385" % cam2
        cam3 = camsmobotix[2]
        cam3_stream_src = "http://%s/control/faststream.jpg?stream=full&amp;fps=10.0&amp;dummy=1804289385" % cam3
        cam4 = camsmobotix[3]
        cam4_stream_src = "http://%s/control/faststream.jpg?stream=full&amp;fps=10.0&amp;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)
Example #18
0
 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)
Example #19
0
        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)