def __call__(self, func): def check_method(remainder, params): if request.method != 'POST': if self.redir is not None: redirect(self.redir) raise exc.HTTPMethodNotAllowed(headers={'Allow':'POST'}) before_validate(check_method)(func) return func
def vardec(fun): def vardec_hook(remainder, params): new_params = variable_decode(dict( (k, v) for k, v in params.items() if re_clean_vardec_key.match(k))) params.update(new_params) before_validate(vardec_hook)(fun) return fun
def __call__(self, func): def check_method(remainder, params): if request.method != 'POST': if self.redir is not None: redirect(self.redir) raise exc.HTTPMethodNotAllowed(headers={str('Allow'): str('POST')}) before_validate(check_method)(func) return func
def validate(cls, error_msg): '''Controller decorator to raise Invalid errors if bot protection is engaged''' def antispam_hook(remainder, params): '''Converts various errors in validate_request to a single Invalid message''' try: new_params = cls.validate_request(params=params) params.update(new_params) except (ValueError, TypeError, binascii.Error): raise Invalid(error_msg, params, None) return before_validate(antispam_hook)
def validate(cls, error_msg): '''Controller decorator to raise Invalid errors if bot protection is engaged''' def antispam_hook(remainder, params): '''Converts various errors in validate_request to a single Invalid message''' try: new_params = cls.validate_request(params=params) params.update(new_params) except (ValueError, TypeError, binascii.Error): testing = pylons.request.environ.get('paste.testing', False) if testing: # re-raise so we can see problems more easily raise else: # regular antispam failure handling raise Invalid(error_msg, params, None) return before_validate(antispam_hook)
def validate(cls, error_msg, error_url=None): '''Controller decorator to raise Invalid errors if bot protection is engaged''' def antispam_hook(remainder, params): '''Converts various errors in validate_request to a single Invalid message''' try: new_params = cls.validate_request(params=params) params.update(new_params) if tg.request.POST: # request.params is immutable, but will reflect changes to request.POST tg.request.POST.update(new_params) except (ValueError, TypeError, binascii.Error): testing = tg.request.environ.get('paste.testing', False) if testing and not tg.request.environ.get('regular_antispam_err_handling_even_when_tests'): # re-raise so we can see problems more easily raise else: # regular antispam failure handling tg.flash(error_msg, 'error') redirect(error_url or six.ensure_text(tg.request.referer or '.')) return before_validate(antispam_hook)
def validate(cls, error_msg, error_url=None): '''Controller decorator to raise Invalid errors if bot protection is engaged''' def antispam_hook(remainder, params): '''Converts various errors in validate_request to a single Invalid message''' try: new_params = cls.validate_request(params=params) params.update(new_params) if tg.request.POST: # request.params is immutable, but will reflect changes to request.POST tg.request.POST.update(new_params) except (ValueError, TypeError, binascii.Error): testing = tg.request.environ.get('paste.testing', False) if testing and not tg.request.environ.get('regular_antispam_err_handling_even_when_tests'): # re-raise so we can see problems more easily raise else: # regular antispam failure handling tg.flash(error_msg, 'error') redirect(error_url or tg.request.referer or '.') return before_validate(antispam_hook)
# Use my bootstrap-enabled template override_template(FilterCrudRestController.edit, 'mako:sauce.templates.crc.edit') @staticmethod def injector(remainder, params): '''Injects the modifiers from self.inject into params self.inject has to be a dictionary of key, object pairs ''' # Get currently dispatched controller instance # Does not work, only returns last statically dispatch controller, # but we use _lookup in EventsController #s = dispatched_controller() self = request.controller_state.controller for k in getattr(self, 'inject', dict()): log.info('Injecting %r = %r into params %r for %r', k, self.inject[k], params, self.model) params[k] = self.inject[k] # Register injection hook for POST requests before_validate(FilterCrudRestController.injector)(FilterCrudRestController.post) # Register hook for get_all before_render(FilterCrudRestController.before_render_get_all)(FilterCrudRestController.get_all) # Register hook for new before_render(FilterCrudRestController.before_render_new)(FilterCrudRestController.new) # Register hook for edit before_render(FilterCrudRestController.before_render_edit)(FilterCrudRestController.edit)
@staticmethod def injector(remainder, params): '''Injects the objects from self.inject into params self.inject has to be a dictionary of key, object pairs ''' # Get currently dispatched controller instance # Does not work, only returns last statically dispatch controller, # but we use _lookup in EventsController #s = dispatched_controller() self = request.controller_state.controller for k in getattr(self, 'inject', []): params[k] = self.inject[k] # Register injection hook for POST requests before_validate(FilterCrudRestController.injector)( FilterCrudRestController.post) # Register hook for get_all before_render(FilterCrudRestController.before_get_all)( FilterCrudRestController.get_all) # Register hook for new before_render(FilterCrudRestController.before_new)( FilterCrudRestController.new) # Register hook for edit before_render(FilterCrudRestController.before_edit)( FilterCrudRestController.edit)