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 tw.mods.pylonshf import render, render_response, validate, valid
+from pylons.templating import render_mako as render
import bluechips.lib.helpers as h
from bluechips import model
from bluechips.model import meta
-from paste.request import construct_url
-from paste.httpexceptions import HTTPMovedPermanently
class BaseController(WSGIController):
# WSGIController.__call__ dispatches to the Controller method
# the request is routed to. This routing information is
# available in environ['pylons.routes_dict']
- if environ['pylons.routes_dict']['controller'] != 'error':
- if environ['PATH_INFO'].endswith('/index'):
- environ['PATH_INFO'] = environ['PATH_INFO'][:-5]
- raise HTTPMovedPermanently(construct_url(environ))
- if not environ['PATH_INFO'].endswith('/') and \
- environ['pylons.routes_dict']['action'] == 'index':
- environ['PATH_INFO'] += '/'
- raise HTTPMovedPermanently(construct_url(environ))
try:
return WSGIController.__call__(self, environ, start_response)
finally:
for key, value in form_result.items():
setattr(record, key, value)
-__all__ = ['c', 'h', 'render', 'render_response', 'validate', 'valid',
- 'model', 'meta', '_', 'ungettext', 'N_', 'BaseController',
- 'update_sar']
+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', 'redirect_on_get']