def prepare_voucher(code='COUPONTEST',
                    _range=None,
                    start_datetime=None,
                    end_datetime=None,
                    benefit_value=100,
                    benefit_type=Benefit.PERCENTAGE,
                    usage=Voucher.SINGLE_USE,
                    max_usage=None,
                    email_domains=None,
                    enterprise_customer=None,
                    site=None):
    """ Helper function to create a voucher and add an offer to it that contains a product. """

    # NOTE (CCB): We use empty categories here to avoid unique-constraint issues that occur when we use
    # ProductCategoryFactory in conjunction with pre-created Category objects.
    if _range is None:
        product = ProductFactory(categories=[])
        _range = RangeFactory(products=[product],
                              enterprise_customer=enterprise_customer)
    elif _range.num_products() > 0:
        product = _range.all_products()[0]
    else:
        product = ProductFactory(categories=[])

    if start_datetime is None:
        start_datetime = now() - timedelta(days=1)

    if end_datetime is None:
        end_datetime = now() + timedelta(days=10)

    voucher = VoucherFactory(code=code,
                             start_datetime=start_datetime,
                             end_datetime=end_datetime,
                             usage=usage)
    benefit = BenefitFactory(type=benefit_type,
                             range=_range,
                             value=benefit_value)
    condition = ConditionFactory(value=1,
                                 range=_range,
                                 enterprise_customer_uuid=enterprise_customer)
    if max_usage:
        offer = ConditionalOfferFactory(offer_type=ConditionalOffer.VOUCHER,
                                        benefit=benefit,
                                        condition=condition,
                                        max_global_applications=max_usage,
                                        email_domains=email_domains,
                                        priority=OFFER_PRIORITY_VOUCHER)
    else:
        offer = ConditionalOfferFactory(
            offer_type=ConditionalOffer.VOUCHER,
            benefit=benefit,
            condition=condition,
            email_domains=email_domains,
            partner=site.siteconfiguration.partner if site else None,
            priority=OFFER_PRIORITY_VOUCHER)
    voucher.offers.add(offer)
    return voucher, product
    def prepare_voucher(self, range_=None, start_datetime=None, benefit_value=100):
        """ Create a voucher and add an offer to it that contains a created product. """
        if range_ is None:
            product = ProductFactory(title='Test product')
            range_ = RangeFactory(products=[product, ])
        else:
            product = range_.all_products()[0]

        if start_datetime is None:
            start_datetime = now() - datetime.timedelta(days=1)

        voucher = VoucherFactory(code='COUPONTEST', start_datetime=start_datetime, usage=Voucher.SINGLE_USE)
        benefit = BenefitFactory(range=range_, value=benefit_value)
        offer = ConditionalOfferFactory(benefit=benefit)
        voucher.offers.add(offer)
        return voucher, product
Exemple #3
0
    def prepare_voucher(self, range_=None, start_datetime=None, benefit_value=100, benefit_type='Percentage'):
        """ Create a voucher and add an offer to it that contains a created product. """
        if range_ is None:
            product = ProductFactory(title='Test product')
            range_ = RangeFactory(products=[product, ])
        else:
            product = range_.all_products()[0]

        if start_datetime is None:
            start_datetime = now() - datetime.timedelta(days=1)

        voucher = VoucherFactory(code='COUPONTEST', start_datetime=start_datetime, usage=Voucher.SINGLE_USE)
        benefit = BenefitFactory(type=benefit_type, range=range_, value=benefit_value)
        offer = ConditionalOfferFactory(benefit=benefit)
        voucher.offers.add(offer)
        return voucher, product