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
867fac31
Commit
867fac31
authored
Jun 01, 2017
by
sanfordstudent
Committed by
GitHub
Jun 01, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #15198 from edx/sstudent/course-policy-event
Sstudent/course policy event
parents
81ef933d
79a2b6e2
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
48 additions
and
15 deletions
+48
-15
cms/djangoapps/contentstore/signals/handlers.py
+6
-1
cms/djangoapps/contentstore/tests/test_course_settings.py
+0
-0
cms/djangoapps/models/settings/course_grading.py
+36
-14
lms/djangoapps/grades/tasks.py
+6
-0
No files found.
cms/djangoapps/contentstore/signals/handlers.py
View file @
867fac31
...
@@ -11,6 +11,7 @@ from contentstore.proctoring import register_special_exams
...
@@ -11,6 +11,7 @@ from contentstore.proctoring import register_special_exams
from
lms.djangoapps.grades.tasks
import
compute_all_grades_for_course
from
lms.djangoapps.grades.tasks
import
compute_all_grades_for_course
from
openedx.core.djangoapps.credit.signals
import
on_course_publish
from
openedx.core.djangoapps.credit.signals
import
on_course_publish
from
openedx.core.lib.gating
import
api
as
gating_api
from
openedx.core.lib.gating
import
api
as
gating_api
from
track.event_transaction_utils
import
get_event_transaction_id
,
get_event_transaction_type
from
util.module_utils
import
yield_dynamic_descriptor_descendants
from
util.module_utils
import
yield_dynamic_descriptor_descendants
from
.signals
import
GRADING_POLICY_CHANGED
from
.signals
import
GRADING_POLICY_CHANGED
from
xmodule.modulestore.django
import
SignalHandler
,
modulestore
from
xmodule.modulestore.django
import
SignalHandler
,
modulestore
...
@@ -95,7 +96,11 @@ def handle_grading_policy_changed(sender, **kwargs):
...
@@ -95,7 +96,11 @@ def handle_grading_policy_changed(sender, **kwargs):
Receives signal and kicks off celery task to recalculate grades
Receives signal and kicks off celery task to recalculate grades
"""
"""
course_key
=
kwargs
.
get
(
'course_key'
)
course_key
=
kwargs
.
get
(
'course_key'
)
result
=
compute_all_grades_for_course
.
apply_async
(
course_key
=
course_key
)
result
=
compute_all_grades_for_course
.
apply_async
(
course_key
=
course_key
,
event_transaction_id
=
get_event_transaction_id
(),
event_transaction_type
=
get_event_transaction_type
(),
)
log
.
info
(
"Grades: Created {task_name}[{task_id}] with arguments {kwargs}"
.
format
(
log
.
info
(
"Grades: Created {task_name}[{task_id}] with arguments {kwargs}"
.
format
(
task_name
=
compute_all_grades_for_course
.
name
,
task_name
=
compute_all_grades_for_course
.
name
,
task_id
=
result
.
task_id
,
task_id
=
result
.
task_id
,
...
...
cms/djangoapps/contentstore/tests/test_course_settings.py
View file @
867fac31
This diff is collapsed.
Click to expand it.
cms/djangoapps/models/settings/course_grading.py
View file @
867fac31
from
base64
import
b64encode
from
datetime
import
timedelta
from
datetime
import
timedelta
from
hashlib
import
sha1
import
json
from
contentstore.signals.signals
import
GRADING_POLICY_CHANGED
from
contentstore.signals.signals
import
GRADING_POLICY_CHANGED
from
eventtracking
import
tracker
from
track.event_transaction_utils
import
create_new_event_transaction_id
,
set_event_transaction_type
from
xmodule.modulestore.django
import
modulestore
from
xmodule.modulestore.django
import
modulestore
GRADING_POLICY_CHANGED_EVENT_TYPE
=
'edx.grades.grading_policy_changed'
class
CourseGradingModel
(
object
):
class
CourseGradingModel
(
object
):
"""
"""
...
@@ -66,8 +73,7 @@ class CourseGradingModel(object):
...
@@ -66,8 +73,7 @@ class CourseGradingModel(object):
CourseGradingModel
.
update_grace_period_from_json
(
course_key
,
jsondict
[
'grace_period'
],
user
)
CourseGradingModel
.
update_grace_period_from_json
(
course_key
,
jsondict
[
'grace_period'
],
user
)
CourseGradingModel
.
update_minimum_grade_credit_from_json
(
course_key
,
jsondict
[
'minimum_grade_credit'
],
user
)
CourseGradingModel
.
update_minimum_grade_credit_from_json
(
course_key
,
jsondict
[
'minimum_grade_credit'
],
user
)
_grading_event_and_signal
(
course_key
,
user
.
id
)
GRADING_POLICY_CHANGED
.
send
(
sender
=
CourseGradingModel
,
user_id
=
user
.
id
,
course_id
=
course_key
)
return
CourseGradingModel
.
fetch
(
course_key
)
return
CourseGradingModel
.
fetch
(
course_key
)
...
@@ -89,8 +95,7 @@ class CourseGradingModel(object):
...
@@ -89,8 +95,7 @@ class CourseGradingModel(object):
descriptor
.
raw_grader
.
append
(
grader
)
descriptor
.
raw_grader
.
append
(
grader
)
modulestore
()
.
update_item
(
descriptor
,
user
.
id
)
modulestore
()
.
update_item
(
descriptor
,
user
.
id
)
_grading_event_and_signal
(
course_key
,
user
.
id
)
GRADING_POLICY_CHANGED
.
send
(
sender
=
CourseGradingModel
,
user_id
=
user
.
id
,
course_id
=
course_key
)
return
CourseGradingModel
.
jsonize_grader
(
index
,
descriptor
.
raw_grader
[
index
])
return
CourseGradingModel
.
jsonize_grader
(
index
,
descriptor
.
raw_grader
[
index
])
...
@@ -104,7 +109,7 @@ class CourseGradingModel(object):
...
@@ -104,7 +109,7 @@ class CourseGradingModel(object):
descriptor
.
grade_cutoffs
=
cutoffs
descriptor
.
grade_cutoffs
=
cutoffs
modulestore
()
.
update_item
(
descriptor
,
user
.
id
)
modulestore
()
.
update_item
(
descriptor
,
user
.
id
)
_grading_event_and_signal
(
course_key
,
user
.
id
)
return
cutoffs
return
cutoffs
@staticmethod
@staticmethod
...
@@ -160,8 +165,7 @@ class CourseGradingModel(object):
...
@@ -160,8 +165,7 @@ class CourseGradingModel(object):
descriptor
.
raw_grader
=
descriptor
.
raw_grader
descriptor
.
raw_grader
=
descriptor
.
raw_grader
modulestore
()
.
update_item
(
descriptor
,
user
.
id
)
modulestore
()
.
update_item
(
descriptor
,
user
.
id
)
_grading_event_and_signal
(
course_key
,
user
.
id
)
GRADING_POLICY_CHANGED
.
send
(
sender
=
CourseGradingModel
,
user_id
=
user
.
id
,
course_id
=
course_key
)
@staticmethod
@staticmethod
def
delete_grace_period
(
course_key
,
user
):
def
delete_grace_period
(
course_key
,
user
):
...
@@ -192,13 +196,7 @@ class CourseGradingModel(object):
...
@@ -192,13 +196,7 @@ class CourseGradingModel(object):
del
descriptor
.
graded
del
descriptor
.
graded
modulestore
()
.
update_item
(
descriptor
,
user
.
id
)
modulestore
()
.
update_item
(
descriptor
,
user
.
id
)
_grading_event_and_signal
(
descriptor
.
location
.
course_key
,
user
.
id
)
GRADING_POLICY_CHANGED
.
send
(
sender
=
CourseGradingModel
,
user_id
=
user
.
id
,
course_id
=
descriptor
.
location
.
course_key
)
return
{
'graderType'
:
grader_type
}
return
{
'graderType'
:
grader_type
}
@staticmethod
@staticmethod
...
@@ -253,3 +251,27 @@ class CourseGradingModel(object):
...
@@ -253,3 +251,27 @@ class CourseGradingModel(object):
"short_label"
:
grader
.
get
(
'short_label'
,
""
),
"short_label"
:
grader
.
get
(
'short_label'
,
""
),
"weight"
:
grader
.
get
(
'weight'
,
0
)
*
100
,
"weight"
:
grader
.
get
(
'weight'
,
0
)
*
100
,
}
}
def
_grading_event_and_signal
(
course_key
,
user_id
):
name
=
GRADING_POLICY_CHANGED_EVENT_TYPE
course
=
modulestore
()
.
get_course
(
course_key
)
data
=
{
"course_id"
:
unicode
(
course_key
),
"user_id"
:
unicode
(
user_id
),
"grading_policy_hash"
:
unicode
(
hash_grading_policy
(
course
.
grading_policy
)),
"event_transaction_id"
:
unicode
(
create_new_event_transaction_id
()),
"event_transaction_type"
:
GRADING_POLICY_CHANGED_EVENT_TYPE
,
}
tracker
.
emit
(
name
,
data
)
GRADING_POLICY_CHANGED
.
send
(
sender
=
CourseGradingModel
,
user_id
=
user_id
,
course_id
=
course_key
)
def
hash_grading_policy
(
grading_policy
):
ordered_policy
=
json
.
dumps
(
grading_policy
,
separators
=
(
','
,
':'
),
# Remove spaces from separators for more compact representation
sort_keys
=
True
,
)
return
b64encode
(
sha1
(
ordered_policy
)
.
digest
())
lms/djangoapps/grades/tasks.py
View file @
867fac31
...
@@ -91,6 +91,12 @@ def compute_grades_for_course_v2(self, **kwargs):
...
@@ -91,6 +91,12 @@ def compute_grades_for_course_v2(self, **kwargs):
waffle switch. If false or not provided, use the global value of
waffle switch. If false or not provided, use the global value of
the ESTIMATE_FIRST_ATTEMPTED waffle switch.
the ESTIMATE_FIRST_ATTEMPTED waffle switch.
"""
"""
if
'event_transaction_id'
in
kwargs
:
set_event_transaction_id
(
kwargs
[
'event_transaction_id'
])
if
'event_transaction_type'
in
kwargs
:
set_event_transaction_type
(
kwargs
[
'event_transaction_type'
])
course_key
=
kwargs
.
pop
(
'course_key'
)
course_key
=
kwargs
.
pop
(
'course_key'
)
offset
=
kwargs
.
pop
(
'offset'
)
offset
=
kwargs
.
pop
(
'offset'
)
batch_size
=
kwargs
.
pop
(
'batch_size'
)
batch_size
=
kwargs
.
pop
(
'batch_size'
)
...
...
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