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
ca4ca008
Commit
ca4ca008
authored
Jul 07, 2013
by
ichuang
Committed by
Justin Riley
Jun 09, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
proctor_module: get username, and also handle problemset
parent
c7f88ae9
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
68 additions
and
20 deletions
+68
-20
common/lib/xmodule/xmodule/proctor_module.py
+15
-8
lms/templates/proctor_release.html
+53
-12
No files found.
common/lib/xmodule/xmodule/proctor_module.py
View file @
ca4ca008
...
@@ -7,6 +7,7 @@ from lxml import etree
...
@@ -7,6 +7,7 @@ from lxml import etree
from
pkg_resources
import
resource_string
from
pkg_resources
import
resource_string
from
django.conf
import
settings
from
django.conf
import
settings
from
django.contrib.auth.models
import
User
from
xmodule.x_module
import
XModule
from
xmodule.x_module
import
XModule
from
xmodule.seq_module
import
SequenceDescriptor
from
xmodule.seq_module
import
SequenceDescriptor
...
@@ -29,6 +30,7 @@ class ProctorPanel(object):
...
@@ -29,6 +30,7 @@ class ProctorPanel(object):
self
.
user_id
=
user_id
self
.
user_id
=
user_id
self
.
procset_name
=
procset_name
self
.
procset_name
=
procset_name
self
.
ses
=
requests
.
session
()
self
.
ses
=
requests
.
session
()
self
.
user
=
User
.
objects
.
get
(
pk
=
user_id
)
def
is_released
(
self
):
def
is_released
(
self
):
url
=
'{2}/cmd/status/{0}/{1}'
.
format
(
self
.
user_id
,
self
.
procset_name
,
self
.
ProctorPanelServer
)
url
=
'{2}/cmd/status/{0}/{1}'
.
format
(
self
.
user_id
,
self
.
procset_name
,
self
.
ProctorPanelServer
)
...
@@ -101,21 +103,25 @@ class ProctorModule(ProctorFields, XModule):
...
@@ -101,21 +103,25 @@ class ProctorModule(ProctorFields, XModule):
return
[
self
.
child_descriptor
]
return
[
self
.
child_descriptor
]
def
get_html
(
self
):
def
not_released_html
(
self
):
if
not
self
.
pp
.
is_released
():
# check for release each time we do get_html()
return
self
.
system
.
render_template
(
'proctor_release.html'
,
{
log
.
info
(
'is_released False'
)
return
self
.
system
.
render_template
(
'proctor_release.html'
,
{
'element_id'
:
self
.
location
.
html_id
(),
'element_id'
:
self
.
location
.
html_id
(),
'id'
:
self
.
id
,
'id'
:
self
.
id
,
'name'
:
self
.
display_name
,
'name'
:
self
.
display_name
or
self
.
procset_name
,
'pp'
:
self
.
pp
,
'pp'
:
self
.
pp
,
})
})
def
get_html
(
self
):
if
not
self
.
pp
.
is_released
():
# check for release each time we do get_html()
log
.
info
(
'is_released False'
)
return
self
.
not_released_html
()
# return "<div>%s not yet released</div>" % self.display_name
# return "<div>%s not yet released</div>" % self.display_name
log
.
info
(
'is_released True'
)
log
.
info
(
'is_released True'
)
# for sequential module, just return HTML (no ajax container)
# for sequential module, just return HTML (no ajax container)
if
self
.
child
.
category
in
[
'sequential'
,
'videosequence'
]:
if
self
.
child
.
category
in
[
'sequential'
,
'videosequence'
,
'problemset'
]:
return
self
.
child
.
get_html
()
return
self
.
child
.
get_html
()
# return ajax container, so that we can dynamically check for is_released changing
# return ajax container, so that we can dynamically check for is_released changing
...
@@ -131,7 +137,8 @@ class ProctorModule(ProctorFields, XModule):
...
@@ -131,7 +137,8 @@ class ProctorModule(ProctorFields, XModule):
def
handle_ajax
(
self
,
_dispatch
,
_data
):
def
handle_ajax
(
self
,
_dispatch
,
_data
):
if
not
self
.
pp
.
is_released
():
# check for release each time we do get_html()
if
not
self
.
pp
.
is_released
():
# check for release each time we do get_html()
log
.
info
(
'is_released False'
)
log
.
info
(
'is_released False'
)
html
=
"<div>
%
s not yet released</div>"
%
self
.
display_name
# html = "<div>%s not yet released</div>" % self.display_name
html
=
self
.
not_released_html
()
return
json
.
dumps
({
'html'
:
[
html
],
'message'
:
bool
(
True
)})
return
json
.
dumps
({
'html'
:
[
html
],
'message'
:
bool
(
True
)})
html
=
[
child
.
get_html
()
for
child
in
self
.
get_display_items
()]
html
=
[
child
.
get_html
()
for
child
in
self
.
get_display_items
()]
...
...
lms/templates/proctor_release.html
View file @
ca4ca008
<div
id=
"proctor_${element_id}"
>
<div
id=
"proctor_${element_id}"
>
<p>
Welcome ${pp.user.profile.name or pp.user}
</p>
<p>
${name} not yet released
</p>
<p>
${name} not yet released
</p>
<p><a
href=
"#"
id=
"proctor_${element_id}"
>
Request Access
</a></p>
<p><a
href=
"#"
id=
"proctor_${element_id}"
>
Request Access
</a></p>
...
@@ -10,27 +12,65 @@
...
@@ -10,27 +12,65 @@
<script
type=
"text/javascript"
>
<script
type=
"text/javascript"
>
procrel
=
(
function
(){
procrel
=
(
function
(){
var
el
=
$
(
'#proctor_${element_id}'
);
var
el
=
$
(
'#proctor_${element_id}'
);
var
ppurl
=
"${pp.ProctorPanelServer}/cmd/request/${pp.user_id}/${pp.procset_name}"
;
var
mkurl
=
function
(
cmd
)
{
ps
=
encodeURIComponent
(
"${pp.procset_name}"
);
return
"${pp.ProctorPanelServer}/cmd/"
+
cmd
+
"/${pp.user_id}/"
+
ps
;
}
var
statel
=
$
(
'#proctor_stat_${element_id}'
);
var
statel
=
$
(
'#proctor_stat_${element_id}'
);
var
setstat
=
function
(
status
){
var
setstat
=
function
(
status
){
el
.
html
(
'<font color="green">'
+
status
+
'</font>'
);
stat
el
.
html
(
'<font color="green">'
+
status
+
'</font>'
);
}
}
el
.
click
(
function
(){
var
check_access
=
function
(){
$
.
ajax
({
url
:
ppurl
,
$
.
get
(
mkurl
(
'status'
),
function
(
data
){
type
:
'POST'
,
console
.
log
(
data
);
data
:
""
,
if
(
data
.
enabled
)
{
success
:
function
(
result
){
alert
(
"Access Granted!"
);
setstat
(
result
.
status
);
location
.
reload
();
}
});
}
var
check_count
=
0
;
var
periodic_check
=
function
()
{
check_count
=
check_count
+
1
;
if
(
check_count
<
100
){
// >
setTimeout
(
periodic_check
,
2000
);
}
check_access
();
}
var
make_request
=
function
(){
check_count
=
0
;
$
.
ajax
({
url
:
mkurl
(
'request'
),
type
:
'GET'
,
data
:
{
"uname"
:
"${pp.user.username}"
,
"name"
:
"${pp.user.profile.name}"
},
success
:
function
(
result
,
status
,
xhr
){
//setstat(result.status);
setstat
(
result
.
status
);
//alert(result);
// location.reload();
// location.reload();
periodic_check
();
},
},
crossDomain
:
true
,
//dataType: "text",
error
:
function
()
{
dataType
:
"json"
,
alert
(
'Error: cannot connect to server'
);
// crossDomain: true,
error
:
function
(
xhr
,
status
,
error
)
{
alert
(
'Error: cannot connect to server'
+
status
+
"error:"
+
error
);
}
}
});
});
});
}
el
.
click
(
make_request
);
return
{
"check"
:
check_access
,
"make"
:
make_request
,
"mkurl"
:
mkurl
};
}()
);
}()
);
</script>
</script>
\ No newline at end of file
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