class DefaultWithArgsAndValidatorsController(TGController): @expose() def failure(self, *args, **kw): return "failure" @expose() @validate(dict(a=validators.Int(), b=validators.StringBool()), error_handler=failure) def _default(self, a, b=None, **kw): return "default with args and validators %s %s" % (a, b)
class BasicTGController(TGController): mounted_app = WSGIAppController(wsgi_app) xml_rpc = WSGIAppController(XMLRpcTestController()) error_controller = RemoteErrorHandler() lookup = LookupController() lookup_with_args = LookupControllerWithArgs() lookup_with_sub = LookupControllerWithSubcontroller() self_calling = SelfCallingLookupController() @expose() def use_wsgi_app(self): return tg.use_wsgi_app(wsgi_app) @expose(content_type='application/rss+xml') def ticket2351(self, **kw): return 'test' @expose() def index(self, **kwargs): return 'hello world' @expose(content_type='application/rss+xml') def index_unicode(self): tg.response.charset = None return u_('Hello World') @expose() def _default(self, *remainder): return "Main default page called for url /%s" % [ str(r) for r in remainder ] @expose() def response_responded(self): tg.response.body = b'Body Response' tg.response.content_type = 'text/plain' tg.response.charset = 'utf-8' return tg.response @expose() def feed(self, feed=None): return feed sub = SubController() sub2 = SubController2() sub3 = SubController3() sub4 = SubController4() sub5 = SubController5() embedded_lookup = LookupWithEmbeddedLookupController() embedded_lookup_with_index = LookupWithEmbeddedLookupWithHelperWithIndex() @expose() def test_args(self, name, one=None, two=2, three=3): return "name=%s, one=%s, two=%s, three=%s" % (name, one, two, three) @expose() def redirect_me(self, target, **kw): tg.redirect(target, kw) @expose() def hello(self, name, silly=None): return "Hello " + name @expose() def optional_and_req_args(self, name, one=None, two=2, three=3): return "name=%s, one=%s, two=%s, three=%s" % (name, one, two, three) @expose() def ticket2412(self, arg1): return arg1 @expose() def redirect_cookie(self, name): tg.response.set_cookie('name', name) tg.redirect('/hello_cookie') @expose() def hello_cookie(self): return "Hello " + tg.request.cookies['name'] @expose() def flash_redirect(self): tg.flash("Wow, flash!") tg.redirect("/flash_after_redirect") @expose() def flash_unicode(self): tg.flash(u_("Привет, мир!")) tg.redirect("/flash_after_redirect") @expose() def flash_after_redirect(self): return tg.get_flash() @expose() def flash_status(self): return tg.get_status() @expose() def flash_no_redirect(self): tg.flash("Wow, flash!") return tg.get_flash() @expose('json') @validate(validators=dict(some_int=validators.Int())) def validated_int(self, some_int): assert isinstance(some_int, int) return dict(response=some_int) @expose('json') @validate(validators=dict(a=validators.Int())) def validated_and_unvalidated(self, a, b): assert isinstance(a, int) assert isinstance(b, unicode_text) return dict(int=a, str=b) @expose() def error_handler(self, **kw): return 'validation error handler' @expose('json') @validate(validators=dict(a=validators.Int()), error_handler=error_handler) def validated_with_error_handler(self, a, b): assert isinstance(a, int) assert isinstance(b, unicode_text) return dict(int=a, str=b) @expose('json') @validate(validators=dict(a=validators.Int()), error_handler=error_controller.errors_here) def validated_with_remote_error_handler(self, a, b): assert isinstance(a, int) assert isinstance(b, unicode_text) return dict(int=a, str=b) @expose() @expose('json') def stacked_expose(self): return dict(got_json=True) @expose('json') def bad_json(self): return [(1, 'a'), 'b'] @expose() def custom_content_type_in_controller(self): tg.response.headers['content-type'] = 'image/png' return b'PNG' @expose('json', content_type='application/json') def custom_content_type_in_controller_charset(self): tg.response.headers['content-type'] = 'application/json; charset=utf-8' return dict(result='TXT') @expose(content_type='image/png') def custom_content_type_in_decorator(self): return b'PNG' @expose() def test_204(self, *args, **kw): from webob.exc import HTTPNoContent raise HTTPNoContent() @expose() def custom_content_type_replace_header(self): replace_header(tg.response.headerlist, 'Content-Type', 'text/xml') return "<?xml version='1.0'?>" @expose() def multi_value_kws(sekf, *args, **kw): assert kw['foo'] == ['1', '2'], kw @expose() def with_routing_args(self, **kw): return str(tg.request._controller_state.routing_args) @expose('json') def get_response_type(self): return dict(ctype=tg.request.response_type) @expose() def hello_ext(self, *args): return str(tg.request.response_ext)
class RootController(TGController): @expose() def index(self, **kwargs): return 'hello world' @expose() def _default(self, remainder): return "Main Default Page called for url /%s" % remainder @expose() def feed(self, feed=None): return feed sub = SubController() sub2 = SubController2() @expose() def redirect_me(self, target, **kw): tg.redirect(target, kw) @expose() def hello(self, name, silly=None): return "Hello " + name @expose() def redirect_cookie(self, name): tg.response.set_cookie('name', name) tg.redirect('/hello_cookie') @expose() def hello_cookie(self): return "Hello " + tg.request.cookies['name'] @expose() def flash_redirect(self): tg.flash("Wow, <br/>flash!") tg.redirect("/flash_after_redirect") @expose() def flash_render(self, using_js=False, with_message=True): if asbool(with_message): tg.flash('JS <br/>Flash') return tg.flash.render('flash', asbool(using_js)) @expose() def bigflash_redirect(self): tg.flash('x' * 5000) tg.redirect('/flash_after_redirect') @expose() def flash_unicode(self): tg.flash("Привет, мир!") tg.redirect("/flash_after_redirect") @expose() def flash_after_redirect(self): return tg.get_flash() @expose() def flash_status(self): return tg.get_status() @expose() def flash_no_redirect(self): tg.flash("Wow, flash!") return tg.get_flash() @expose('json') @validate(validators={"some_int": validators.Int()}) def validated_int(self, some_int): assert isinstance(some_int, int) return dict(response=some_int) @expose('json') @validate(validators={"a": validators.Int()}) def validated_and_unvalidated(self, a, b): assert isinstance(a, int) assert isinstance(b, unicode_text) return dict(int=a, str=b) @expose() @expose('json') def stacked_expose(self, tg_format=None): return dict(got_json=True) @expose('json') def json_return_list(self): return [1, 2, 3] @expose(content_type='image/png') def custom_content_type(self): return b'PNG' @expose() def custom_content_type2(self): tg.response.content_type = 'image/png' return b'PNG2' @expose(content_type='text/plain') def custom_content_text_plain_type(self): return 'a<br/>bx' @expose() def check_params(self, *args, **kwargs): if not args and not kwargs: return "None recieved" else: return "Controler recieved: %s, %s" % (args, kwargs) @expose() def test_url_sop(self): from tg import url eq_('/foo', url('/foo')) u = url("/foo", params=dict(bar=1, baz=2)) assert u in \ ["/foo?bar=1&baz=2", "/foo?baz=2&bar=1"], u @https @expose() def test_https(self, **kw): return '' @expose('json') @variable_decode def test_vardec(self, **kw): return kw @expose('mako:echo.mak') def echo(self): return dict() @expose() @with_trailing_slash def with_tslash(self): return 'HI' @expose() @without_trailing_slash def without_tslash(self): return 'HI' @expose() @with_engine('mainslave') def onmaster_without_params(self, **kw): return '%s-%s' % (tg.request._tg_force_sqla_engine, kw) @expose() @with_engine('mainslave', master_params=['first']) def onmaster_withlist(self, **kw): return '%s-%s' % (tg.request._tg_force_sqla_engine, kw) @expose() @with_engine('mainslave', master_params={'first': True, 'second': False}) def onmaster(self, **kw): return '%s-%s' % (tg.request._tg_force_sqla_engine, kw)