X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=bluechips%2Flib%2Fbase.py;h=586336c3a351ff1c25ce3f14f01624601cc8d03e;hb=01eb085c206c4ba88045fb88a2f1076622bd2585;hp=19129d432671a110d4186fad7873f4d4d70e8f76;hpb=235ad83ce04a5ad0b6fae19715ded53a37e26f2e;p=bluechips.git diff --git a/bluechips/lib/base.py b/bluechips/lib/base.py index 19129d4..586336c 100644 --- a/bluechips/lib/base.py +++ b/bluechips/lib/base.py @@ -2,7 +2,9 @@ Provides the BaseController class for subclassing. """ -from pylons import tmpl_context as c +from decorator import decorator + +from pylons import request, tmpl_context as c from pylons.controllers import WSGIController from pylons.i18n import _, ungettext, N_ from pylons.templating import render_mako as render @@ -31,5 +33,21 @@ def update_sar(record, form_result): for key, value in form_result.items(): setattr(record, key, value) +def redirect_on_get(action): + """ + Decorator for a controller action. If the action is called with a GET + method, 302 redirect to the action specified. + """ + + @decorator + def redirect_on_get_wrap(func, *args, **kwargs): + if request.method == 'GET': + controller = request.environ['pylons.routes_dict']['controller'] + return h.redirect_to(controller=controller, action=action) + else: + return func(*args, **kwargs) + return redirect_on_get_wrap + + __all__ = ['c', 'h', 'render', 'model', 'meta', '_', 'ungettext', 'N_', - 'BaseController', 'update_sar'] + 'BaseController', 'update_sar', 'redirect_on_get']