Skip to content

Commit c5a98c9

Browse files
Release 0.8.2 (#298)
* Fix: feedback generation failing with student notebooks (#288) * fix: Improve logging when feedback generation fails * chore: Remove an unused dataclass, fix some typos and type annotations * fix: Fix a potential security issue when running Git commands in a subprocess When running multiple commands with `sh -c ...`, it would be easier to construct the variable "message" so that it contained some executable code. * fix: Fix a typo in the log message after a successful autograde job * fix: Do not try to generate feedback for notebooks created by students If the instructor specifies '*.ipynb' in the whitelist of an assignment, additional notebooks created by students are also copied over. The feedback generator should not try to generate feedback for them - they are not in the gradebook and an attempt to do so would fail. Refs: #272 * fix: Improve error handling and logging in GitBaseHandler.git_reponse() * refactor: changed load_roles dict entries to lists (#292) * refactor: changed load_roles dict entries to lists * chore: added new load_roles style to dev env * Update a docstring --------- Co-authored-by: Natalia Maniakowska <[email protected]> * fix: Set missing display_name for a new user in auth_to_user (#291) * fix: renamed sync_on_feedback var (#294) * Fix: (soft-)delete submission endpoint (#295) * refactor: Small improvements related to submission handling * fix: Fix soft-deleting a submission Now: - double delete does NOT remove the submission from the db; it just has the state `deleted`; - if the deadline is not set, it is possible to delete a submission; - a student can only delete own submission. * fix: Make `SubmissionObjectHandler.delete()` async * chore: Write tests for the delete submission endpoint * fix: Fix some invalid feedback status values in submission handlers tests * chore: Update the docstring for submission's delete * Bump service to 0.8.2 * Bump chart to 0.8.2 * docs: fixed helm repo url --------- Co-authored-by: Natalia Maniakowska <[email protected]>
1 parent bce5eb2 commit c5a98c9

File tree

27 files changed

+352
-172
lines changed

27 files changed

+352
-172
lines changed

charts/grader-service-all-in-one/Chart.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,18 @@ type: application
1515
# This is the chart version. This version number should be incremented each time you make changes
1616
# to the chart and its templates, including the app version.
1717
# Versions are expected to follow Semantic Versioning (https://semver.org/)
18-
version: 0.8.1
18+
version: 0.8.2
1919

2020
# This is the version number of the application being deployed. This version number should be
2121
# incremented each time you make changes to the application. Versions are not expected to
2222
# follow Semantic Versioning. They should reflect the version the application is using.
2323
# It is recommended to use it with quotes.
24-
appVersion: "0.8.1"
24+
appVersion: "0.8.2"
2525

2626
dependencies:
2727
- name: jupyterhub
2828
version: 4.2.0
2929
repository: https://jupyterhub.github.io/helm-chart
3030
- name: grader-service
31-
version: 0.8.1
31+
version: 0.8.2
3232
repository: https://tu-wien-datalab.github.io/grader-service/

charts/grader-service/Chart.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ type: application
1515
# This is the chart version. This version number should be incremented each time you make changes
1616
# to the chart and its templates, including the app version.
1717
# Versions are expected to follow Semantic Versioning (https://semver.org/)
18-
version: 0.8.1
18+
version: 0.8.2
1919

2020
# This is the version number of the application being deployed. This version number should be
2121
# incremented each time you make changes to the application. Versions are not expected to
2222
# follow Semantic Versioning. They should reflect the version the application is using.
2323
# It is recommended to use it with quotes.
24-
appVersion: "0.8.1"
24+
appVersion: "0.8.2"

charts/grader-service/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
github_url = "https://github.com/TU-Wien-dataLAB/grader-service"
44

55
[tool.tbump.version]
6-
current = "0.8.1"
6+
current = "0.8.2"
77

88
# Example of a semver regexp.
99
# Make sure this matches current_version before

docs/source/_static/openapi/grader_api.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ info:
44
description: The REST API for the grader service
55
license:
66
name: BSD-3-Clause
7-
version: '0.8.1'
7+
version: '0.8.2'
88
servers:
99
- url: /api
1010
description: relative path to mock

docs/source/configuration/auth.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -165,10 +165,9 @@ c.GraderService.authenticator_class = DummyAuthenticator
165165
c.Authenticator.allowed_users = {'admin', 'instructor', 'student', 'tutor'}
166166
c.Authenticator.admin_users = {'admin'}
167167
# default roles
168-
c.GraderService.load_roles = {"lect1": {"members": ["admin", "instructor"], "role": "instructor"},
169-
"lect1": {"members": ["tutor"], "role": "tutor"},
170-
"lect1": {"members": ["student"], "role": "student"},
171-
}
168+
c.GraderService.load_roles = {"lect1": [{"members": ["admin", "instructor"], "role": "instructor"},
169+
{"members": ["tutor"], "role": "tutor"},
170+
{"members": ["student"], "role": "student"}]}
172171

173172
# JupyterHub client config
174173
c.GraderService.oauth_clients = [{

docs/source/installation/kubernetes.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
- [Install Helm](https://helm.sh/docs/intro/install/)
99
- [Add the Helm repository](https://helm.sh/docs/intro/quickstart/#add-a-helm-repository)
1010
```bash
11-
helm repo add grader-service ghcr.io/tu-wien-datalab/grader-service
11+
helm repo add grader-service https://tu-wien-datalab.github.io/grader-service/
1212
```
1313
- [RabbitMQ operator](https://www.rabbitmq.com/kubernetes/operator/install-operator#installation) installed
1414

examples/dev_environment/grader_service_config.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@
5050
c.Authenticator.allowed_users = {"admin", "instructor", "student", "tutor"}
5151
c.Authenticator.admin_users = {"admin"}
5252
c.GraderService.load_roles = {
53-
"lect1": {"members": ["admin", "instructor"], "role": "instructor"},
54-
"lect1": {"members": ["tutor"], "role": "tutor"},
55-
"lect1": {"members": ["student"], "role": "student"},
53+
"lecture1": [
54+
{"members": ["student"], "role": "student"},
55+
{"members": ["tutor"], "role": "tutor"},
56+
{"members": ["instructor", "admin"], "role": "instructor"},
57+
]
5658
}

examples/dev_environment/grader_service_config_test.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,9 @@ def post_auth_hook(authenticator: Authenticator, handler: BaseHandler, authentic
111111
c.Authenticator.admin_users = {"admin"}
112112

113113
c.GraderService.load_roles = {
114-
"lect1:instructor": ["admin", "instructor"],
115-
"lect1:student": ["student"],
116-
"lect1:tutor": ["tutor"],
114+
"lecture1": [
115+
{"members": ["student"], "role": "student"},
116+
{"members": ["tutor"], "role": "tutor"},
117+
{"members": ["instructor", "admin"], "role": "instructor"},
118+
]
117119
}

grader_service/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@
55
# LICENSE file in the root directory of this source tree.
66

77
# version_info updated by running `tbump`
8-
__version__ = "0.8.1"
8+
__version__ = "0.8.2"

grader_service/autograding/celery/tasks.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,10 @@ def generate_feedback_task(self: GraderTask, lecture_id: int, assignment_id: int
7979

8080
executor = GenerateFeedbackExecutor(grader_service_dir, submission, config=self.celery.config)
8181
executor.start()
82-
self.log.info(f"Successfully generated feedback for submission {submission.id}!")
82+
if submission.feedback_status == "generated":
83+
self.log.info("Successfully generated feedback for submission %s!", submission.id)
84+
else:
85+
self.log.error("Failed to generate feedback for submission %s!", submission.id)
8386

8487

8588
@app.task(bind=True, base=GraderTask)
@@ -94,7 +97,7 @@ async def lti_sync_task(
9497
:param lecture: lecture object
9598
:param assignment: assignment object
9699
:param submissions: submissions to be synced
97-
:param feedback_sync(optional): if True, the given submission is part of a fully automated grading assignment
100+
:param feedback_sync(optional): if True, the sync task was started by a feedback generation
98101
"""
99102
lti_plugin = LTISyncGrades.instance()
100103
# check if the lti plugin is enabled

0 commit comments

Comments
 (0)