-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
057c621
commit 37a4516
Showing
4 changed files
with
138 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
A script to setup nbgrader with Jupyterhub using the one class one grader demo. See | ||
|
||
`https://github.com/jupyter/nbgrader/tree/main/demos` | ||
|
||
# Installation | ||
|
||
`git clone https://github.com/derekyoungmath/nbgrader_jupyterhub_startup.git` | ||
`cd nbgrader_jupyterhub_startup` | ||
|
||
# Example | ||
|
||
## Initializing course | ||
|
||
Here the instructor is `jupyter-dyoung` and the course is `math232`. | ||
|
||
`sudo ./startup.sh jupyter-dyoung math232` | ||
|
||
Press `ok` for the 'Pending kernel upgrade' warning. | ||
Press `ok` to restart 'Daemons using outdated libraries'. | ||
|
||
## Adding students to course | ||
|
||
The following line adds students that have jupyter-hub accounts by using the | ||
default `Roster.xls` file provided by `my.mtholyoke.edu`. | ||
|
||
`sudo ./add_students.sh jupyter-dyoung math232 Roster.xls` | ||
|
||
### Manually adding students | ||
|
||
In addition to the student must being added to the course from the jupyter-hub | ||
notebook, the following lines must be run to enable the student's notebook | ||
functionality. | ||
|
||
`sudo -u jupyter-student_id /opt/tljh/user/bin/jupyter nbextension enable --user assignment_list/main --section=tree` | ||
`sudo -u jupyter-student_id /opt/tljh/user/bin/jupyter serverextension enable --user nbgrader.server_extensions.assignment_list` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
#!/usr/bin/env bash | ||
|
||
teacher=$1 | ||
course=$2 | ||
xls_file=$3 | ||
|
||
nbgrader='/opt/tljh/user/bin/nbgrader' | ||
jupyter='/opt/tljh/user/bin/jupyter' | ||
|
||
student_csv="/home/$teacher/$course/students.csv" | ||
echo "id,last_name,first_name,email" > $students_csv | ||
sed -r '/@mtholyoke.edu/!d; s/([^\t]*)\t([^\t]*)\t([^\t]*).*/\1,\2,\3/; s/ ([^(])/\1/g' $xls_file >> $students_csv | ||
$nbgrader db student import $students_csv | ||
|
||
while read i; do | ||
sudo -u jupyter-$i $jupyter nbextension enable --user assignment_list/main --section=tree | ||
sudo -u jupyter-$i $jupyter serverextension enable --user nbgrader.server_extensions.assignment_list | ||
# sudo -u jupyter-$i $jupyter labextension disable --level=user nbgrader/assignment-list | ||
# sudo -u jupyter-$i $jupyter labextension enable --level=user nbgrader/assignment-list | ||
done < <(sed -r '/@mtholyoke.edu/!d; s/.*[\t ]([^ ]*)@mtholyoke.edu.*/\1/g' $xls_file) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
{ | ||
"data": { | ||
"layout-restorer:data": { | ||
"main": { | ||
"dock": { | ||
"type": "tab-area", | ||
"currentIndex": 0, | ||
"widgets": [ | ||
"nbgrader-formgrader:nbgrader-formgrader" | ||
] | ||
}, | ||
"current": "nbgrader-formgrader:nbgrader-formgrader" | ||
}, | ||
"down": { | ||
"size": 0, | ||
"widgets": [] | ||
} | ||
}, | ||
"nbgrader-formgrader:nbgrader-formgrader": { | ||
"data": {} | ||
} | ||
}, | ||
"metadata": { | ||
"id": "formgrader" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
#!/usr/bin/env bash | ||
|
||
teacher=$1 | ||
course=$2 | ||
|
||
echo "Installing dependencies..." | ||
apt install -y npm | ||
npm install -g configurable-http-proxy | ||
|
||
echo "Creating directory '/srv/nbgrader' with permissions 'ugo+r'" | ||
mkdir -p /srv/nbgrader | ||
chmod ugo+r /srv/nbgrader | ||
|
||
pip install nbgrader | ||
nbgrader='/opt/tljh/user/bin/nbgrader' | ||
jupyter='/opt/tljh/user/bin/jupyter' | ||
|
||
rm -rf /opt/tljh/user/etc/jupyter | ||
|
||
$jupyter nbextension install --symlink --sys-prefix --py nbgrader --overwrite | ||
$jupyter nbextension disable --sys-prefix --py nbgrader | ||
$jupyter serverextension disable --sys-prefix --py nbgrader | ||
|
||
$jupyter nbextension enable --sys-prefix validate_assignment/main --section=notebook | ||
$jupyter serverextension enable --sys-prefix nbgrader.server_extensions.validate_assignment | ||
|
||
echo "Creating dir '/usr/local/share/nbgrader/exchange' with permissions 'ugo+rwx'" | ||
mkdir -p /usr/local/share/nbgrader/exchange | ||
chmod ugo+rwx /usr/local/share/nbgrader/exchange | ||
|
||
rm -f /etc/jupyter/nbgrader_config.py | ||
echo "Setting up JupyterHub to run in '/srv/nbgrader/jupyterhub'" | ||
mkdir -p /srv/nbgrader/jupyterhub | ||
rm -f /srv/nbgrader/jupyterhub/jupyterhub.sqlite | ||
rm -f /srv/nbgrader/jupyterhub/jupyterhub.cookie_secret | ||
echo "c=get_config()" > /srv/nbgrader/jupyterhub/jupyterhub_config.py | ||
echo "c.Authenticator.allowed_users = ['$teacher',]" >> /srv/nbgrader/jupyterhub/jupyterhub_config.py | ||
|
||
echo "Setting up nbgrader for user $teacher" | ||
mkdir /home/$teacher/.jupyter | ||
echo "c = get_config()'" > /home/$teacher/.jupyter/nbgrader_config.py | ||
echo "c.CourseDirectory.root = '/home/jupyter-$teacher/$course' >> /home/$teacher/.jupyter/nbgrader_config.py" | ||
echo "c.CourseDirectory.course_id = '$course' >> /home/$teacher/.jupyter/nbgrader_config.py" | ||
chown $teacher:$teacher /home/$teacher/.jupyter/nbgrader_config.py | ||
|
||
cd /home/$teacher | ||
runas="sudo -u $teacher" | ||
|
||
$runas $nbgrader quickstart $course | ||
|
||
$runas $jupyter nbextension enable --user create_assignment/main | ||
|
||
$runas $jupyter nbextension enable --user formgrader/main --section=tree | ||
$runas $jupyter serverextension enable --user nbgrader.server_extensions.formgrader | ||
|
||
$runas $jupyter nbextension enable --user assignment_list/main --section=tree | ||
$runas $jupyter serverextension enable --user nbgrader.server_extensions.assignment_list |