def create_code(self): discounts = Discount.objects.all() code = self._code_build() while len(discounts.filter(code=code)): #print "found matching code %s" % code code = self._code_build() d = Discount() d.site = Site.objects.all()[0] d.description = u"Discount for %s" % self.name d.code = code d.active = True d.percentage = 100 d.allowedUses = 1 d.allValid = False d.startDate = datetime.now() d.endDate = datetime.now() + timedelta(days=30) d.shipping = 'FREE' d.save() # All free products for p in ProductAttribute.objects.filter( option__name='Free', value="YES" ): d.valid_products.add( p.product ) d.save() self.discount_code = code return code