Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
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
edx-platform
Commits
dfd5bd3e
Commit
dfd5bd3e
authored
Jun 14, 2016
by
estute
Committed by
GitHub
Jun 14, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #12742 from edx/ahsan/fix-order-history-page-error
Fix order history page if order doesn't have any product
parents
68859e7c
39f8757f
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
50 additions
and
16 deletions
+50
-16
lms/djangoapps/student_account/test/test_views.py
+23
-0
lms/djangoapps/student_account/views.py
+27
-16
No files found.
lms/djangoapps/student_account/test/test_views.py
View file @
dfd5bd3e
...
...
@@ -595,6 +595,29 @@ class AccountSettingsViewTest(ThirdPartyAuthTestMixin, TestCase, ProgramsApiConf
self
.
assertEqual
(
order_detail
,
[])
def
test_order_history_with_no_product
(
self
):
response
=
{
'results'
:
[
factories
.
OrderFactory
(
lines
=
[
factories
.
OrderLineFactory
(
product
=
None
),
factories
.
OrderLineFactory
(
product
=
factories
.
ProductFactory
(
attribute_values
=
[
factories
.
ProductAttributeFactory
(
name
=
'certificate_type'
,
value
=
'verified'
)])
)
]
)
]
}
with
mock_get_orders
(
response
=
response
):
order_detail
=
get_user_orders
(
self
.
user
)
self
.
assertEqual
(
len
(
order_detail
),
1
)
@override_settings
(
SITE_NAME
=
settings
.
MICROSITE_LOGISTRATION_HOSTNAME
)
class
MicrositeLogistrationTests
(
TestCase
):
...
...
lms/djangoapps/student_account/views.py
View file @
dfd5bd3e
...
...
@@ -334,21 +334,25 @@ def get_user_orders(user):
for
order
in
commerce_user_orders
:
if
order
[
'status'
]
.
lower
()
==
'complete'
:
for
line
in
order
[
'lines'
]:
for
attribute
in
line
[
'product'
][
'attribute_values'
]:
if
attribute
[
'name'
]
==
'certificate_type'
and
attribute
[
'value'
]
in
allowed_course_modes
:
try
:
date_placed
=
datetime
.
strptime
(
order
[
'date_placed'
],
"
%
Y-
%
m-
%
dT
%
H:
%
M:
%
SZ"
)
order_data
=
{
'number'
:
order
[
'number'
],
'price'
:
order
[
'total_excl_tax'
],
'title'
:
order
[
'lines'
][
0
][
'title'
],
'order_date'
:
strftime_localized
(
date_placed
.
replace
(
tzinfo
=
pytz
.
UTC
),
'SHORT_DATE'
),
'receipt_url'
:
commerce_configuration
.
receipt_page
+
order
[
'number'
]
}
user_orders
.
append
(
order_data
)
except
KeyError
:
log
.
exception
(
'Invalid order structure:
%
r'
,
order
)
return
no_data
product
=
line
.
get
(
'product'
)
if
product
:
for
attribute
in
product
[
'attribute_values'
]:
if
attribute
[
'name'
]
==
'certificate_type'
and
attribute
[
'value'
]
in
allowed_course_modes
:
try
:
date_placed
=
datetime
.
strptime
(
order
[
'date_placed'
],
"
%
Y-
%
m-
%
dT
%
H:
%
M:
%
SZ"
)
order_data
=
{
'number'
:
order
[
'number'
],
'price'
:
order
[
'total_excl_tax'
],
'title'
:
order
[
'lines'
][
0
][
'title'
],
'order_date'
:
strftime_localized
(
date_placed
.
replace
(
tzinfo
=
pytz
.
UTC
),
'SHORT_DATE'
),
'receipt_url'
:
commerce_configuration
.
receipt_page
+
order
[
'number'
]
}
user_orders
.
append
(
order_data
)
except
KeyError
:
log
.
exception
(
'Invalid order structure:
%
r'
,
order
)
return
no_data
return
user_orders
...
...
@@ -421,6 +425,13 @@ def account_settings_context(request):
user
=
request
.
user
year_of_birth_options
=
[(
unicode
(
year
),
unicode
(
year
))
for
year
in
UserProfile
.
VALID_YEARS
]
try
:
user_orders
=
get_user_orders
(
user
)
except
:
# pylint: disable=bare-except
log
.
exception
(
'Error fetching order history from Otto.'
)
# Return empty order list as account settings page expect a list and
# it will be broken if exception raised
user_orders
=
[]
context
=
{
'auth'
:
{},
...
...
@@ -447,7 +458,7 @@ def account_settings_context(request):
'user_preferences_api_url'
:
reverse
(
'preferences_api'
,
kwargs
=
{
'username'
:
user
.
username
}),
'disable_courseware_js'
:
True
,
'show_program_listing'
:
ProgramsApiConfig
.
current
()
.
show_program_listing
,
'order_history'
:
get_user_orders
(
user
)
'order_history'
:
user_orders
}
if
third_party_auth
.
is_enabled
():
...
...
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