Commit d2331286 by Tasawer Nawaz Committed by GitHub

Merge pull request #449 from edx/tasawer/ecom-4413-add-sku-in-seat-object

Added new field "sku" in course_run's seat object
parents 46306b68 3f567c19
...@@ -259,6 +259,7 @@ class SeatSerializer(serializers.ModelSerializer): ...@@ -259,6 +259,7 @@ class SeatSerializer(serializers.ModelSerializer):
upgrade_deadline = serializers.DateTimeField() upgrade_deadline = serializers.DateTimeField()
credit_provider = serializers.CharField() credit_provider = serializers.CharField()
credit_hours = serializers.IntegerField() credit_hours = serializers.IntegerField()
sku = serializers.CharField()
@classmethod @classmethod
def prefetch_queryset(cls): def prefetch_queryset(cls):
...@@ -266,7 +267,7 @@ class SeatSerializer(serializers.ModelSerializer): ...@@ -266,7 +267,7 @@ class SeatSerializer(serializers.ModelSerializer):
class Meta(object): class Meta(object):
model = Seat model = Seat
fields = ('type', 'price', 'currency', 'upgrade_deadline', 'credit_provider', 'credit_hours',) fields = ('type', 'price', 'currency', 'upgrade_deadline', 'credit_provider', 'credit_hours', 'sku',)
class MinimalOrganizationSerializer(serializers.ModelSerializer): class MinimalOrganizationSerializer(serializers.ModelSerializer):
......
...@@ -940,7 +940,8 @@ class SeatSerializerTests(TestCase): ...@@ -940,7 +940,8 @@ class SeatSerializerTests(TestCase):
'currency': seat.currency.code, 'currency': seat.currency.code,
'upgrade_deadline': json_date_format(seat.upgrade_deadline), 'upgrade_deadline': json_date_format(seat.upgrade_deadline),
'credit_provider': seat.credit_provider, # pylint: disable=no-member 'credit_provider': seat.credit_provider, # pylint: disable=no-member
'credit_hours': seat.credit_hours # pylint: disable=no-member 'credit_hours': seat.credit_hours, # pylint: disable=no-member
'sku': seat.sku
} }
self.assertDictEqual(serializer.data, expected) self.assertDictEqual(serializer.data, expected)
......
...@@ -305,6 +305,7 @@ class EcommerceApiDataLoader(AbstractDataLoader): ...@@ -305,6 +305,7 @@ class EcommerceApiDataLoader(AbstractDataLoader):
stock_record = product_body['stockrecords'][0] stock_record = product_body['stockrecords'][0]
currency_code = stock_record['price_currency'] currency_code = stock_record['price_currency']
price = Decimal(stock_record['price_excl_tax']) price = Decimal(stock_record['price_excl_tax'])
sku = stock_record['partner_sku']
try: try:
currency = Currency.objects.get(code=currency_code) currency = Currency.objects.get(code=currency_code)
...@@ -323,6 +324,7 @@ class EcommerceApiDataLoader(AbstractDataLoader): ...@@ -323,6 +324,7 @@ class EcommerceApiDataLoader(AbstractDataLoader):
defaults = { defaults = {
'price': price, 'price': price,
'sku': sku,
'upgrade_deadline': self.parse_date(product_body.get('expires')), 'upgrade_deadline': self.parse_date(product_body.get('expires')),
'credit_hours': credit_hours, 'credit_hours': credit_hours,
} }
......
...@@ -179,6 +179,7 @@ ECOMMERCE_API_BODIES = [ ...@@ -179,6 +179,7 @@ ECOMMERCE_API_BODIES = [
{ {
"price_currency": "USD", "price_currency": "USD",
"price_excl_tax": "0.00", "price_excl_tax": "0.00",
"partner_sku": "sku001",
} }
] ]
} }
...@@ -208,6 +209,7 @@ ECOMMERCE_API_BODIES = [ ...@@ -208,6 +209,7 @@ ECOMMERCE_API_BODIES = [
{ {
"price_currency": "EUR", "price_currency": "EUR",
"price_excl_tax": "0.00", "price_excl_tax": "0.00",
"partner_sku": "sku002",
} }
] ]
}, },
...@@ -224,6 +226,7 @@ ECOMMERCE_API_BODIES = [ ...@@ -224,6 +226,7 @@ ECOMMERCE_API_BODIES = [
{ {
"price_currency": "EUR", "price_currency": "EUR",
"price_excl_tax": "25.00", "price_excl_tax": "25.00",
"partner_sku": "sku003",
} }
] ]
} }
...@@ -250,6 +253,7 @@ ECOMMERCE_API_BODIES = [ ...@@ -250,6 +253,7 @@ ECOMMERCE_API_BODIES = [
{ {
"price_currency": "USD", "price_currency": "USD",
"price_excl_tax": "0.00", "price_excl_tax": "0.00",
"partner_sku": "sku004",
} }
] ]
}, },
...@@ -266,6 +270,7 @@ ECOMMERCE_API_BODIES = [ ...@@ -266,6 +270,7 @@ ECOMMERCE_API_BODIES = [
{ {
"price_currency": "USD", "price_currency": "USD",
"price_excl_tax": "25.00", "price_excl_tax": "25.00",
"partner_sku": "sku005",
} }
] ]
}, },
...@@ -294,6 +299,7 @@ ECOMMERCE_API_BODIES = [ ...@@ -294,6 +299,7 @@ ECOMMERCE_API_BODIES = [
{ {
"price_currency": "USD", "price_currency": "USD",
"price_excl_tax": "250.00", "price_excl_tax": "250.00",
"partner_sku": "sku006",
} }
] ]
}, },
...@@ -322,6 +328,7 @@ ECOMMERCE_API_BODIES = [ ...@@ -322,6 +328,7 @@ ECOMMERCE_API_BODIES = [
{ {
"price_currency": "USD", "price_currency": "USD",
"price_excl_tax": "250.00", "price_excl_tax": "250.00",
"partner_sku": "sku007",
} }
] ]
} }
...@@ -346,6 +353,7 @@ ECOMMERCE_API_BODIES = [ ...@@ -346,6 +353,7 @@ ECOMMERCE_API_BODIES = [
{ {
"price_currency": "123", "price_currency": "123",
"price_excl_tax": "0.00", "price_excl_tax": "0.00",
"partner_sku": "sku008",
} }
] ]
} }
...@@ -370,6 +378,7 @@ ECOMMERCE_API_BODIES = [ ...@@ -370,6 +378,7 @@ ECOMMERCE_API_BODIES = [
{ {
"price_currency": "USD", "price_currency": "USD",
"price_excl_tax": "0.00", "price_excl_tax": "0.00",
"partner_sku": "sku009",
} }
] ]
} }
......
...@@ -345,6 +345,7 @@ class EcommerceApiDataLoaderTests(ApiClientTestMixin, DataLoaderTestMixin, TestC ...@@ -345,6 +345,7 @@ class EcommerceApiDataLoaderTests(ApiClientTestMixin, DataLoaderTestMixin, TestC
stock_record = product['stockrecords'][0] stock_record = product['stockrecords'][0]
price_currency = stock_record['price_currency'] price_currency = stock_record['price_currency']
price = Decimal(stock_record['price_excl_tax']) price = Decimal(stock_record['price_excl_tax'])
sku = stock_record['partner_sku']
certificate_type = Seat.AUDIT certificate_type = Seat.AUDIT
credit_provider = None credit_provider = None
credit_hours = None credit_hours = None
...@@ -372,6 +373,7 @@ class EcommerceApiDataLoaderTests(ApiClientTestMixin, DataLoaderTestMixin, TestC ...@@ -372,6 +373,7 @@ class EcommerceApiDataLoaderTests(ApiClientTestMixin, DataLoaderTestMixin, TestC
self.assertEqual(seat.credit_provider, credit_provider) self.assertEqual(seat.credit_provider, credit_provider)
self.assertEqual(seat.credit_hours, credit_hours) self.assertEqual(seat.credit_hours, credit_hours)
self.assertEqual(seat.upgrade_deadline, upgrade_deadline) self.assertEqual(seat.upgrade_deadline, upgrade_deadline)
self.assertEqual(seat.sku, sku)
@responses.activate @responses.activate
def test_ingest(self): def test_ingest(self):
......
# -*- coding: utf-8 -*-
# Generated by Django 1.9.11 on 2016-11-23 09:21
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('course_metadata', '0037_migrate_courses_with_canonical'),
]
operations = [
migrations.AddField(
model_name='seat',
name='sku',
field=models.CharField(blank=True, max_length=128, null=True),
),
]
...@@ -535,6 +535,7 @@ class Seat(TimeStampedModel): ...@@ -535,6 +535,7 @@ class Seat(TimeStampedModel):
upgrade_deadline = models.DateTimeField(null=True, blank=True) upgrade_deadline = models.DateTimeField(null=True, blank=True)
credit_provider = models.CharField(max_length=255, null=True, blank=True) credit_provider = models.CharField(max_length=255, null=True, blank=True)
credit_hours = models.IntegerField(null=True, blank=True) credit_hours = models.IntegerField(null=True, blank=True)
sku = models.CharField(max_length=128, null=True, blank=True)
class Meta(object): class Meta(object):
unique_together = ( unique_together = (
......
...@@ -70,6 +70,7 @@ class SeatFactory(factory.DjangoModelFactory): ...@@ -70,6 +70,7 @@ class SeatFactory(factory.DjangoModelFactory):
price = FuzzyDecimal(0.0, 650.0) price = FuzzyDecimal(0.0, 650.0)
currency = factory.Iterator(Currency.objects.all()) currency = factory.Iterator(Currency.objects.all())
upgrade_deadline = FuzzyDateTime(datetime.datetime(2014, 1, 1, tzinfo=UTC)) upgrade_deadline = FuzzyDateTime(datetime.datetime(2014, 1, 1, tzinfo=UTC))
sku = FuzzyText(length=8)
class Meta: class Meta:
model = Seat model = Seat
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment