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
e50ef39b
Commit
e50ef39b
authored
Jan 31, 2014
by
Julia Hansbrough
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Midcourse reverification: Events
parent
63a22ad0
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
58 additions
and
1 deletions
+58
-1
lms/djangoapps/verify_student/tests/test_views.py
+38
-0
lms/djangoapps/verify_student/views.py
+20
-1
No files found.
lms/djangoapps/verify_student/tests/test_views.py
View file @
e50ef39b
...
...
@@ -20,6 +20,8 @@ from django.conf import settings
from
django.core.urlresolvers
import
reverse
from
django.core.exceptions
import
ObjectDoesNotExist
from
mock
import
sentinel
from
xmodule.modulestore.tests.factories
import
CourseFactory
from
courseware.tests.tests
import
TEST_DATA_MONGO_MODULESTORE
from
student.tests.factories
import
UserFactory
...
...
@@ -130,11 +132,33 @@ class TestMidCourseReverifyView(TestCase):
self
.
course_id
=
'Robot/999/Test_Course'
CourseFactory
.
create
(
org
=
'Robot'
,
number
=
'999'
,
display_name
=
'Test Course'
)
patcher
=
patch
(
'student.models.server_track'
)
self
.
mock_server_track
=
patcher
.
start
()
self
.
addCleanup
(
patcher
.
stop
)
crum_patcher
=
patch
(
'student.models.crum.get_current_request'
)
self
.
mock_get_current_request
=
crum_patcher
.
start
()
self
.
addCleanup
(
crum_patcher
.
stop
)
self
.
mock_get_current_request
.
return_value
=
sentinel
.
request
@patch
(
'verify_student.views.render_to_response'
,
render_mock
)
def
test_midcourse_reverify_get
(
self
):
url
=
reverse
(
'verify_student_midcourse_reverify'
,
kwargs
=
{
"course_id"
:
self
.
course_id
})
response
=
self
.
client
.
get
(
url
)
# Check that user entering the reverify flow was logged
self
.
mock_server_track
.
assert_called_once_with
(
sentinel
.
request
,
'edx.course.enrollment.reverify.started'
,
{
'user_id'
:
self
.
user
.
id
,
'course_id'
:
self
.
course_id
,
'mode'
:
"verified"
,
}
)
self
.
mock_server_track
.
reset_mock
()
self
.
assertEquals
(
response
.
status_code
,
200
)
((
_template
,
context
),
_kwargs
)
=
render_mock
.
call_args
self
.
assertFalse
(
context
[
'error'
])
...
...
@@ -143,7 +167,21 @@ class TestMidCourseReverifyView(TestCase):
def
test_midcourse_reverify_post_success
(
self
):
window
=
MidcourseReverificationWindowFactory
(
course_id
=
self
.
course_id
)
url
=
reverse
(
'verify_student_midcourse_reverify'
,
kwargs
=
{
'course_id'
:
self
.
course_id
})
response
=
self
.
client
.
post
(
url
,
{
'face_image'
:
','
})
# Check that submission event was logged
self
.
mock_server_track
.
assert_called_once_with
(
sentinel
.
request
,
'edx.course.enrollment.reverify.submitted'
,
{
'user_id'
:
self
.
user
.
id
,
'course_id'
:
self
.
course_id
,
'mode'
:
"verified"
,
}
)
self
.
mock_server_track
.
reset_mock
()
self
.
assertEquals
(
response
.
status_code
,
302
)
try
:
verification_attempt
=
SoftwareSecurePhotoVerification
.
objects
.
get
(
user
=
self
.
user
,
window
=
window
)
...
...
lms/djangoapps/verify_student/views.py
View file @
e50ef39b
...
...
@@ -6,6 +6,8 @@ import json
import
logging
import
decimal
import
datetime
import
crum
from
track.views
import
server_track
from
pytz
import
UTC
from
edxmako.shortcuts
import
render_to_response
...
...
@@ -39,6 +41,10 @@ from .exceptions import WindowExpiredException
log
=
logging
.
getLogger
(
__name__
)
EVENT_NAME_USER_ENTERED_MIDCOURSE_REVERIFY_VIEW
=
'edx.course.enrollment.reverify.started'
EVENT_NAME_USER_SUBMITTED_MIDCOURSE_REVERIFY
=
'edx.course.enrollment.reverify.submitted'
EVENT_NAME_USER_REVERIFICATION_REVIEWED_BY_SOFTWARESECURE
=
'edx.course.enrollment.reverify.reviewed'
class
VerifyView
(
View
):
@method_decorator
(
login_required
)
...
...
@@ -251,6 +257,13 @@ def results_callback(request):
"Result {} not understood. Known results: PASS, FAIL, SYSTEM FAIL"
.
format
(
result
)
)
# If this is a reverification, log an event
if
attempt
.
window
:
course_id
=
window
.
course_id
course
=
course_from_id
(
course_id
)
course_enrollment
=
CourseEnrollment
.
get_or_create_enrollment
(
attempt
.
user
,
course_id
)
course_enrollment
.
emit_event
(
EVENT_NAME_USER_REVERIFICATION_REVIEWED_BY_SOFTWARESECURE
)
return
HttpResponse
(
"OK!"
)
...
...
@@ -345,6 +358,9 @@ class MidCourseReverifyView(View):
display this view
"""
course
=
course_from_id
(
course_id
)
course_enrollment
=
CourseEnrollment
.
get_or_create_enrollment
(
request
.
user
,
course_id
)
course_enrollment
.
update_enrollment
(
mode
=
"verified"
)
course_enrollment
.
emit_event
(
EVENT_NAME_USER_ENTERED_MIDCOURSE_REVERIFY_VIEW
)
context
=
{
"user_full_name"
:
request
.
user
.
profile
.
name
,
"error"
:
False
,
...
...
@@ -353,8 +369,8 @@ class MidCourseReverifyView(View):
"course_org"
:
course
.
display_org_with_default
,
"course_num"
:
course
.
display_number_with_default
,
"reverify"
:
True
,
}
return
render_to_response
(
"verify_student/midcourse_photo_reverification.html"
,
context
)
@method_decorator
(
login_required
)
...
...
@@ -376,6 +392,9 @@ class MidCourseReverifyView(View):
attempt
.
save
()
attempt
.
submit
()
course_enrollment
=
CourseEnrollment
.
get_or_create_enrollment
(
request
.
user
,
course_id
)
course_enrollment
.
update_enrollment
(
mode
=
"verified"
)
course_enrollment
.
emit_event
(
EVENT_NAME_USER_SUBMITTED_MIDCOURSE_REVERIFY
)
return
HttpResponseRedirect
(
reverse
(
'verify_student_midcourse_reverification_confirmation'
))
except
WindowExpiredException
:
...
...
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