ctfy.sdk.admin_resources.contact_messages
client.admin.contact_messages — what visitors wrote on the Contact
page (#3414).
1"""``client.admin.contact_messages`` — what visitors wrote on the Contact 2page (#3414).""" 3 4from __future__ import annotations 5 6from ctfy.core.site import ContactStatus 7from ctfy.core.state.models import ContactMessageState 8from ctfy.sdk._helpers import PagedList, _extract_items, _raise_for_status 9from ctfy.sdk.base import BaseHttpClient 10 11 12class AdminContactMessagesResource: 13 """Read, mark handled and delete Contact-page messages. 14 15 Readable whether or not the site pages are switched on: turning them 16 off does not hide what visitors already wrote. 17 """ 18 19 def __init__(self, http: BaseHttpClient) -> None: 20 self._http = http 21 22 def list( 23 self, 24 *, 25 status: ContactStatus | None = None, 26 offset: int = 0, 27 limit: int = 50, 28 ) -> PagedList[ContactMessageState]: 29 """Messages, newest first, optionally only those in ``status``.""" 30 params: dict[str, str | int] = {"offset": offset, "limit": limit} 31 if status is not None: 32 params["status"] = status 33 resp = self._http.request("GET", "/admin/contact-messages", params=params) 34 _raise_for_status(resp) 35 return _extract_items(resp.json(), ContactMessageState) 36 37 def set_status(self, message_id: str, status: ContactStatus) -> ContactMessageState: 38 """Mark one message ``new`` or ``handled``.""" 39 resp = self._http.request( 40 "PATCH", f"/admin/contact-messages/{message_id}", json={"status": status} 41 ) 42 _raise_for_status(resp) 43 return ContactMessageState.model_validate(resp.json()) 44 45 def delete(self, message_id: str) -> None: 46 """Remove one message for good.""" 47 resp = self._http.request("DELETE", f"/admin/contact-messages/{message_id}") 48 _raise_for_status(resp)
class
AdminContactMessagesResource:
13class AdminContactMessagesResource: 14 """Read, mark handled and delete Contact-page messages. 15 16 Readable whether or not the site pages are switched on: turning them 17 off does not hide what visitors already wrote. 18 """ 19 20 def __init__(self, http: BaseHttpClient) -> None: 21 self._http = http 22 23 def list( 24 self, 25 *, 26 status: ContactStatus | None = None, 27 offset: int = 0, 28 limit: int = 50, 29 ) -> PagedList[ContactMessageState]: 30 """Messages, newest first, optionally only those in ``status``.""" 31 params: dict[str, str | int] = {"offset": offset, "limit": limit} 32 if status is not None: 33 params["status"] = status 34 resp = self._http.request("GET", "/admin/contact-messages", params=params) 35 _raise_for_status(resp) 36 return _extract_items(resp.json(), ContactMessageState) 37 38 def set_status(self, message_id: str, status: ContactStatus) -> ContactMessageState: 39 """Mark one message ``new`` or ``handled``.""" 40 resp = self._http.request( 41 "PATCH", f"/admin/contact-messages/{message_id}", json={"status": status} 42 ) 43 _raise_for_status(resp) 44 return ContactMessageState.model_validate(resp.json()) 45 46 def delete(self, message_id: str) -> None: 47 """Remove one message for good.""" 48 resp = self._http.request("DELETE", f"/admin/contact-messages/{message_id}") 49 _raise_for_status(resp)
Read, mark handled and delete Contact-page messages.
Readable whether or not the site pages are switched on: turning them off does not hide what visitors already wrote.
def
list( self, *, status: Optional[Literal['new', 'handled']] = None, offset: int = 0, limit: int = 50) -> ctfy.sdk._helpers.PagedList[ctfy.core.state.models.ContactMessageState]:
23 def list( 24 self, 25 *, 26 status: ContactStatus | None = None, 27 offset: int = 0, 28 limit: int = 50, 29 ) -> PagedList[ContactMessageState]: 30 """Messages, newest first, optionally only those in ``status``.""" 31 params: dict[str, str | int] = {"offset": offset, "limit": limit} 32 if status is not None: 33 params["status"] = status 34 resp = self._http.request("GET", "/admin/contact-messages", params=params) 35 _raise_for_status(resp) 36 return _extract_items(resp.json(), ContactMessageState)
Messages, newest first, optionally only those in status.
def
set_status( self, message_id: str, status: Literal['new', 'handled']) -> ctfy.core.state.models.ContactMessageState:
38 def set_status(self, message_id: str, status: ContactStatus) -> ContactMessageState: 39 """Mark one message ``new`` or ``handled``.""" 40 resp = self._http.request( 41 "PATCH", f"/admin/contact-messages/{message_id}", json={"status": status} 42 ) 43 _raise_for_status(resp) 44 return ContactMessageState.model_validate(resp.json())
Mark one message new or handled.