Skip to content

Commit 206116d

Browse files
API: Added method for adding and removing extra_marks (#15)
1 parent 9b9ab65 commit 206116d

File tree

3 files changed

+63
-0
lines changed

3 files changed

+63
-0
lines changed

Changelog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# Changelog
22
##[unreleased]
3+
- Added new methods for adding and removing extra marks (#15)
34
- Fixed bug which caused file uploads to be PUT requests by default instead of POST (#22)
45

56
##[v0.1.0]

markusapi/markusapi.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,42 @@ def update_marking_state(self, assignment_id: int, group_id: int, new_marking_st
309309
path = Markus._get_path(assignments=assignment_id, groups=group_id, update_marking_state=None)
310310
return self._submit_request(params, path, "PUT")
311311

312+
def create_extra_marks(
313+
self,
314+
assignment_id: int,
315+
group_id: int,
316+
extra_marks: float,
317+
description: str
318+
) -> ResponseType:
319+
"""
320+
Create new extra mark for the particular group.
321+
Mark specified in extra_marks will be created
322+
"""
323+
params = {
324+
'extra_marks': extra_marks,
325+
'description': description
326+
}
327+
path = Markus._get_path(assignments=assignment_id, groups=group_id, create_extra_marks=None)
328+
return self._submit_request(params, path, 'POST')
329+
330+
def remove_extra_marks(
331+
self,
332+
assignment_id: int,
333+
group_id: int,
334+
extra_marks: float,
335+
description: str
336+
) -> ResponseType:
337+
"""
338+
Remove the extra mark for the particular group.
339+
Mark specified in extra_marks will be removed
340+
"""
341+
params = {
342+
'extra_marks': extra_marks,
343+
'description': description
344+
}
345+
path = Markus._get_path(assignments=assignment_id, groups=group_id, remove_extra_marks=None)
346+
return self._submit_request(params, path, 'DELETE')
347+
312348
def get_files_from_repo(
313349
self, assignment_id: int, group_id: int, filename: Optional[str] = None, collected: bool = True
314350
) -> Optional[bytes]:

markusapi/tests/test_markusapi.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,32 @@ def test_upload_folder_to_repo(self, _get_path, _decode_json_response, _submit_r
298298
assert path == _get_path.return_value
299299
assert params.keys() == {"folder_path"}
300300

301+
@given(kwargs=strategies_from_signature(Markus.create_extra_marks))
302+
@patch.object(Markus, '_submit_request', return_value=DUMMY_RETURNS['_submit_request'])
303+
@patch.object(Markus, '_get_path', return_value=DUMMY_RETURNS['path'])
304+
def test_create_extra_marks(self, _get_path, _submit_request, kwargs):
305+
dummy_markus().create_extra_marks(**kwargs)
306+
params = {
307+
'extra_marks': kwargs['extra_marks'],
308+
'description': kwargs['description']
309+
}
310+
_get_path.assert_called_with(assignments=kwargs['assignment_id'], groups=kwargs['group_id'],
311+
create_extra_marks=None)
312+
_submit_request.assert_called_with(params, _get_path.return_value, 'POST')
313+
314+
@given(kwargs=strategies_from_signature(Markus.remove_extra_marks))
315+
@patch.object(Markus, '_submit_request', return_value=DUMMY_RETURNS['_submit_request'])
316+
@patch.object(Markus, '_get_path', return_value=DUMMY_RETURNS['path'])
317+
def test_remove_extra_marks(self, _get_path, _submit_request, kwargs):
318+
dummy_markus().remove_extra_marks(**kwargs)
319+
params = {
320+
'extra_marks': kwargs['extra_marks'],
321+
'description': kwargs['description']
322+
}
323+
_get_path.assert_called_with(assignments=kwargs['assignment_id'], groups=kwargs['group_id'],
324+
remove_extra_marks=None)
325+
_submit_request.assert_called_with(params, _get_path.return_value, 'DELETE')
326+
301327
@given(kwargs=strategies_from_signature(Markus.upload_file_to_repo), filename=file_name_strategy())
302328
@patch.object(Markus, "_submit_request", return_value=DUMMY_RETURNS["_submit_request"])
303329
@patch.object(Markus, "_decode_json_response", return_value=[DUMMY_RETURNS["_decode_json_response"]])

0 commit comments

Comments
 (0)