Exemple #1
0
    def add_tariff(self, data, session, curs=None):
        # checking parent tariff exist
        pt_id = data['parent_tariff_id']
        currency = data.get('currency', None)
        t_data = {
            'environment_id': session.environment_id,
            'parent_tariff_id': pt_id,
            'name': data['name'],
            'type': data['type'],
            'status': data['status']
        }
        if pt_id is not None:
            if currency is not None:
                raise NonParentTariffWithCurrency
            else:
                t_f = TariffFilter(session, {'id': pt_id}, {}, None)
                t_f.filter_one_obj(curs)
        elif currency is None:
            raise ParentTariffWithoutCurrency
        else:
            c_f = CurrencyFilter({'code': currency}, {}, None)
            c = c_f.filter_one_obj(curs)
            t_data['currency_id'] = c.id

        t = Tariff(**t_data)

        mapping.insert(curs, t)
        return response_ok(id=t.id)
Exemple #2
0
    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()
Exemple #3
0
    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()
Exemple #4
0
    def add_tariff_viewing_context(self, data, session, curs=None):
        # checking parent tariff exist
        t_id = data['tariff_id']
        t_f = TariffFilter(session, {'id': t_id}, {}, None)
        t_f.filter_one_obj(curs)

        raw_ctx = data['context']
        ctx = self._collapse_context(raw_ctx)
        t_v_data = {'environment_id': session.environment_id,
            'tariff_id': t_id, 'name': data['name'],
            'view_order': data['view_order'], 'context': ctx}

        t_v_ctx = TariffViewingContext(**t_v_data)
        mapping.insert(curs, t_v_ctx)
        return response_ok(id=t_v_ctx.id)
Exemple #5
0
 def delete_tariff(self, data, session, curs=None):
     f = TariffFilter(session, {'id': data['id']}, {}, None)
     try:
         mapping.delete(curs, f.filter_one_obj(curs))
     except ObjectDeletionError:
         raise TariffUsed('Tariff %s used' % data['id'])
     return response_ok()
Exemple #6
0
    def add_user_tariff(self, data, session, curs=None):
        # checking tariff exist
        t_id = data['tariff_id']
        u_id = data['user_id']
        if t_id:
            t_f = TariffFilter(session, {'id': t_id}, {}, None)
            t_f.filter_one_obj(curs)

        ut_data = {'environment_id': session.environment_id,
            'tariff_id': t_id, 'user_id': u_id}
        ut = UserTariff(**ut_data)
        try:
            mapping.insert(curs, ut)
        except ObjectCreationError:
            raise UserTariffAlreadyExsits(tariff_id=t_id, user_id=u_id)
        return response_ok(id=ut.id)
Exemple #7
0
    def modify_tariff_viewing_context(self, data, session, curs=None):
        f = TariffViewingContextFilter(session, {'id': data.get('id')}, {}, None)
        loader = partial(f.filter_one_obj, curs, for_update=True)

        if 'new_tariff_id' in data:
            t_id = data.get('new_tariff_id')
            t_f = TariffFilter(session, {'id': t_id}, {}, None)
            t_f.filter_one_obj(curs)

        if 'new_context' in data:
            data['new_context'] = self._collapse_context(data['new_context'])
            data = mapping.objects.serialize_field(data, 'new_context',
                'new_serialized_context')

        self.update_obj(curs, data, loader)
        return response_ok()
Exemple #8
0
 def delete_tariff(self, data, session, curs=None):
     f = TariffFilter(session, {'id': data['id']}, {}, None)
     try:
         mapping.delete(curs, f.filter_one_obj(curs))
     except ObjectDeletionError:
         raise TariffUsed('Tariff %s used' % data['id'])
     return response_ok()
Exemple #9
0
    def modify_tariff_viewing_context(self, data, session, curs=None):
        f = TariffViewingContextFilter(session, {'id': data.get('id')}, {},
                                       None)
        loader = partial(f.filter_one_obj, curs, for_update=True)

        if 'new_tariff_id' in data:
            t_id = data.get('new_tariff_id')
            t_f = TariffFilter(session, {'id': t_id}, {}, None)
            t_f.filter_one_obj(curs)

        if 'new_context' in data:
            data['new_context'] = self._collapse_context(data['new_context'])
            data = mapping.objects.serialize_field(data, 'new_context',
                                                   'new_serialized_context')

        self.update_obj(curs, data, loader)
        return response_ok()
Exemple #10
0
    def add_user_tariff(self, data, session, curs=None):
        # checking tariff exist
        t_id = data['tariff_id']
        u_id = data['user_id']
        if t_id:
            t_f = TariffFilter(session, {'id': t_id}, {}, None)
            t_f.filter_one_obj(curs)

        ut_data = {
            'environment_id': session.environment_id,
            'tariff_id': t_id,
            'user_id': u_id
        }
        ut = UserTariff(**ut_data)
        try:
            mapping.insert(curs, ut)
        except ObjectCreationError:
            raise UserTariffAlreadyExsits(tariff_id=t_id, user_id=u_id)
        return response_ok(id=ut.id)
Exemple #11
0
    def add_tariff_viewing_context(self, data, session, curs=None):
        # checking parent tariff exist
        t_id = data['tariff_id']
        t_f = TariffFilter(session, {'id': t_id}, {}, None)
        t_f.filter_one_obj(curs)

        raw_ctx = data['context']
        ctx = self._collapse_context(raw_ctx)
        t_v_data = {
            'environment_id': session.environment_id,
            'tariff_id': t_id,
            'name': data['name'],
            'view_order': data['view_order'],
            'context': ctx
        }

        t_v_ctx = TariffViewingContext(**t_v_data)
        mapping.insert(curs, t_v_ctx)
        return response_ok(id=t_v_ctx.id)
Exemple #12
0
    def add_tariff(self, data, session, curs=None):
        # checking parent tariff exist
        pt_id = data['parent_tariff_id']
        currency = data.get('currency', None)
        t_data = {'environment_id': session.environment_id,
            'parent_tariff_id': pt_id, 'name': data['name'],
            'type': data['type'], 'status': data['status']}
        if pt_id is not None:
            if currency is not None:
                raise NonParentTariffWithCurrency
            else:
                t_f = TariffFilter(session, {'id': pt_id}, {}, None)
                t_f.filter_one_obj(curs)
        elif currency is None:
            raise ParentTariffWithoutCurrency
        else:
            c_f = CurrencyFilter({'code': currency}, {}, None)
            c = c_f.filter_one_obj(curs)
            t_data['currency_id'] = c.id

        t = Tariff(**t_data)

        mapping.insert(curs, t)
        return response_ok(id=t.id)