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
d14c8e25
Commit
d14c8e25
authored
Feb 19, 2013
by
Brian Talbot
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'drupal-new' of github.com:MITx/mitx into drupal-new
parents
074f866b
4596fa41
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
26 additions
and
26 deletions
+26
-26
common/djangoapps/student/views.py
+25
-25
lms/urls.py
+1
-1
No files found.
common/djangoapps/student/views.py
View file @
d14c8e25
...
...
@@ -212,7 +212,7 @@ def _cert_info(user, course, cert_status):
return
d
def
log
in_user
(
request
):
def
sign
in_user
(
request
):
"""
This view will display the non-modal login form
"""
...
...
@@ -1085,14 +1085,14 @@ def accept_name_change(request):
@csrf_exempt
def
test_center_login
(
request
):
# errors are returned by navigating to the error_url, adding a query parameter named "code"
# errors are returned by navigating to the error_url, adding a query parameter named "code"
# which contains the error code describing the exceptional condition.
def
makeErrorURL
(
error_url
,
error_code
):
log
.
error
(
"generating error URL with error code {}"
.
format
(
error_code
))
return
"{}?code={}"
.
format
(
error_url
,
error_code
);
# get provided error URL, which will be used as a known prefix for returning error messages to the
# Pearson shell.
# Pearson shell.
error_url
=
request
.
POST
.
get
(
"errorURL"
)
# TODO: check that the parameters have not been tampered with, by comparing the code provided by Pearson
...
...
@@ -1103,12 +1103,12 @@ def test_center_login(request):
# calculate SHA for query string
# TODO: figure out how to get the original query string, so we can hash it and compare.
if
'clientCandidateID'
not
in
request
.
POST
:
return
HttpResponseRedirect
(
makeErrorURL
(
error_url
,
"missingClientCandidateID"
));
client_candidate_id
=
request
.
POST
.
get
(
"clientCandidateID"
)
# TODO: check remaining parameters, and maybe at least log if they're not matching
# expected values....
# registration_id = request.POST.get("registrationID")
...
...
@@ -1122,12 +1122,12 @@ def test_center_login(request):
return
HttpResponseRedirect
(
makeErrorURL
(
error_url
,
"invalidClientCandidateID"
));
# find testcenter_registration that matches the provided exam code:
# Note that we could rely in future on either the registrationId or the exam code,
# or possibly both. But for now we know what to do with an ExamSeriesCode,
# Note that we could rely in future on either the registrationId or the exam code,
# or possibly both. But for now we know what to do with an ExamSeriesCode,
# while we currently have no record of RegistrationID values at all.
if
'vueExamSeriesCode'
not
in
request
.
POST
:
# we are not allowed to make up a new error code, according to Pearson,
# so instead of "missingExamSeriesCode", we use a valid one that is
# we are not allowed to make up a new error code, according to Pearson,
# so instead of "missingExamSeriesCode", we use a valid one that is
# inaccurate but at least distinct. (Sigh.)
log
.
error
(
"missing exam series code for cand ID {}"
.
format
(
client_candidate_id
))
return
HttpResponseRedirect
(
makeErrorURL
(
error_url
,
"missingPartnerID"
));
...
...
@@ -1141,11 +1141,11 @@ def test_center_login(request):
if
not
registrations
:
log
.
error
(
"not able to find exam registration for exam {} and cand ID {}"
.
format
(
exam_series_code
,
client_candidate_id
))
return
HttpResponseRedirect
(
makeErrorURL
(
error_url
,
"noTestsAssigned"
));
# TODO: figure out what to do if there are more than one registrations....
# for now, just take the first...
registration
=
registrations
[
0
]
course_id
=
registration
.
course_id
course
=
course_from_id
(
course_id
)
# assume it will be found....
if
not
course
:
...
...
@@ -1163,19 +1163,19 @@ def test_center_login(request):
if
not
timelimit_descriptor
:
log
.
error
(
"cand {} on exam {} for course {}: descriptor not found for location {}"
.
format
(
client_candidate_id
,
exam_series_code
,
course_id
,
location
))
return
HttpResponseRedirect
(
makeErrorURL
(
error_url
,
"missingClientProgram"
));
timelimit_module_cache
=
StudentModuleCache
.
cache_for_descriptor_descendents
(
course_id
,
testcenteruser
.
user
,
timelimit_module_cache
=
StudentModuleCache
.
cache_for_descriptor_descendents
(
course_id
,
testcenteruser
.
user
,
timelimit_descriptor
,
depth
=
None
)
timelimit_module
=
get_module_for_descriptor
(
request
.
user
,
request
,
timelimit_descriptor
,
timelimit_module
=
get_module_for_descriptor
(
request
.
user
,
request
,
timelimit_descriptor
,
timelimit_module_cache
,
course_id
,
position
=
None
)
if
not
timelimit_module
.
category
==
'timelimit'
:
log
.
error
(
"cand {} on exam {} for course {}: non-timelimit module at location {}"
.
format
(
client_candidate_id
,
exam_series_code
,
course_id
,
location
))
return
HttpResponseRedirect
(
makeErrorURL
(
error_url
,
"missingClientProgram"
));
if
timelimit_module
and
timelimit_module
.
has_ended
:
log
.
warning
(
"cand {} on exam {} for course {}: test already over at {}"
.
format
(
client_candidate_id
,
exam_series_code
,
course_id
,
timelimit_module
.
ending_at
))
return
HttpResponseRedirect
(
makeErrorURL
(
error_url
,
"allTestsTaken"
));
# check if we need to provide an accommodation:
time_accommodation_mapping
=
{
'ET12ET'
:
'ADDHALFTIME'
,
'ET30MN'
:
'ADD30MIN'
,
...
...
@@ -1188,27 +1188,27 @@ def test_center_login(request):
# special, hard-coded client ID used by Pearson shell for testing:
if
client_candidate_id
==
"edX003671291147"
:
time_accommodation_code
=
'TESTING'
if
time_accommodation_code
:
timelimit_module
.
accommodation_code
=
time_accommodation_code
instance_module
=
get_instance_module
(
course_id
,
testcenteruser
.
user
,
timelimit_module
,
timelimit_module_cache
)
instance_module
.
state
=
timelimit_module
.
get_instance_state
()
instance_module
.
save
()
log
.
info
(
"cand {} on exam {} for course {}: receiving accommodation {}"
.
format
(
client_candidate_id
,
exam_series_code
,
course_id
,
time_accommodation_code
))
# UGLY HACK!!!
# Login assumes that authentication has occurred, and that there is a
# Login assumes that authentication has occurred, and that there is a
# backend annotation on the user object, indicating which backend
# against which the user was authenticated. We're authenticating here
# against the registration entry, and assuming that the request given
# this information is correct, we allow the user to be logged in
# without a password. This could all be formalized in a backend object
# that does the above checking.
# that does the above checking.
# TODO: (brian) create a backend class to do this.
# testcenteruser.user.backend = "%s.%s" % (backend.__module__, backend.__class__.__name__)
testcenteruser
.
user
.
backend
=
"
%
s.
%
s"
%
(
"TestcenterAuthenticationModule"
,
"TestcenterAuthenticationClass"
)
# testcenteruser.user.backend = "%s.%s" % (backend.__module__, backend.__class__.__name__)
testcenteruser
.
user
.
backend
=
"
%
s.
%
s"
%
(
"TestcenterAuthenticationModule"
,
"TestcenterAuthenticationClass"
)
login
(
request
,
testcenteruser
.
user
)
# And start the test:
return
jump_to
(
request
,
course_id
,
location
)
...
...
lms/urls.py
View file @
d14c8e25
...
...
@@ -15,7 +15,7 @@ urlpatterns = ('',
url
(
r'^update_certificate$'
,
'certificates.views.update_certificate'
),
url
(
r'^$'
,
'branding.views.index'
,
name
=
"root"
),
# Main marketing page, or redirect to courseware
url
(
r'^dashboard$'
,
'student.views.dashboard'
,
name
=
"dashboard"
),
url
(
r'^signin$'
,
'student.views.
login_user'
,
name
=
"log
in_user"
),
url
(
r'^signin$'
,
'student.views.
signin_user'
,
name
=
"sign
in_user"
),
url
(
r'^register$'
,
'student.views.register_user'
,
name
=
"register_user"
),
url
(
r'^admin_dashboard$'
,
'dashboard.views.dashboard'
),
...
...
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