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
ccb5b6c7
Commit
ccb5b6c7
authored
Dec 29, 2015
by
Jonathan Piacenti
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Adjust get_completion_badge usages to handle exceptions.
parent
4fde73fa
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
45 additions
and
14 deletions
+45
-14
lms/djangoapps/badges/events/course_complete.py
+2
-0
lms/djangoapps/certificates/management/commands/regenerate_user.py
+7
-5
lms/djangoapps/certificates/tests/test_cert_management.py
+9
-3
lms/djangoapps/certificates/tests/test_webview_views.py
+21
-4
lms/djangoapps/certificates/views/webview.py
+6
-2
No files found.
lms/djangoapps/badges/events/course_complete.py
View file @
ccb5b6c7
...
@@ -82,6 +82,8 @@ def get_completion_badge(course_id, user):
...
@@ -82,6 +82,8 @@ def get_completion_badge(course_id, user):
return
None
return
None
mode
=
badge_classes
[
0
]
.
mode
mode
=
badge_classes
[
0
]
.
mode
course
=
modulestore
()
.
get_course
(
course_id
)
course
=
modulestore
()
.
get_course
(
course_id
)
if
not
course
.
issue_badges
:
return
None
return
BadgeClass
.
get_badge_class
(
return
BadgeClass
.
get_badge_class
(
slug
=
course_slug
(
course_id
,
mode
),
slug
=
course_slug
(
course_id
,
mode
),
issuing_component
=
''
,
issuing_component
=
''
,
...
...
lms/djangoapps/certificates/management/commands/regenerate_user.py
View file @
ccb5b6c7
...
@@ -111,11 +111,13 @@ class Command(BaseCommand):
...
@@ -111,11 +111,13 @@ class Command(BaseCommand):
course_id
course_id
)
)
badge_class
=
get_completion_badge
(
course_id
,
student
)
if
course
.
issue_badges
:
badge
=
badge_class
.
get_for_user
(
student
)
badge_class
=
get_completion_badge
(
course_id
,
student
)
if
badge
:
badge
=
badge_class
.
get_for_user
(
student
)
badge
.
delete
()
LOGGER
.
info
(
u"Cleared badge for student
%
s."
,
student
.
id
)
if
badge
:
badge
.
delete
()
LOGGER
.
info
(
u"Cleared badge for student
%
s."
,
student
.
id
)
# Add the certificate request to the queue
# Add the certificate request to the queue
ret
=
regenerate_user_certificates
(
ret
=
regenerate_user_certificates
(
...
...
lms/djangoapps/certificates/tests/test_cert_management.py
View file @
ccb5b6c7
...
@@ -150,6 +150,7 @@ class ResubmitErrorCertificatesTest(CertificateManagementTest):
...
@@ -150,6 +150,7 @@ class ResubmitErrorCertificatesTest(CertificateManagementTest):
self
.
_assert_cert_status
(
phantom_course
,
self
.
user
,
CertificateStatuses
.
error
)
self
.
_assert_cert_status
(
phantom_course
,
self
.
user
,
CertificateStatuses
.
error
)
@ddt.ddt
@attr
(
'shard_1'
)
@attr
(
'shard_1'
)
class
RegenerateCertificatesTest
(
CertificateManagementTest
):
class
RegenerateCertificatesTest
(
CertificateManagementTest
):
"""
"""
...
@@ -164,20 +165,23 @@ class RegenerateCertificatesTest(CertificateManagementTest):
...
@@ -164,20 +165,23 @@ class RegenerateCertificatesTest(CertificateManagementTest):
super
(
RegenerateCertificatesTest
,
self
)
.
setUp
()
super
(
RegenerateCertificatesTest
,
self
)
.
setUp
()
self
.
course
=
self
.
courses
[
0
]
self
.
course
=
self
.
courses
[
0
]
@ddt.data
(
True
,
False
)
@override_settings
(
CERT_QUEUE
=
'test-queue'
)
@override_settings
(
CERT_QUEUE
=
'test-queue'
)
@patch
(
'certificates.api.XQueueCertInterface'
,
spec
=
True
)
@patch
(
'certificates.api.XQueueCertInterface'
,
spec
=
True
)
def
test_clear_badge
(
self
,
xqueue
):
def
test_clear_badge
(
self
,
issue_badges
,
xqueue
):
"""
"""
Given that I have a user with a badge
Given that I have a user with a badge
If I run regeneration for a user
If I run regeneration for a user
Then certificate generation will be requested
Then certificate generation will be requested
And the badge will be deleted
And the badge will be deleted
if badge issuing is enabled
"""
"""
key
=
self
.
course
.
location
.
course_key
key
=
self
.
course
.
location
.
course_key
self
.
_create_cert
(
key
,
self
.
user
,
CertificateStatuses
.
downloadable
)
self
.
_create_cert
(
key
,
self
.
user
,
CertificateStatuses
.
downloadable
)
badge_class
=
get_completion_badge
(
key
,
self
.
user
)
badge_class
=
get_completion_badge
(
key
,
self
.
user
)
BadgeAssertionFactory
(
badge_class
=
badge_class
,
user
=
self
.
user
)
BadgeAssertionFactory
(
badge_class
=
badge_class
,
user
=
self
.
user
)
self
.
assertTrue
(
BadgeAssertion
.
objects
.
filter
(
user
=
self
.
user
,
badge_class
=
badge_class
))
self
.
assertTrue
(
BadgeAssertion
.
objects
.
filter
(
user
=
self
.
user
,
badge_class
=
badge_class
))
self
.
course
.
issue_badges
=
issue_badges
self
.
store
.
update_item
(
self
.
course
,
None
)
self
.
_run_command
(
self
.
_run_command
(
username
=
self
.
user
.
email
,
course
=
unicode
(
key
),
noop
=
False
,
insecure
=
False
,
template_file
=
None
,
username
=
self
.
user
.
email
,
course
=
unicode
(
key
),
noop
=
False
,
insecure
=
False
,
template_file
=
None
,
grade_value
=
None
grade_value
=
None
...
@@ -190,7 +194,9 @@ class RegenerateCertificatesTest(CertificateManagementTest):
...
@@ -190,7 +194,9 @@ class RegenerateCertificatesTest(CertificateManagementTest):
template_file
=
None
,
template_file
=
None
,
generate_pdf
=
True
generate_pdf
=
True
)
)
self
.
assertFalse
(
BadgeAssertion
.
objects
.
filter
(
user
=
self
.
user
,
badge_class
=
badge_class
))
self
.
assertEquals
(
bool
(
BadgeAssertion
.
objects
.
filter
(
user
=
self
.
user
,
badge_class
=
badge_class
)),
not
issue_badges
)
@override_settings
(
CERT_QUEUE
=
'test-queue'
)
@override_settings
(
CERT_QUEUE
=
'test-queue'
)
@patch
(
'capa.xqueue_interface.XQueueInterface.send_to_queue'
,
spec
=
True
)
@patch
(
'capa.xqueue_interface.XQueueInterface.send_to_queue'
,
spec
=
True
)
...
...
lms/djangoapps/certificates/tests/test_webview_views.py
View file @
ccb5b6c7
...
@@ -14,12 +14,9 @@ from django.core.urlresolvers import reverse
...
@@ -14,12 +14,9 @@ from django.core.urlresolvers import reverse
from
django.test.client
import
Client
from
django.test.client
import
Client
from
django.test.utils
import
override_settings
from
django.test.utils
import
override_settings
<<<<<<<
HEAD
from
course_modes.models
import
CourseMode
from
course_modes.models
import
CourseMode
=======
from
badges.events.course_complete
import
get_completion_badge
from
badges.events.course_complete
import
get_completion_badge
>>>>>>>
a248c5a
...
Add
completion
and
enrollment
badges
.
from
badges.tests.factories
import
BadgeAssertionFactory
,
CourseCompleteImageConfigurationFactory
,
BadgeClassFactory
from
badges.tests.factories
import
BadgeAssertionFactory
,
CourseCompleteImageConfigurationFactory
from
openedx.core.lib.tests.assertions.events
import
assert_event_matches
from
openedx.core.lib.tests.assertions.events
import
assert_event_matches
from
student.tests.factories
import
UserFactory
,
CourseEnrollmentFactory
from
student.tests.factories
import
UserFactory
,
CourseEnrollmentFactory
from
student.roles
import
CourseStaffRole
from
student.roles
import
CourseStaffRole
...
@@ -338,6 +335,26 @@ class CertificatesViewsTests(ModuleStoreTestCase, EventTrackingTestCase):
...
@@ -338,6 +335,26 @@ class CertificatesViewsTests(ModuleStoreTestCase, EventTrackingTestCase):
)
)
self
.
assertIn
(
'logo_test1.png'
,
response
.
content
)
self
.
assertIn
(
'logo_test1.png'
,
response
.
content
)
@ddt.data
(
True
,
False
)
@patch
(
'certificates.views.webview.get_completion_badge'
)
@override_settings
(
FEATURES
=
FEATURES_WITH_BADGES_ENABLED
)
def
test_fetch_badge_info
(
self
,
issue_badges
,
mock_get_completion_badge
):
"""
Test: Fetch badge class info if badges are enabled.
"""
badge_class
=
BadgeClassFactory
(
course_id
=
self
.
course_id
,
mode
=
self
.
cert
.
mode
)
mock_get_completion_badge
.
return_value
=
badge_class
self
.
_add_course_certificates
(
count
=
1
,
signatory_count
=
1
,
is_active
=
True
)
test_url
=
get_certificate_url
(
course_id
=
self
.
cert
.
course_id
,
uuid
=
self
.
cert
.
verify_uuid
)
response
=
self
.
client
.
get
(
test_url
)
self
.
assertEqual
(
response
.
status_code
,
200
)
if
issue_badges
:
mock_get_completion_badge
.
assertCalled
()
else
:
mock_get_completion_badge
.
assertNotCalled
()
@override_settings
(
FEATURES
=
FEATURES_WITH_BADGES_ENABLED
)
@override_settings
(
FEATURES
=
FEATURES_WITH_BADGES_ENABLED
)
@patch.dict
(
"django.conf.settings.SOCIAL_SHARING_SETTINGS"
,
{
@patch.dict
(
"django.conf.settings.SOCIAL_SHARING_SETTINGS"
,
{
"CERTIFICATE_TWITTER"
:
True
,
"CERTIFICATE_TWITTER"
:
True
,
...
...
lms/djangoapps/certificates/views/webview.py
View file @
ccb5b6c7
...
@@ -359,7 +359,11 @@ def _track_certificate_events(request, context, course, user, user_certificate):
...
@@ -359,7 +359,11 @@ def _track_certificate_events(request, context, course, user, user_certificate):
if
'evidence_visit'
in
request
.
GET
:
if
'evidence_visit'
in
request
.
GET
:
badge_class
=
get_completion_badge
(
course_key
,
user
)
badge_class
=
get_completion_badge
(
course_key
,
user
)
badges
=
badge_class
.
get_for_user
(
user
)
if
not
badge_class
:
log
.
warning
(
'Visit to evidence URL for badge, but badges not configured for course "
%
s"'
,
course_key
)
badges
=
[]
else
:
badges
=
badge_class
.
get_for_user
(
user
)
if
badges
:
if
badges
:
# There should only ever be one of these.
# There should only ever be one of these.
badge
=
badges
[
0
]
badge
=
badges
[
0
]
...
@@ -441,7 +445,7 @@ def _update_badge_context(context, course, user):
...
@@ -441,7 +445,7 @@ def _update_badge_context(context, course, user):
Updates context with badge info.
Updates context with badge info.
"""
"""
badge
=
None
badge
=
None
if
settings
.
FEATURES
.
get
(
'ENABLE_OPENBADGES'
):
if
settings
.
FEATURES
.
get
(
'ENABLE_OPENBADGES'
)
and
course
.
issue_badges
:
badges
=
get_completion_badge
(
course
.
location
.
course_key
,
user
)
.
get_for_user
(
user
)
badges
=
get_completion_badge
(
course
.
location
.
course_key
,
user
)
.
get_for_user
(
user
)
if
badges
:
if
badges
:
badge
=
badges
[
0
]
badge
=
badges
[
0
]
...
...
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