Example #1
0
    def update_price(self, new_price):
        # Ignore the update if it's the same as what we've got.
        if new_price == self.set_price:
            return

        if self.provider == "bango":
            # Get the Bango number for this product.
            res = client.get_product_bango(data=self.product_uri)
            bango_number = res["bango"]

            AddonPaymentAccount._push_bango_premium(bango_number, self.product_uri, new_price)

            self.update(set_price=new_price)
Example #2
0
    def _create_bango(cls, product_uri, addon, payment_account, secret):
        if not payment_account.bango_package_id:
            raise NotImplementedError('Currently we only support Bango '
                                      'so the associated account must '
                                      'have a bango_package_id')
        res = None
        if product_uri:
            data = {'seller_product': cls.uri_to_pk(product_uri)}
            query = client.get_product_bango(filters=data)
            if query['meta']['total_count'] > 1:
                # This probably meanst that Solitude
                # ignored one of our filter parameters.
                log.info('AddonPaymentAccount bango product result: %s' % query)
                raise ValueError('Multiple products returned for %s' % data)
            elif query['meta']['total_count'] == 1:
                # The product already exists in Solitude so use it.
                res = query['objects'][0]

        if not res:
            # The product does not exist in Solitude so create it.
            res = client.post_product_bango(data={
                'seller_bango': payment_account.uri,
                'seller_product': product_uri,
                'name': addon.name,
                'packageId': payment_account.bango_package_id,
                'categoryId': 1,
                'secret': secret
            })

        product_uri = res['resource_uri']
        bango_number = res['bango_id']

        # TODO(Kumar) check if this bango product is already premium
        # before trying to create it. Bug 824751.
        cls._push_bango_premium(
            bango_number, product_uri, float(addon.addonpremium.price.price))

        return product_uri
Example #3
0
    def _create_bango(cls, product_uri, addon, payment_account, secret):
        if not payment_account.bango_package_id:
            raise NotImplementedError(
                "Currently we only support Bango " "so the associated account must " "have a bango_package_id"
            )
        res = None
        if product_uri:
            data = {"seller_product": cls.uri_to_pk(product_uri)}
            query = client.get_product_bango(filters=data)
            if query["meta"]["total_count"] > 1:
                # This probably means that Solitude
                # ignored one of our filter parameters.
                log.info("AddonPaymentAccount bango product result: %s" % query)
                raise ValueError("Multiple products returned for %s" % data)
            elif query["meta"]["total_count"] == 1:
                # The product already exists in Solitude so use it.
                res = query["objects"][0]

        if not res:
            # The product does not exist in Solitude so create it.
            res = client.post_product_bango(
                data={
                    "seller_bango": payment_account.uri,
                    "seller_product": product_uri,
                    "name": addon.name,
                    "packageId": payment_account.bango_package_id,
                    "categoryId": 1,
                    "secret": secret,
                }
            )

        product_uri = res["resource_uri"]
        bango_number = res["bango_id"]

        # If the app is already premium this does nothing.
        cls._push_bango_premium(bango_number, product_uri, float(addon.addonpremium.price.price))

        return product_uri