def save_price(self, obj, price): premium = obj.premium if not premium: premium = AddonPremium() premium.addon = obj premium.price = Price.objects.active().get(price=price) premium.save()
def save_price(self, obj, price): # Only valid for premium apps; don't call this on free ones. valid_prices = Price.objects.exclude( price='0.00').values_list('price', flat=True) if not (price and Decimal(price) in valid_prices): raise serializers.ValidationError( {'price': ['Premium app specified without a valid price. Price can be' ' one of %s.' % (', '.join('"%s"' % str(p) for p in valid_prices),)]}) premium = obj.premium if not premium: premium = AddonPremium() premium.addon = obj premium.price = Price.objects.active().get(price=price) premium.save()
def _make_premium(self): if self.addon.premium: return self.addon.premium log.info('New AddonPremium object for addon %s' % self.addon.pk) self.addon._premium = AddonPremium(addon=self.addon, price_id=self._initial_price_id()) return self.addon._premium
def save(self): if 'price' in self.cleaned_data: premium = self.addon.premium if not premium: premium = AddonPremium() premium.addon = self.addon premium.price = self.cleaned_data['price'] premium.save() upsell = self.addon.upsold if self.cleaned_data['free']: # Check if this app was already a premium version for another app. if upsell and upsell.free != self.cleaned_data['free']: upsell.delete() if not upsell: upsell = AddonUpsell(premium=self.addon) upsell.free = self.cleaned_data['free'] upsell.save() elif upsell: upsell.delete() self.addon.update(make_public=self.cleaned_data['make_public'])
def test_is_complete(self): self.addon.support_email = '*****@*****.**' ap = AddonPremium(addon=self.addon) assert not ap.is_complete() ap.price = self.tier_one assert ap.is_complete()