Description
openedon Mar 29, 2017
Hi,
First of all thank you for the great extention!
I have been looking around, however, I am unable to figure out how the assignment list is populated for each student on their own notebook server and how it can figure out which courses the students belong to (that is, if they exist in the gradebook database / config file for the specific course).
In fact, in my case using nbgrader version 0.4.0 and jupyterhub version 0.7.2 the assignment list shows all released assignments to any user that is logged in on the hub, regardless if they are in the database or config file for the course. I should note the course database and config is only visible to the course owner and root on the system (using chmod 0700 as course owner).
In the jupyterhub log I get the error every so often aswell:
10:08:41.253 - error: [ConfigProxy] Proxy error: Error: socket hang up
at createHangUpError (_http_client.js:252:15)
at Socket.socketCloseListener (_http_client.js:284:23)
at emitOne (events.js:101:20)
at Socket.emit (events.js:188:7)
at TCP._handle.close [as _onclose] (net.js:493:12)
10:08:41.253 - error: [ConfigProxy] 503 GET /user/nabr/assignments?course_id=SummerSchool&_=1490774917163
Which I think might be related, since it is some kind HTTP get.
In this case the course is called SummerSchool and my user [course owner] is nabr. I should note the error does not show up with other users, only the course owner. I suspect it wants to give the list of students in the courses to the hub somehow?
The nbgrader config for the course is:
c = get_config()
c.NbGrader.course_id = "SummerSchool"
c.FormgradeApp.authenticator_class = u'nbgrader.auth.hubauth.HubAuth'
c.FormgradeApp.ip = '127.0.0.1'
c.FormgradeApp.port = 5006 #Make sure port matches with the set port on jupyterHub service
c.HubAuth.grader_group = u'SummerSchool-graders'
# Update this list with other assignments you want
c.NbGrader.db_assignments = [dict(name="SummerSchool_CT"),dict(name="SummerSchool_other")]
# Change the students in this list with that actual students in
# your course or add the to the database later.
c.NbGrader.db_students = [
]
The relevant part of the jupyterhub config is
#For formgrader
c.JupyterHub.load_groups = {
'SummerSchool-graders': ['nabr']
}
#Services
c.JupyterHub.services = [
#SummerSchool
{
'name': 'formgrader-SummerSchool',
'admin': True,
'command': ['nbgrader', 'formgrade'],
'url': 'http://127.0.0.1:5006',
'cwd': '/home/nabr/SummerSchool/'
},
]
Everything else seems to work great, including the formgrader.
Hope you can explain this mystery to me :)
Best regards
Nicolai
Update:
If i pass the url
/user/nabr/assignments?course_id=SummerSchool
to jupyterhub i do in fact get the results returned:
{"success": true, "value": [{"course_id": "SummerSchool", "assignment_id": "SummerSchool_CT", "status": "released", ,"path": [I_Removed_these_paths]}
However, this is also the case for students that are not present in the database / config file.
Activity