def apply_rule_set(item, provider, rule_set=None): """Applies rules set on the item to be ingested into the system. If there's no rule set then the item will be returned without any change. :param item: Item to be ingested :param provider: provider object from whom the item was received :return: item """ try: if rule_set is None and provider.get('rule_set') is not None: rule_set = superdesk.get_resource_service('rule_sets').find_one(_id=provider['rule_set'], req=None) if rule_set and 'body_html' in item: body = item['body_html'] for rule in rule_set['rules']: body = body.replace(rule['old'], rule['new']) item['body_html'] = body return item except Exception as ex: raise ProviderError.ruleError(ex, provider)
def apply_rule_set(item, provider, rule_set=None): """ Applies rules set on the item to be ingested into the system. If there's no rule set then the item will be returned without any change. :param item: Item to be ingested :param provider: provider object from whom the item was received :return: item """ try: if rule_set is None and provider.get('rule_set') is not None: rule_set = superdesk.get_resource_service('rule_sets').find_one( _id=provider['rule_set'], req=None) if rule_set and 'body_html' in item: body = item['body_html'] for rule in rule_set['rules']: body = body.replace(rule['old'], rule['new']) item['body_html'] = body return item except Exception as ex: raise ProviderError.ruleError(ex, provider)
def test_raise_ruleError(self): with assert_raises(ProviderError) as error_context: try: ex = Exception("Testing ruleError") raise ex except Exception: raise ProviderError.ruleError(ex, self.provider) exception = error_context.exception self.assertTrue(exception.code == 2003) self.assertTrue(exception.message == "Rule could not be applied") self.assertIsNotNone(exception.system_exception) self.assertEqual(exception.system_exception.args[0], "Testing ruleError") self.assertEqual(len(self.mock_logger_handler.messages['error']), 1) self.assertEqual(self.mock_logger_handler.messages['error'][0], "ProviderError Error 2003 - Rule could not be applied: " "Testing ruleError on channel TestProvider")