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
7df91841
Commit
7df91841
authored
Jul 17, 2017
by
Gregory Martin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cleanup
parent
921950d7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
83 additions
and
26 deletions
+83
-26
cms/envs/common.py
+3
-0
lms/djangoapps/certificates/signals.py
+0
-23
lms/djangoapps/certificates/tests/test_signals.py
+1
-1
lms/envs/common.py
+1
-1
openedx/core/djangoapps/signals/handlers.py
+34
-0
openedx/core/djangoapps/signals/signals.py
+1
-1
openedx/core/djangoapps/signals/tests/test_handlers.py
+43
-0
No files found.
cms/envs/common.py
View file @
7df91841
...
...
@@ -960,6 +960,9 @@ INSTALLED_APPS = (
# Country embargo support
'openedx.core.djangoapps.embargo'
,
# Signals
'openedx.core.djangoapps.signals.apps.SignalConfig'
,
# Monitoring signals
'openedx.core.djangoapps.monitoring'
,
...
...
lms/djangoapps/certificates/signals.py
View file @
7df91841
...
...
@@ -3,10 +3,8 @@ Signal handler for enabling/disabling self-generated certificates based on the c
"""
import
logging
from
celery.task
import
task
from
django.db.models.signals
import
post_save
from
django.dispatch
import
receiver
from
opaque_keys.edx.keys
import
CourseKey
from
.config
import
waffle
from
certificates.models
import
\
...
...
@@ -16,7 +14,6 @@ from certificates.models import \
from
certificates.tasks
import
generate_certificate
from
courseware
import
courses
from
lms.djangoapps.grades.new.course_grade_factory
import
CourseGradeFactory
from
openedx.core.djangoapps.models.course_details
import
COURSE_PACING_CHANGE
from
openedx.core.djangoapps.signals.signals
import
COURSE_GRADE_NOW_PASSED
,
LEARNER_NOW_VERIFIED
from
student.models
import
CourseEnrollment
...
...
@@ -54,26 +51,6 @@ def _listen_for_certificate_whitelist_append(sender, instance, **kwargs): # pyl
))
@receiver
(
COURSE_PACING_CHANGE
,
dispatch_uid
=
"course_pacing_changed"
)
def
_listen_for_course_pacing_changed
(
sender
,
course_key
,
course_self_paced
,
**
kwargs
):
# pylint: disable=unused-argument
"""
Catches the signal that course pacing has changed and enable/disable
the self-generated certificates according to course-pacing.
"""
toggle_self_generated_certs
.
delay
(
unicode
(
course_key
),
course_self_paced
)
log
.
info
(
u'Certificate Generation Setting Toggled for {course} via pacing change'
.
format
(
course
=
course_key
))
@task
()
def
toggle_self_generated_certs
(
course_key
,
course_self_paced
):
"""
Enable or disable self-generated certificates for a course according to pacing.
"""
course_key
=
CourseKey
.
from_string
(
course_key
)
CertificateGenerationCourseSetting
.
set_enabled_for_course
(
course_key
,
course_self_paced
)
@receiver
(
COURSE_GRADE_NOW_PASSED
,
dispatch_uid
=
"new_passing_learner"
)
def
_listen_for_passing_grade
(
sender
,
user
,
course_id
,
**
kwargs
):
# pylint: disable=unused-argument
"""
...
...
lms/djangoapps/certificates/tests/test_signals.py
View file @
7df91841
...
...
@@ -11,7 +11,7 @@ from certificates.models import \
CertificateWhitelist
,
\
GeneratedCertificate
,
\
CertificateStatuses
from
certificates.signal
s
import
_listen_for_course_pacing_changed
from
openedx.core.djangoapps.signals.handler
s
import
_listen_for_course_pacing_changed
from
lms.djangoapps.grades.new.course_grade_factory
import
CourseGradeFactory
from
lms.djangoapps.grades.tests.utils
import
mock_passing_grade
from
lms.djangoapps.verify_student.models
import
SoftwareSecurePhotoVerification
...
...
lms/envs/common.py
View file @
7df91841
...
...
@@ -2030,7 +2030,7 @@ INSTALLED_APPS = (
'branding'
,
'lms.djangoapps.grades.apps.GradesConfig'
,
# Signal
# Signal
s
'openedx.core.djangoapps.signals.apps.SignalConfig'
,
# Student support tools
...
...
openedx/core/djangoapps/signals/handlers.py
0 → 100644
View file @
7df91841
"""
This module contains all general use or cross-use handlers.
"""
import
logging
from
celery.task
import
task
from
django.dispatch
import
receiver
from
certificates.models
import
CertificateGenerationCourseSetting
from
opaque_keys.edx.keys
import
CourseKey
from
signals
import
COURSE_PACING_CHANGE
log
=
logging
.
getLogger
(
__name__
)
@receiver
(
COURSE_PACING_CHANGE
,
dispatch_uid
=
"course_pacing_changed"
)
def
_listen_for_course_pacing_changed
(
sender
,
course_key
,
course_self_paced
,
**
kwargs
):
# pylint: disable=unused-argument
"""
Catches the signal that course pacing has changed and enable/disable
the self-generated certificates according to course-pacing.
"""
toggle_self_generated_certs
.
delay
(
unicode
(
course_key
),
course_self_paced
)
log
.
info
(
u'Certificate Generation Setting Toggled for {course} via pacing change'
.
format
(
course
=
course_key
))
@task
()
def
toggle_self_generated_certs
(
course_key
,
course_self_paced
):
"""
Enable or disable self-generated certificates for a course according to pacing.
"""
course_key
=
CourseKey
.
from_string
(
course_key
)
CertificateGenerationCourseSetting
.
set_enabled_for_course
(
course_key
,
course_self_paced
)
openedx/core/djangoapps/signals/signals.py
View file @
7df91841
"""
This module contains all signals.
This module contains all
general use
signals.
"""
from
django.dispatch
import
Signal
...
...
openedx/core/djangoapps/signals/tests/test_handlers.py
0 → 100644
View file @
7df91841
"""
Unit tests for enabling self-generated certificates for self-paced courses
and disabling for instructor-paced courses.
"""
from
certificates
import
api
as
certs_api
from
certificates.models
import
CertificateGenerationConfiguration
from
openedx.core.djangoapps.self_paced.models
import
SelfPacedConfiguration
from
xmodule.modulestore.tests.django_utils
import
ModuleStoreTestCase
from
xmodule.modulestore.tests.factories
import
CourseFactory
from
openedx.core.djangoapps.signals.handlers
import
_listen_for_course_pacing_changed
class
SelfGeneratedCertsSignalTest
(
ModuleStoreTestCase
):
"""
Tests for enabling/disabling self-generated certificates according to course-pacing.
"""
def
setUp
(
self
):
super
(
SelfGeneratedCertsSignalTest
,
self
)
.
setUp
()
SelfPacedConfiguration
(
enabled
=
True
)
.
save
()
self
.
course
=
CourseFactory
.
create
(
self_paced
=
True
)
# Enable the feature
CertificateGenerationConfiguration
.
objects
.
create
(
enabled
=
True
)
def
test_cert_generation_flag_on_pacing_toggle
(
self
):
"""
Verify that signal enables or disables self-generated certificates
according to course-pacing.
"""
#self-generation of cert disables by default
self
.
assertFalse
(
certs_api
.
cert_generation_enabled
(
self
.
course
.
id
))
_listen_for_course_pacing_changed
(
'store'
,
self
.
course
.
id
,
self
.
course
.
self_paced
)
#verify that self-generation of cert is enabled for self-paced course
self
.
assertTrue
(
certs_api
.
cert_generation_enabled
(
self
.
course
.
id
))
self
.
course
.
self_paced
=
False
self
.
store
.
update_item
(
self
.
course
,
self
.
user
.
id
)
_listen_for_course_pacing_changed
(
'store'
,
self
.
course
.
id
,
self
.
course
.
self_paced
)
# verify that self-generation of cert is disabled for instructor-paced course
self
.
assertFalse
(
certs_api
.
cert_generation_enabled
(
self
.
course
.
id
))
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