コード例 #1
0
def create_on_campus_category(apps, schema_editor):
    """ Create on-campus coupon category """
    Category = apps.get_model("catalogue", "Category")

    Category.skip_history_when_saving = True
    create_subcategories(Category, COUPON_CATEGORY_NAME, [ON_CAMPUS_CATEGORY, ])
コード例 #2
0
ファイル: conftest.py プロジェクト: raccoongang/ecommerce
def django_db_setup(django_db_setup, django_db_blocker,
                    django_db_use_migrations):
    if django_db_use_migrations:
        return

    with django_db_blocker.unblock():
        BasketAttributeType = get_model('basket', 'BasketAttributeType')
        Category = get_model("catalogue", "Category")
        ProductAttribute = get_model("catalogue", "ProductAttribute")
        ProductClass = get_model("catalogue", "ProductClass")
        Option = get_model("catalogue", "Option")
        EcommerceFeatureRole = get_model('core', 'EcommerceFeatureRole')
        Condition = get_model('offer', 'Condition')
        Benefit = get_model('offer', 'Benefit')
        ConditionalOffer = get_model('offer', 'ConditionalOffer')

        BasketAttributeType.objects.get_or_create(name=EMAIL_OPT_IN_ATTRIBUTE)
        BasketAttributeType.objects.get_or_create(
            name=PURCHASER_BEHALF_ATTRIBUTE)
        BasketAttributeType.objects.get_or_create(name=BUNDLE)

        for klass in (Category, ProductAttribute, ProductClass, Option):
            klass.skip_history_when_saving = True

        # Create a new product class for course seats
        seat, _ = ProductClass.objects.get_or_create(
            track_stock=False,
            requires_shipping=False,
            name=SEAT_PRODUCT_CLASS_NAME,
            slug=slugify(SEAT_PRODUCT_CLASS_NAME))

        # Create product attributes for course seat products
        ProductAttribute.objects.get_or_create(product_class=seat,
                                               name="course_key",
                                               code="course_key",
                                               type="text",
                                               required=True)

        ProductAttribute.objects.get_or_create(product_class=seat,
                                               name="id_verification_required",
                                               code="id_verification_required",
                                               type="boolean",
                                               required=False)

        ProductAttribute.objects.get_or_create(product_class=seat,
                                               name="certificate_type",
                                               code="certificate_type",
                                               type="text",
                                               required=False)

        # Create a category for course seats
        Category.objects.get_or_create(description="All course seats",
                                       numchild=1,
                                       slug="seats",
                                       depth=1,
                                       path="0001",
                                       image="",
                                       name="Seats")

        ProductAttribute.objects.get_or_create(product_class=seat,
                                               name='credit_provider',
                                               code='credit_provider',
                                               type='text',
                                               required=False)
        ProductAttribute.objects.get_or_create(product_class=seat,
                                               name='credit_hours',
                                               code='credit_hours',
                                               type='integer',
                                               required=False)

        Option.objects.get_or_create(
            name='Course Entitlement',
            code='course_entitlement',
            type=Option.OPTIONAL,
        )

        coupon, _ = ProductClass.objects.get_or_create(
            track_stock=False,
            requires_shipping=False,
            name=COUPON_PRODUCT_CLASS_NAME,
            slug=slugify(COUPON_PRODUCT_CLASS_NAME),
        )

        ProductAttribute.objects.get_or_create(product_class=coupon,
                                               name='Coupon vouchers',
                                               code='coupon_vouchers',
                                               type='entity',
                                               required=False)

        # Create a category for coupons.
        Category.objects.get_or_create(description='All Coupons',
                                       slug='coupons',
                                       depth=1,
                                       path='0002',
                                       image='',
                                       name='Coupons')
        ProductAttribute.objects.create(product_class=coupon,
                                        name='Note',
                                        code='note',
                                        type='text',
                                        required=False)
        ProductAttribute.objects.create(product_class=coupon,
                                        name='Notification Email',
                                        code='notify_email',
                                        type='text',
                                        required=False)
        ProductAttribute.objects.create(product_class=coupon,
                                        name='Enterprise Customer UUID',
                                        code='enterprise_customer_uuid',
                                        type='text',
                                        required=False)
        ProductAttribute.objects.create(product_class=coupon,
                                        name='Enterprise Contract Metadata',
                                        code='enterprise_contract_metadata',
                                        type='entity',
                                        required=False)
        ProductAttribute.objects.create(product_class=coupon,
                                        name='Inactive',
                                        code='inactive',
                                        type=ProductAttribute.BOOLEAN,
                                        required=False)
        ProductAttribute.objects.create(product_class=coupon,
                                        name='Sales Force ID',
                                        code='sales_force_id',
                                        type='text',
                                        required=False)
        ProductAttribute.objects.create(product_class=coupon,
                                        name='Is Public Code?',
                                        code='is_public_code',
                                        type='boolean',
                                        required=False)

        # Create a new product class for course entitlement
        course_entitlement, _ = ProductClass.objects.get_or_create(
            track_stock=False,
            requires_shipping=False,
            name=COURSE_ENTITLEMENT_PRODUCT_CLASS_NAME,
            slug=slugify(COURSE_ENTITLEMENT_PRODUCT_CLASS_NAME))

        # Create product attributes for course entitlement products
        ProductAttribute.objects.get_or_create(
            product_class=course_entitlement,
            name="UUID",
            code="UUID",
            type="text",
            required=True)

        ProductAttribute.objects.get_or_create(
            product_class=course_entitlement,
            name="certificate_type",
            code="certificate_type",
            type="text",
            required=False)

        ProductAttribute.objects.get_or_create(
            product_class=course_entitlement,
            name='id_verification_required',
            code='id_verification_required',
            type='boolean',
            required=False)

        try:
            Category.objects.get(name="Course Entitlements")
        except Category.DoesNotExist:
            # Create a category for course entitlements
            Category.add_root(description="All course entitlements",
                              slug="course_entitlements",
                              image="",
                              name="Course Entitlements")

        enrollment_code, _ = ProductClass.objects.get_or_create(
            track_stock=False,
            requires_shipping=False,
            name=ENROLLMENT_CODE_PRODUCT_CLASS_NAME,
            slug=slugify(ENROLLMENT_CODE_PRODUCT_CLASS_NAME),
        )

        ProductAttribute.objects.get_or_create(product_class=enrollment_code,
                                               name='Course Key',
                                               code='course_key',
                                               type='text',
                                               required=True)

        ProductAttribute.objects.get_or_create(product_class=enrollment_code,
                                               name='Seat Type',
                                               code='seat_type',
                                               type='text',
                                               required=True)

        ProductAttribute.objects.get_or_create(product_class=enrollment_code,
                                               name='id_verification_required',
                                               code='id_verification_required',
                                               type='boolean',
                                               required=False)

        EcommerceFeatureRole.objects.get_or_create(name=ORDER_MANAGER_ROLE)

        new_dynamic_condition, _ = Condition.objects.get_or_create(
            proxy_class=
            'ecommerce.extensions.offer.dynamic_conditional_offer.DynamicDiscountCondition'
        )

        # The value doesn't matter, because it's dynamic, but oscar will complain without one.
        new_dynamic_benefit, _ = Benefit.objects.get_or_create(
            value=1,
            proxy_class=
            'ecommerce.extensions.offer.dynamic_conditional_offer.DynamicPercentageDiscountBenefit'
        )

        ConditionalOffer.objects.get_or_create(
            name='dynamic_conditional_offer',
            benefit=new_dynamic_benefit,
            condition=new_dynamic_condition,
            max_basket_applications=1,
            priority=-10)

        # Create a new product class for donations for the donations from checkout tests
        ProductClass.objects.get_or_create(
            track_stock=False,
            requires_shipping=False,
            name=DONATIONS_FROM_CHECKOUT_TESTS_PRODUCT_TYPE_NAME,
            slug=slugify(DONATIONS_FROM_CHECKOUT_TESTS_PRODUCT_TYPE_NAME))

        try:
            Category.objects.get(name="Donations")
        except Category.DoesNotExist:
            Category.add_root(description="All donations",
                              slug="donations",
                              image="",
                              name="Donations")

        EcommerceFeatureRole.objects.get_or_create(
            name=ENTERPRISE_COUPON_ADMIN_ROLE)

        create_subcategories(Category, COUPON_CATEGORY_NAME,
                             DEFAULT_CATEGORIES)