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
3c9b3993
Commit
3c9b3993
authored
Aug 04, 2016
by
Syed Hassan Raza
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Handle MultipleObjectsReturned exception for dashboardpage
parent
b7c9ef9b
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
39 additions
and
1 deletions
+39
-1
common/djangoapps/student/models.py
+10
-1
common/djangoapps/student/tests/test_refunds.py
+29
-0
No files found.
common/djangoapps/student/models.py
View file @
3c9b3993
...
...
@@ -34,7 +34,7 @@ from django.db import models, IntegrityError, transaction
from
django.db.models
import
Count
from
django.db.models.signals
import
pre_save
,
post_save
from
django.dispatch
import
receiver
,
Signal
from
django.core.exceptions
import
ObjectDoesNotExist
from
django.core.exceptions
import
ObjectDoesNotExist
,
MultipleObjectsReturned
from
django.utils.translation
import
ugettext_noop
from
django.core.cache
import
cache
from
django_countries.fields
import
CountryField
...
...
@@ -1503,6 +1503,15 @@ class CourseEnrollment(models.Model):
attribute
=
self
.
attributes
.
get
(
namespace
=
'order'
,
name
=
'order_number'
)
except
ObjectDoesNotExist
:
return
None
except
MultipleObjectsReturned
:
# If there are multiple attributes then return the last one.
enrollment_id
=
self
.
get_enrollment
(
self
.
user
,
self
.
course_id
)
.
id
log
.
warning
(
u"Multiple CourseEnrollmentAttributes found for user
%
s with enrollment-ID
%
s"
,
self
.
user
.
id
,
enrollment_id
)
attribute
=
self
.
attributes
.
filter
(
namespace
=
'order'
,
name
=
'order_number'
)
.
last
()
order_number
=
attribute
.
value
order
=
ecommerce_api_client
(
self
.
user
)
.
orders
(
order_number
)
.
get
()
...
...
common/djangoapps/student/tests/test_refunds.py
View file @
3c9b3993
...
...
@@ -170,3 +170,32 @@ class RefundableTest(SharedModuleStoreTestCase):
def
test_refund_cutoff_date_no_attributes
(
self
):
""" Assert that the None is returned when no order number attribute is found."""
self
.
assertIsNone
(
self
.
enrollment
.
refund_cutoff_date
())
@httpretty.activate
@override_settings
(
ECOMMERCE_API_SIGNING_KEY
=
TEST_API_SIGNING_KEY
,
ECOMMERCE_API_URL
=
TEST_API_URL
)
def
test_multiple_refunds_dashbaord_page_error
(
self
):
""" Order with mutiple refunds will not throw 500 error when dashboard page will access."""
now
=
datetime
.
now
(
pytz
.
UTC
)
.
replace
(
microsecond
=
0
)
order_date
=
now
+
timedelta
(
days
=
1
)
order_number
=
'OSCR-1000'
expected_content
=
'{{"date_placed": "{date}"}}'
.
format
(
date
=
order_date
.
strftime
(
ECOMMERCE_DATE_FORMAT
))
httpretty
.
register_uri
(
httpretty
.
GET
,
'{url}/orders/{order}/'
.
format
(
url
=
TEST_API_URL
,
order
=
order_number
),
status
=
200
,
body
=
expected_content
,
adding_headers
=
{
'Content-Type'
:
JSON
}
)
# creating multiple attributes for same order.
for
attribute_count
in
range
(
2
):
# pylint: disable=unused-variable
self
.
enrollment
.
attributes
.
add
(
CourseEnrollmentAttribute
(
enrollment
=
self
.
enrollment
,
namespace
=
'order'
,
name
=
'order_number'
,
value
=
order_number
))
self
.
client
.
login
(
username
=
"jack"
,
password
=
"test"
)
resp
=
self
.
client
.
post
(
reverse
(
'student.views.dashboard'
,
args
=
[]))
self
.
assertEqual
(
resp
.
status_code
,
200
)
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