Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
course-discovery
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
course-discovery
Commits
d2331286
Commit
d2331286
authored
Nov 23, 2016
by
Tasawer Nawaz
Committed by
GitHub
Nov 23, 2016
Browse files
Options
Browse Files
Download
Plain Diff
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
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
39 additions
and
2 deletions
+39
-2
course_discovery/apps/api/serializers.py
+2
-1
course_discovery/apps/api/tests/test_serializers.py
+2
-1
course_discovery/apps/course_metadata/data_loaders/api.py
+2
-0
course_discovery/apps/course_metadata/data_loaders/tests/mock_data.py
+9
-0
course_discovery/apps/course_metadata/data_loaders/tests/test_api.py
+2
-0
course_discovery/apps/course_metadata/migrations/0038_seat_sku.py
+20
-0
course_discovery/apps/course_metadata/models.py
+1
-0
course_discovery/apps/course_metadata/tests/factories.py
+1
-0
No files found.
course_discovery/apps/api/serializers.py
View file @
d2331286
...
@@ -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
):
...
...
course_discovery/apps/api/tests/test_serializers.py
View file @
d2331286
...
@@ -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
)
...
...
course_discovery/apps/course_metadata/data_loaders/api.py
View file @
d2331286
...
@@ -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
,
}
}
...
...
course_discovery/apps/course_metadata/data_loaders/tests/mock_data.py
View file @
d2331286
...
@@ -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"
,
}
}
]
]
}
}
...
...
course_discovery/apps/course_metadata/data_loaders/tests/test_api.py
View file @
d2331286
...
@@ -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
):
...
...
course_discovery/apps/course_metadata/migrations/0038_seat_sku.py
0 → 100644
View file @
d2331286
# -*- 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
),
),
]
course_discovery/apps/course_metadata/models.py
View file @
d2331286
...
@@ -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
=
(
...
...
course_discovery/apps/course_metadata/tests/factories.py
View file @
d2331286
...
@@ -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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment