def apply_draft_rules(self, data, session, curs=None): t_f = TariffFilter(session, {'id': data['tariff_id']}, {}, None) t_f.filter_one_obj(curs) f = RuleFilter(session, {'tariff_id': data['tariff_id']}, {}, ['id']) rs = f.filter_objs(curs, for_update=True) checker = RuleChecker() for r in rs: if r.draft_rule: checker.check(r.draft_rule) r.rule = r.draft_rule r.draft_rule = None mapping.update(curs, r) return response_ok()
def save_rule(self, data, session, curs=None): all_t_f = TariffFilter(session, {}, {}, None) all_ts = all_t_f.filter_objs(curs) all_ts_idx = build_index(all_ts) all_to_f = TarifficationObjectFilter(session, {}, {}, None) all_tos = all_to_f.filter_objs(curs) all_tos_idx = build_index(all_tos) all_r_f = RuleFilter(session, {}, {}, None) all_rs = all_r_f.filter_objs(curs) all_rs_idx = build_index(all_rs) r_data = { 'environment_id': session.environment_id, 'tariff_id': data['tariff_id'], 'status': data['status'], 'tariffication_object_id': data['tariffication_object_id'], 'draft_rule': data['draft_rule'] } r_data['view_order'] = data.get('view_order', 0) rule_id = data.get('id') if rule_id: r_data['id'] = rule_id r = Rule(**r_data) if rule_id and rule_id not in all_rs_idx: raise RuleNotFound(id=rule_id) if r.tariff_id not in all_ts_idx: raise TariffNotFound(rule_id=rule_id, tariff_id=r.tariff_id) if r.tariffication_object_id not in all_tos_idx: raise TarifficationObjectNotFound( rule_id=rule_id, tariffication_object_id=r.tariffication_object_id) checker = RuleChecker() checker.check(r.draft_rule) try: mapping.save(curs, r) except ObjectCreationError: raise RuleAlreadyExsits(r) return response_ok(id=r.id)
def save_rule(self, data, session, curs=None): all_t_f = TariffFilter(session, {}, {}, None) all_ts = all_t_f.filter_objs(curs) all_ts_idx = build_index(all_ts) all_to_f = TarifficationObjectFilter(session, {}, {}, None) all_tos = all_to_f.filter_objs(curs) all_tos_idx = build_index(all_tos) all_r_f = RuleFilter(session, {}, {}, None) all_rs = all_r_f.filter_objs(curs) all_rs_idx = build_index(all_rs) r_data = {'environment_id': session.environment_id, 'tariff_id': data['tariff_id'], 'status': data['status'], 'tariffication_object_id': data['tariffication_object_id'], 'draft_rule': data['draft_rule']} r_data['view_order'] = data.get('view_order', 0) rule_id = data.get('id') if rule_id: r_data['id'] = rule_id r = Rule(**r_data) if rule_id and rule_id not in all_rs_idx: raise RuleNotFound(id=rule_id) if r.tariff_id not in all_ts_idx: raise TariffNotFound(rule_id=rule_id, tariff_id=r.tariff_id) if r.tariffication_object_id not in all_tos_idx: raise TarifficationObjectNotFound(rule_id=rule_id, tariffication_object_id=r.tariffication_object_id) checker = RuleChecker() checker.check(r.draft_rule) try: mapping.save(curs, r) except ObjectCreationError: raise RuleAlreadyExsits(r) return response_ok(id=r.id)
def process(request): price = None checker = RuleChecker() checker.check(request.rule) exec request.rule return ResponsePrice(price)