ctfy.sdk.admin_resources.suites
client.admin.suites -- a benchmark suite through its own door (#2896, phase B).
A suite's own fields only. The request models are the server's
(~ctfy.server.models.admin_suite.SuiteCreate /
~ctfy.server.models.admin_suite.SuiteUpdate), so an event setting
cannot be passed here at all. The answer is
~ctfy.core.suite.SuiteState, which has no event field either.
1"""``client.admin.suites`` -- a benchmark suite through its own door (#2896, phase B). 2 3A suite's own fields only. The request models are the server's 4(:class:`~ctfy.server.models.admin_suite.SuiteCreate` / 5:class:`~ctfy.server.models.admin_suite.SuiteUpdate`), so an event setting 6cannot be passed here at all. The answer is 7:class:`~ctfy.core.suite.SuiteState`, which has no event field either. 8""" 9 10from __future__ import annotations 11 12from ctfy.core.suite import SuiteState 13from ctfy.sdk._helpers import _raise_for_status 14from ctfy.sdk.base import BaseHttpClient 15from ctfy.server.models.admin_suite import SuiteCreate, SuiteUpdate 16 17 18class AdminSuitesResource: 19 """Make, read and change suites.""" 20 21 def __init__(self, http: BaseHttpClient) -> None: 22 self._http = http 23 24 def create(self, body: SuiteCreate) -> SuiteState: 25 """Make a suite. Only the fields set on *body* are sent, so the 26 server's defaults apply to the rest.""" 27 resp = self._http.request( 28 "POST", "/admin/suites", json=body.model_dump(mode="json", exclude_unset=True) 29 ) 30 _raise_for_status(resp) 31 return SuiteState.model_validate(resp.json()) 32 33 def get(self, suite_id: str) -> SuiteState: 34 """One suite. An event's id is ``404 suite_not_found``.""" 35 resp = self._http.request("GET", f"/admin/suites/{suite_id}") 36 _raise_for_status(resp) 37 return SuiteState.model_validate(resp.json()) 38 39 def update(self, suite_id: str, patch: SuiteUpdate) -> SuiteState: 40 """Change a suite. Only the fields set on *patch* are sent; the 41 rest are left alone.""" 42 resp = self._http.request( 43 "PATCH", 44 f"/admin/suites/{suite_id}", 45 json=patch.model_dump(mode="json", exclude_unset=True), 46 ) 47 _raise_for_status(resp) 48 return SuiteState.model_validate(resp.json())
class
AdminSuitesResource:
19class AdminSuitesResource: 20 """Make, read and change suites.""" 21 22 def __init__(self, http: BaseHttpClient) -> None: 23 self._http = http 24 25 def create(self, body: SuiteCreate) -> SuiteState: 26 """Make a suite. Only the fields set on *body* are sent, so the 27 server's defaults apply to the rest.""" 28 resp = self._http.request( 29 "POST", "/admin/suites", json=body.model_dump(mode="json", exclude_unset=True) 30 ) 31 _raise_for_status(resp) 32 return SuiteState.model_validate(resp.json()) 33 34 def get(self, suite_id: str) -> SuiteState: 35 """One suite. An event's id is ``404 suite_not_found``.""" 36 resp = self._http.request("GET", f"/admin/suites/{suite_id}") 37 _raise_for_status(resp) 38 return SuiteState.model_validate(resp.json()) 39 40 def update(self, suite_id: str, patch: SuiteUpdate) -> SuiteState: 41 """Change a suite. Only the fields set on *patch* are sent; the 42 rest are left alone.""" 43 resp = self._http.request( 44 "PATCH", 45 f"/admin/suites/{suite_id}", 46 json=patch.model_dump(mode="json", exclude_unset=True), 47 ) 48 _raise_for_status(resp) 49 return SuiteState.model_validate(resp.json())
Make, read and change suites.
def
create( self, body: ctfy.server.models.admin_suite.SuiteCreate) -> ctfy.core.suite.SuiteState:
25 def create(self, body: SuiteCreate) -> SuiteState: 26 """Make a suite. Only the fields set on *body* are sent, so the 27 server's defaults apply to the rest.""" 28 resp = self._http.request( 29 "POST", "/admin/suites", json=body.model_dump(mode="json", exclude_unset=True) 30 ) 31 _raise_for_status(resp) 32 return SuiteState.model_validate(resp.json())
Make a suite. Only the fields set on body are sent, so the server's defaults apply to the rest.
def
get(self, suite_id: str) -> ctfy.core.suite.SuiteState:
34 def get(self, suite_id: str) -> SuiteState: 35 """One suite. An event's id is ``404 suite_not_found``.""" 36 resp = self._http.request("GET", f"/admin/suites/{suite_id}") 37 _raise_for_status(resp) 38 return SuiteState.model_validate(resp.json())
One suite. An event's id is 404 suite_not_found.
def
update( self, suite_id: str, patch: ctfy.server.models.admin_suite.SuiteUpdate) -> ctfy.core.suite.SuiteState:
40 def update(self, suite_id: str, patch: SuiteUpdate) -> SuiteState: 41 """Change a suite. Only the fields set on *patch* are sent; the 42 rest are left alone.""" 43 resp = self._http.request( 44 "PATCH", 45 f"/admin/suites/{suite_id}", 46 json=patch.model_dump(mode="json", exclude_unset=True), 47 ) 48 _raise_for_status(resp) 49 return SuiteState.model_validate(resp.json())
Change a suite. Only the fields set on patch are sent; the rest are left alone.