# -*- coding: utf-8 -*- import tg, pylons from tg.controllers import TGController, CUSTOM_CONTENT_TYPE from tg.decorators import expose, validate from formencode import validators from tg import expose, redirect, config from tg.controllers import TGController from nose.tools import eq_ class SubController(object): @expose() def foo(self,): return 'sub_foo' @expose() def index(self): return 'sub index' @expose() def default(self, *args): return ("recieved the following args (from the url): %s" %list(args)) @expose() def redirect_me(self, target, **kw): tg.redirect(target, **kw) @expose() def redirect_sub(self): tg.redirect('index') @expose() def redirect_list(self): tg.redirect(["/sub2", "list"]) @expose() def hello(self, name): return "Why HELLO! " + name class LookupController(TGController): @expose() def findme(self, *args, **kw): return 'got to lookup' class SubController2(object): @expose() def index(self): tg.redirect('list') @expose() def list(self, **kw): return "hello list" @expose() def lookup(self, *args): lookup = LookupController() return lookup, args 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): pylons.response.set_cookie('name', name) tg.redirect('/hello_cookie') @expose() def hello_cookie(self): return "Hello " + pylons.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={"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) return dict(int=a,str=b) @expose() @expose('json') def stacked_expose(self, tg_format=None): return dict(got_json=True) @expose(content_type='image/png') def custom_content_type(self): return 'PNG' @expose(content_type='text/plain') def custom_content_text_plain_type(self): return 'a
bx' @expose(content_type=CUSTOM_CONTENT_TYPE) def custom_content_type2(self): pylons.response.headers['Content-Type'] = 'image/png' return 'PNG2' @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", bar=1, baz=2) assert u in \ ["/foo?bar=1&baz=2", "/foo?baz=2&bar=1"], u