From b8ff2955b2305aa2f33cf29a57a22e58f3598269 Mon Sep 17 00:00:00 2001 From: nadja-jovancevic Date: Tue, 28 Oct 2025 14:50:03 +0100 Subject: [PATCH 1/3] WIP: added groups attribute to AssignmentSettings --- docs/source/_static/openapi/schemas.yml | 3 ++ .../api/models/assignment_settings.py | 32 +++++++++++++++++-- grader_service/api/models/base_model.py | 3 -- 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/docs/source/_static/openapi/schemas.yml b/docs/source/_static/openapi/schemas.yml index 0882cfbd0..7ba7aaa4c 100644 --- a/docs/source/_static/openapi/schemas.yml +++ b/docs/source/_static/openapi/schemas.yml @@ -89,6 +89,9 @@ components: - "full_auto" - "unassisted" default: "auto" + group: + type: "string" + example: "Chapter 1: Data Types" example: late_submission: - period: "P1W1D" diff --git a/grader_service/api/models/assignment_settings.py b/grader_service/api/models/assignment_settings.py index 527ee92b1..3ce5bbc58 100644 --- a/grader_service/api/models/assignment_settings.py +++ b/grader_service/api/models/assignment_settings.py @@ -14,7 +14,7 @@ class AssignmentSettings(Model): Do not edit the class manually. """ - def __init__(self, deadline=None, max_submissions=None, allowed_files=[], late_submission=None, autograde_type='auto'): # noqa: E501 + def __init__(self, deadline=None, max_submissions=None, allowed_files=[], late_submission=None, autograde_type='auto', group=None): # noqa: E501 """AssignmentSettings - a model defined in OpenAPI :param deadline: The deadline of this AssignmentSettings. # noqa: E501 @@ -27,13 +27,16 @@ def __init__(self, deadline=None, max_submissions=None, allowed_files=[], late_s :type late_submission: List[SubmissionPeriod] :param autograde_type: The autograde_type of this AssignmentSettings. # noqa: E501 :type autograde_type: str + :param group: The group of this AssignmentSettings. # noqa: E501 + :type group: str """ self.openapi_types = { 'deadline': datetime, 'max_submissions': int, 'allowed_files': List[str], 'late_submission': List[SubmissionPeriod], - 'autograde_type': str + 'autograde_type': str, + 'group': str } self.attribute_map = { @@ -41,7 +44,8 @@ def __init__(self, deadline=None, max_submissions=None, allowed_files=[], late_s 'max_submissions': 'max_submissions', 'allowed_files': 'allowed_files', 'late_submission': 'late_submission', - 'autograde_type': 'autograde_type' + 'autograde_type': 'autograde_type', + 'group': 'group' } self._deadline = deadline @@ -49,6 +53,7 @@ def __init__(self, deadline=None, max_submissions=None, allowed_files=[], late_s self._allowed_files = allowed_files self._late_submission = late_submission self._autograde_type = autograde_type + self._group = group @classmethod def from_dict(cls, dikt) -> 'AssignmentSettings': @@ -171,3 +176,24 @@ def autograde_type(self, autograde_type: str): ) self._autograde_type = autograde_type + + @property + def group(self) -> str: + """Gets the group of this AssignmentSettings. + + + :return: The group of this AssignmentSettings. + :rtype: str + """ + return self._group + + @group.setter + def group(self, group: str): + """Sets the group of this AssignmentSettings. + + + :param group: The group of this AssignmentSettings. + :type group: str + """ + + self._group = group diff --git a/grader_service/api/models/base_model.py b/grader_service/api/models/base_model.py index 9451125ef..aaeae589c 100644 --- a/grader_service/api/models/base_model.py +++ b/grader_service/api/models/base_model.py @@ -1,4 +1,3 @@ -from datetime import datetime import pprint import typing @@ -44,8 +43,6 @@ def to_dict(self): if hasattr(item[1], "to_dict") else item, value.items() )) - elif isinstance(value, datetime): # Convert datetime to ISO format - result[attr] = value.isoformat() else: result[attr] = value From fd0147d0af1aa10c28c4ee213a79040461cdd3de Mon Sep 17 00:00:00 2001 From: nadja-jovancevic Date: Wed, 5 Nov 2025 13:03:40 +0100 Subject: [PATCH 2/3] fix: add deleted lines back --- grader_service/api/models/base_model.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/grader_service/api/models/base_model.py b/grader_service/api/models/base_model.py index aaeae589c..ccdf3de0d 100644 --- a/grader_service/api/models/base_model.py +++ b/grader_service/api/models/base_model.py @@ -1,5 +1,5 @@ import pprint - +from datetime import datetime import typing from grader_service.api import util @@ -43,6 +43,8 @@ def to_dict(self): if hasattr(item[1], "to_dict") else item, value.items() )) + elif isinstance(value, datetime): # Convert datetime to ISO format + result[attr] = value.isoformat() else: result[attr] = value From e19ec64197fe626dd8f24f13053e433fa32d7b7b Mon Sep 17 00:00:00 2001 From: nadja-jovancevic Date: Wed, 5 Nov 2025 15:53:17 +0100 Subject: [PATCH 3/3] fix: add missing attribute (group) in test_base_handler.py --- grader_service/tests/handlers/test_base_handler.py | 1 + 1 file changed, 1 insertion(+) diff --git a/grader_service/tests/handlers/test_base_handler.py b/grader_service/tests/handlers/test_base_handler.py index b5a88d32b..3acc191c1 100644 --- a/grader_service/tests/handlers/test_base_handler.py +++ b/grader_service/tests/handlers/test_base_handler.py @@ -63,6 +63,7 @@ def test_assignment_serialization(): "settings": { "late_submission": None, "deadline": datetime.now(tz=timezone.utc).isoformat(), + "group": None, "max_submissions": 1, "autograde_type": "unassisted", "allowed_files": None,