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)
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
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