odeoo.py 2.1 KB
import base64
import json

import requests
from opensipkd.base import get_settings
from opensipkd.base.models import Partner
from opensipkd.pasar.models import PartnerProduk, Produk, PartnerLog, flush_row
from pyramid.view import view_config
from pyramid_rpc.jsonrpc import JsonRpcError

from .vendor import VendorClass



class Vendor(VendorClass):
    def __init__(self, product_kd, cid):
        VendorClass.__init__(self, product_kd, cid)
        settings = get_settings()
        self.mid = 'odeoo_cid' in settings and settings['odeo_cid'] or None
        self.key = 'odeoo_key' in settings and settings['odeoo_key'] or None
        self.url = 'odeoo_url' in settings and settings['odeoo_url'] or None
        self.cid = cid
        key = ":".join([self.cid, self.key])
        self.auth = base64.b64encode(key)
        qry = PartnerProduk.query()\
            .join(Partner, Partner.id==PartnerProduk.partner_id)\
            .join(Produk, Produk.id==PartnerProduk.produk_id)\
            .filter(Produk.kode == product_kd,
                    Partner.kode == "odeoo")
        row = qry.first()
        self.product_kd = row and row.kode or None

    def inquiry(self):
        pass

    def payment(self):
        # request = Request('https://api.odeo.co.id/v1/affiliate/prepaid/purchase', data=values, headers=headers)
        #
        # response_body = urlopen(request).read()
        # print
        # response_body
        #
        """
        Digunakan untuk melakukan inquory ke server odeoo

        :return:
        """

        if not self.product_kd or not self.cid:
            return

        params = dict(
            data=dict(
                denom=self.product_kd,
                number=self.cid
            )
        )
        with requests.session():
            headers = {'Authorization': 'Bearer {key}'.format(key=self.key)}
            resp = requests.post(url=self.url, data=json.dump(params, None),
                                 verify=False, headers=headers)
            content = resp.json()
            if resp != "200":
                raise JsonRpcError(data=content)
            return content
        return