e2xauthoring 0.2.1__tar.gz → 0.3.0.dev0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- e2xauthoring-0.3.0.dev0/.github/workflows/black.yml +10 -0
- e2xauthoring-0.3.0.dev0/.github/workflows/ruff.yml +8 -0
- e2xauthoring-0.3.0.dev0/.readthedocs.yaml +35 -0
- e2xauthoring-0.3.0.dev0/PKG-INFO +67 -0
- e2xauthoring-0.3.0.dev0/README.md +40 -0
- e2xauthoring-0.3.0.dev0/docs/requirements.txt +1 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/conf.py +25 -1
- e2xauthoring-0.2.1/docs/source/user_docs/highlights.rst → e2xauthoring-0.3.0.dev0/docs/source/index.rst +57 -6
- e2xauthoring-0.3.0.dev0/docs/source/setup/index.rst +8 -0
- e2xauthoring-0.3.0.dev0/docs/source/user_docs/img/add_tasks.png +0 -0
- e2xauthoring-0.3.0.dev0/docs/source/user_docs/img/assignments.png +0 -0
- e2xauthoring-0.3.0.dev0/docs/source/user_docs/img/choose_tasks_1.png +0 -0
- e2xauthoring-0.3.0.dev0/docs/source/user_docs/img/new_task.png +0 -0
- e2xauthoring-0.3.0.dev0/docs/source/user_docs/img/tasks.png +0 -0
- e2xauthoring-0.3.0.dev0/docs/source/user_docs/img/templates.png +0 -0
- e2xauthoring-0.3.0.dev0/docs/source/user_docs/img/worksheet_options.png +0 -0
- e2xauthoring-0.3.0.dev0/docs/source/user_docs/index.rst +12 -0
- e2xauthoring-0.3.0.dev0/e2xauthoring/__version__.py +1 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/app/handlers/base.py +41 -19
- e2xauthoring-0.3.0.dev0/e2xauthoring/app/templates/authoring/asset-manifest.json +10 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/app/templates/authoring/index.html +1 -1
- e2xauthoring-0.3.0.dev0/e2xauthoring/app/templates/authoring/static/js/main.4c8c48b6.js +3 -0
- e2xauthoring-0.3.0.dev0/e2xauthoring/app/templates/authoring/static/js/main.4c8c48b6.js.map +1 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/managers/taskmanager.py +20 -11
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/managers/taskpoolmanager.py +29 -17
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/managers/templatemanager.py +3 -1
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/package-lock.json +6 -6
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/package.json +1 -1
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/pyproject.toml +4 -1
- e2xauthoring-0.2.1/PKG-INFO +0 -29
- e2xauthoring-0.2.1/README.md +0 -5
- e2xauthoring-0.2.1/docs/source/index.rst +0 -37
- e2xauthoring-0.2.1/docs/source/user_docs/img/add_tasks.png +0 -0
- e2xauthoring-0.2.1/docs/source/user_docs/img/choose_tasks_1.png +0 -0
- e2xauthoring-0.2.1/docs/source/user_docs/img/new_task.png +0 -0
- e2xauthoring-0.2.1/docs/source/user_docs/img/worksheet_options.png +0 -0
- e2xauthoring-0.2.1/e2xauthoring/__version__.py +0 -1
- e2xauthoring-0.2.1/e2xauthoring/app/templates/authoring/asset-manifest.json +0 -10
- e2xauthoring-0.2.1/e2xauthoring/app/templates/authoring/static/js/main.b3c19960.js +0 -3
- e2xauthoring-0.2.1/e2xauthoring/app/templates/authoring/static/js/main.b3c19960.js.map +0 -1
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/.github/workflows/sonarcloud.yml +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/.gitignore +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/.pre-commit-config.yaml +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/LICENSE +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/MANIFEST.in +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/Makefile +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/make.bat +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/setup/installation.rst +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/img/add_files.png +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/img/add_question.png +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/img/assignment_worksheets.drawio +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/img/assignment_worksheets.png +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/img/attachment_editor.png +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/img/autograded_code_question.png +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/img/diagram_question.png +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/img/diagram_question_rendered.png +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/img/freetext_question.png +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/img/make_worksheet.drawio +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/img/make_worksheet.png +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/img/manual_code_question.png +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/img/multiple_choice_question.png +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/img/multiple_choice_question_rendered.png +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/img/sample_template.png +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/img/sample_template_variables.png +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/img/single_choice_question.png +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/img/single_choice_question_rendered.png +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/img/upload_question_rendered.png +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/img/worksheet.png +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/img/worksheets.drawio +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/img/worksheets.png +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/pool.rst +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/questions.rst +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/task.rst +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/template.rst +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/docs/source/user_docs/worksheet.rst +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/__init__.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/app/__init__.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/app/authoring.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/app/handlers/apihandlers.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/app/handlers/handlers.py +0 -0
- /e2xauthoring-0.2.1/e2xauthoring/app/templates/authoring/static/js/main.b3c19960.js.LICENSE.txt → /e2xauthoring-0.3.0.dev0/e2xauthoring/app/templates/authoring/static/js/main.4c8c48b6.js.LICENSE.txt +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/assets/.gitignore +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/converters/__init__.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/converters/converter.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/converters/generateexercise.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/managers/__init__.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/managers/assignmentmanager.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/managers/base.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/managers/dataclasses/__init__.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/managers/presetmanager.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/managers/presets/questions/Code (Autograded).ipynb +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/managers/presets/questions/Code (Manual).ipynb +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/managers/presets/questions/Diagram.ipynb +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/managers/presets/questions/Freetext.ipynb +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/managers/presets/questions/Multiple Choice.ipynb +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/managers/presets/questions/Single Choice.ipynb +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/managers/presets/questions/Upload Files.ipynb +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/managers/presets/template/Footer.ipynb +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/managers/presets/template/Group Info.ipynb +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/managers/presets/template/Header.ipynb +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/managers/presets/template/Student Info.ipynb +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/managers/worksheetmanager.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/preprocessors/__init__.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/preprocessors/addtaskheader.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/preprocessors/copyfiles.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/preprocessors/copynotebooks.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/preprocessors/filltemplate.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/preprocessors/generatetaskids.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/preprocessors/makeexercise.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/preprocessors/preprocessor.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/preprocessors/removeexercise.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/utils/__init__.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/utils/gitutils.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/utils/notebookvariableextractor.py +0 -0
- {e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/lerna.json +0 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Read the Docs configuration file for Sphinx projects
|
|
2
|
+
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
|
3
|
+
|
|
4
|
+
# Required
|
|
5
|
+
version: 2
|
|
6
|
+
|
|
7
|
+
# Set the OS, Python version and other tools you might need
|
|
8
|
+
build:
|
|
9
|
+
os: ubuntu-22.04
|
|
10
|
+
tools:
|
|
11
|
+
python: "3.11"
|
|
12
|
+
# You can also specify other tool versions:
|
|
13
|
+
# nodejs: "20"
|
|
14
|
+
# rust: "1.70"
|
|
15
|
+
# golang: "1.20"
|
|
16
|
+
|
|
17
|
+
# Build documentation in the "docs/" directory with Sphinx
|
|
18
|
+
sphinx:
|
|
19
|
+
configuration: docs/source/conf.py
|
|
20
|
+
# You can configure Sphinx to use a different builder, for instance use the dirhtml builder for simpler URLs
|
|
21
|
+
# builder: "dirhtml"
|
|
22
|
+
# Fail on all warnings to avoid broken references
|
|
23
|
+
# fail_on_warning: true
|
|
24
|
+
|
|
25
|
+
# Optionally build your docs in additional formats such as PDF and ePub
|
|
26
|
+
# formats:
|
|
27
|
+
# - pdf
|
|
28
|
+
# - epub
|
|
29
|
+
|
|
30
|
+
# Optional but recommended, declare the Python requirements required
|
|
31
|
+
# to build your documentation
|
|
32
|
+
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
|
|
33
|
+
python:
|
|
34
|
+
install:
|
|
35
|
+
- requirements: docs/requirements.txt
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: e2xauthoring
|
|
3
|
+
Version: 0.3.0.dev0
|
|
4
|
+
Summary: Authoring app for e2xgrader
|
|
5
|
+
Project-URL: Source, https://github.com/Digiklausur/e2xauthoring
|
|
6
|
+
Project-URL: Documentation, https://e2xauthoring.readthedocs.io/en/latest/
|
|
7
|
+
Project-URL: Issues, https://github.com/Digiklausur/e2xauthoring/issues
|
|
8
|
+
Project-URL: Pypi, https://pypi.org/project/e2xauthoring/
|
|
9
|
+
Author-email: Tim Metzler <tim.metzler@h-brs.de>
|
|
10
|
+
License-Expression: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Classifier: Programming Language :: Python
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.7
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
+
Requires-Python: >=3.7
|
|
18
|
+
Requires-Dist: e2xcore>=0.0.5
|
|
19
|
+
Requires-Dist: gitpython
|
|
20
|
+
Provides-Extra: dev
|
|
21
|
+
Requires-Dist: hatchling; extra == 'dev'
|
|
22
|
+
Requires-Dist: pre-commit; extra == 'dev'
|
|
23
|
+
Requires-Dist: pydata-sphinx-theme; extra == 'dev'
|
|
24
|
+
Requires-Dist: sphinx; extra == 'dev'
|
|
25
|
+
Requires-Dist: tbump; extra == 'dev'
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
|
|
28
|
+
# e2xauthoring
|
|
29
|
+
[](https://pypi.org/project/e2xauthoring) [](https://opensource.org/licenses/MIT) [](https://e2xauthoring.readthedocs.io)
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
e2xauthoring is an add-on for e2xgrader that adds functionality for authoring assignments.
|
|
33
|
+
e2xauthoring streamlines assignment creation for nbgrader by utilizing reusable components known as *tasks* and *templates*.
|
|
34
|
+
Please refer to the [documenation](https://e2xauthoring.readthedocs.io) for further information.
|
|
35
|
+
## Screenshots
|
|
36
|
+
|
|
37
|
+
Create a task from question presets:
|
|
38
|
+

|
|
39
|
+
|
|
40
|
+
<br/>
|
|
41
|
+
|
|
42
|
+
Creating a worksheet from tasks and a template:
|
|
43
|
+

|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
## Requirements
|
|
47
|
+
|
|
48
|
+
- e2xcore
|
|
49
|
+
|
|
50
|
+
## Install
|
|
51
|
+
|
|
52
|
+
The add-on is automatically installed alongside e2xgrader.
|
|
53
|
+
To install it yourself, execute:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
pip install e2xauthoring
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Uninstall
|
|
60
|
+
|
|
61
|
+
To uninstall, execute:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
pip uninstall e2xauthoring
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# e2xauthoring
|
|
2
|
+
[](https://pypi.org/project/e2xauthoring) [](https://opensource.org/licenses/MIT) [](https://e2xauthoring.readthedocs.io)
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
e2xauthoring is an add-on for e2xgrader that adds functionality for authoring assignments.
|
|
6
|
+
e2xauthoring streamlines assignment creation for nbgrader by utilizing reusable components known as *tasks* and *templates*.
|
|
7
|
+
Please refer to the [documenation](https://e2xauthoring.readthedocs.io) for further information.
|
|
8
|
+
## Screenshots
|
|
9
|
+
|
|
10
|
+
Create a task from question presets:
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
<br/>
|
|
14
|
+
|
|
15
|
+
Creating a worksheet from tasks and a template:
|
|
16
|
+

|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
## Requirements
|
|
20
|
+
|
|
21
|
+
- e2xcore
|
|
22
|
+
|
|
23
|
+
## Install
|
|
24
|
+
|
|
25
|
+
The add-on is automatically installed alongside e2xgrader.
|
|
26
|
+
To install it yourself, execute:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
pip install e2xauthoring
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Uninstall
|
|
33
|
+
|
|
34
|
+
To uninstall, execute:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
pip uninstall e2xauthoring
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pydata-sphinx-theme
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
project = "e2xauthoring"
|
|
10
10
|
copyright = "2023, Tim Metzler"
|
|
11
11
|
author = "Tim Metzler"
|
|
12
|
-
release = "0.
|
|
12
|
+
release = "0.3.0-dev0"
|
|
13
|
+
github_project_url = "https://github.com/Digiklausur/e2xauthoring"
|
|
13
14
|
|
|
14
15
|
# -- General configuration ---------------------------------------------------
|
|
15
16
|
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
|
|
@@ -25,3 +26,26 @@ exclude_patterns = []
|
|
|
25
26
|
|
|
26
27
|
html_theme = "pydata_sphinx_theme"
|
|
27
28
|
html_static_path = ["_static"]
|
|
29
|
+
|
|
30
|
+
html_theme = "pydata_sphinx_theme"
|
|
31
|
+
html_theme_options = {
|
|
32
|
+
"icon_links": [
|
|
33
|
+
{
|
|
34
|
+
"name": "GitHub",
|
|
35
|
+
"url": "https://github.com/Digiklausur/e2xgrader",
|
|
36
|
+
"icon": "fa-brands fa-github",
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"use_edit_page_button": True,
|
|
40
|
+
"navbar_align": "left",
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
html_static_path = ["_static"]
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
html_context = {
|
|
47
|
+
"github_user": "DigiKlausur",
|
|
48
|
+
"github_repo": "e2xauthoring",
|
|
49
|
+
"github_version": "main",
|
|
50
|
+
"doc_path": "docs/source/",
|
|
51
|
+
}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
.. e2xauthoring documentation master file, created by
|
|
2
|
+
sphinx-quickstart on Tue Aug 22 15:54:37 2023.
|
|
3
|
+
You can adapt this file completely to your liking, but it should at least
|
|
4
|
+
contain the root `toctree` directive.
|
|
3
5
|
|
|
4
|
-
e2xauthoring
|
|
6
|
+
e2xauthoring Documentation
|
|
7
|
+
==========================
|
|
8
|
+
|
|
9
|
+
Welcome to the **e2xauthoring** documentation site. e2xauthoring streamlines assignment creation for nbgrader by utilizing reusable components known as *tasks* and *templates*.
|
|
5
10
|
|
|
6
11
|
* **Seamless Integration with e2xgrader:** e2xauthoring integrates with e2xgrader, enhancing the process of creating nbgrader assignments.
|
|
7
12
|
* **Efficient Worksheet Creation:** Generate assignments by crafting Jupyter notebook-based worksheets, which serve as individual assignment units.
|
|
@@ -12,8 +17,54 @@ e2xauthoring streamlines assignment creation for nbgrader by utilizing reusable
|
|
|
12
17
|
* **Version Control Ready:** Convert task pools into Git repositories, facilitating version control for collaboration and iteration.
|
|
13
18
|
* **Worksheet Customization:** Assemble worksheets by selecting templates, filling variables, and picking tasks to include, tailoring assignments to specific needs.
|
|
14
19
|
|
|
15
|
-
|
|
16
|
-
|
|
20
|
+
Screenshots
|
|
21
|
+
-----------
|
|
22
|
+
|
|
23
|
+
To get a better idea of how e2xauthoring looks like, here are some screenshots.
|
|
24
|
+
|
|
25
|
+
.. figure:: user_docs/img/assignments.png
|
|
26
|
+
:alt: Assignments Page
|
|
27
|
+
:scale: 50%
|
|
28
|
+
|
|
29
|
+
Assignments
|
|
30
|
+
|
|
31
|
+
.. figure:: user_docs/img/tasks.png
|
|
32
|
+
:alt: Tasks Page
|
|
33
|
+
:scale: 50%
|
|
34
|
+
|
|
35
|
+
Tasks
|
|
36
|
+
|
|
37
|
+
.. figure:: user_docs/img/templates.png
|
|
38
|
+
:alt: Templates Page
|
|
39
|
+
:scale: 50%
|
|
40
|
+
|
|
41
|
+
Templates
|
|
42
|
+
|
|
43
|
+
.. figure:: user_docs/img/add_question.png
|
|
44
|
+
:alt: Creating a Task
|
|
45
|
+
:scale: 50%
|
|
46
|
+
|
|
47
|
+
Creating a Task
|
|
48
|
+
|
|
49
|
+
.. toctree::
|
|
50
|
+
:maxdepth: 2
|
|
51
|
+
:caption: User Documentation:
|
|
52
|
+
|
|
53
|
+
user_docs/index
|
|
54
|
+
|
|
55
|
+
.. toctree::
|
|
56
|
+
:maxdepth: 2
|
|
57
|
+
:caption: Setup:
|
|
58
|
+
|
|
59
|
+
setup/index
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
17
64
|
|
|
18
|
-
|
|
65
|
+
Indices and tables
|
|
66
|
+
==================
|
|
19
67
|
|
|
68
|
+
* :ref:`genindex`
|
|
69
|
+
* :ref:`modindex`
|
|
70
|
+
* :ref:`search`
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.3.0-dev0"
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import asyncio
|
|
1
2
|
import inspect
|
|
2
3
|
from typing import List
|
|
3
4
|
|
|
@@ -17,14 +18,26 @@ def status_msg(method):
|
|
|
17
18
|
method: The method to decorate
|
|
18
19
|
"""
|
|
19
20
|
|
|
20
|
-
|
|
21
|
-
try:
|
|
22
|
-
res = method(*args, **kwargs)
|
|
23
|
-
return SuccessMessage(data=res)
|
|
24
|
-
except Exception as e:
|
|
25
|
-
return ErrorMessage(error=getattr(e, "message", str(e)))
|
|
21
|
+
if asyncio.iscoroutinefunction(method):
|
|
26
22
|
|
|
27
|
-
|
|
23
|
+
async def async_wrapper(*args, **kwargs):
|
|
24
|
+
try:
|
|
25
|
+
res = await method(*args, **kwargs)
|
|
26
|
+
return SuccessMessage(data=res)
|
|
27
|
+
except Exception as e:
|
|
28
|
+
return ErrorMessage(error=getattr(e, "message", str(e)))
|
|
29
|
+
|
|
30
|
+
return async_wrapper
|
|
31
|
+
else:
|
|
32
|
+
|
|
33
|
+
def wrapper(*args, **kwargs):
|
|
34
|
+
try:
|
|
35
|
+
res = method(*args, **kwargs)
|
|
36
|
+
return SuccessMessage(data=res)
|
|
37
|
+
except Exception as e:
|
|
38
|
+
return ErrorMessage(error=getattr(e, "message", str(e)))
|
|
39
|
+
|
|
40
|
+
return wrapper
|
|
28
41
|
|
|
29
42
|
|
|
30
43
|
class ApiManageHandler(E2xApiHandler):
|
|
@@ -59,16 +72,21 @@ class ApiManageHandler(E2xApiHandler):
|
|
|
59
72
|
params[arg] = argument
|
|
60
73
|
return params
|
|
61
74
|
|
|
62
|
-
def perform_action(self, action: str, allowed_actions: List[str]):
|
|
75
|
+
async def perform_action(self, action: str, allowed_actions: List[str]):
|
|
63
76
|
assert (
|
|
64
77
|
action is not None and action in allowed_actions
|
|
65
78
|
), f"Action {action} is not a valid action."
|
|
66
79
|
method = getattr(self.__manager, action)
|
|
67
80
|
arguments = self.extract_arguments(method)
|
|
68
|
-
|
|
81
|
+
|
|
82
|
+
# If the method is async, await it, otherwise call it synchronously
|
|
83
|
+
if inspect.iscoroutinefunction(method):
|
|
84
|
+
return await method(**arguments)
|
|
85
|
+
else:
|
|
86
|
+
return method(**arguments)
|
|
69
87
|
|
|
70
88
|
@status_msg
|
|
71
|
-
def handle_request(self, request_type: str):
|
|
89
|
+
async def handle_request(self, request_type: str):
|
|
72
90
|
action = self.get_argument(
|
|
73
91
|
"action", default=None # self.__allowed_actions[request_type]["default"]
|
|
74
92
|
)
|
|
@@ -77,26 +95,30 @@ class ApiManageHandler(E2xApiHandler):
|
|
|
77
95
|
"action", self.__allowed_actions[request_type]["default"]
|
|
78
96
|
)
|
|
79
97
|
|
|
80
|
-
return self.perform_action(
|
|
98
|
+
return await self.perform_action(
|
|
81
99
|
action, self.__allowed_actions[request_type]["actions"]
|
|
82
100
|
)
|
|
83
101
|
|
|
84
102
|
@web.authenticated
|
|
85
103
|
@check_xsrf
|
|
86
|
-
def get(self):
|
|
87
|
-
self.
|
|
104
|
+
async def get(self):
|
|
105
|
+
result = await self.handle_request("get")
|
|
106
|
+
self.finish(result.json())
|
|
88
107
|
|
|
89
108
|
@web.authenticated
|
|
90
109
|
@check_xsrf
|
|
91
|
-
def delete(self):
|
|
92
|
-
self.
|
|
110
|
+
async def delete(self):
|
|
111
|
+
result = await self.handle_request("delete")
|
|
112
|
+
self.finish(result.json())
|
|
93
113
|
|
|
94
114
|
@web.authenticated
|
|
95
115
|
@check_xsrf
|
|
96
|
-
def put(self):
|
|
97
|
-
self.
|
|
116
|
+
async def put(self):
|
|
117
|
+
result = await self.handle_request("put")
|
|
118
|
+
self.finish(result.json())
|
|
98
119
|
|
|
99
120
|
@web.authenticated
|
|
100
121
|
@check_xsrf
|
|
101
|
-
def post(self):
|
|
102
|
-
self.
|
|
122
|
+
async def post(self):
|
|
123
|
+
result = await self.handle_request("post")
|
|
124
|
+
self.finish(result.json())
|
{e2xauthoring-0.2.1 → e2xauthoring-0.3.0.dev0}/e2xauthoring/app/templates/authoring/index.html
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>e²xgrader - Authoring</title><script type="text/javascript">window.base_url="{{ base_url }}",window.url_prefix="{{ url_prefix }}",window.webpackstuff="/e2x/authoring/static/js/main.
|
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>e²xgrader - Authoring</title><script type="text/javascript">window.base_url="{{ base_url }}",window.url_prefix="{{ url_prefix }}",window.webpackstuff="/e2x/authoring/static/js/main.4c8c48b6.js"</script><script defer="defer" src="{{base_url}}/e2x/authoring/static/js/main.4c8c48b6.js"></script>{%- block head -%} {%- endblock -%}</head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
|