diff options
Diffstat (limited to 'src/mailman_pgp/rest/lists.py')
| -rw-r--r-- | src/mailman_pgp/rest/lists.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/mailman_pgp/rest/lists.py b/src/mailman_pgp/rest/lists.py new file mode 100644 index 0000000..e0d2b0f --- /dev/null +++ b/src/mailman_pgp/rest/lists.py @@ -0,0 +1,54 @@ +"""""" + +from mailman.rest.helpers import ( + child, CollectionMixin, etag, not_found, NotFound, okay) +from public import public + +from mailman_pgp.config import config +from mailman_pgp.model.list import EncryptedMailingList + + +class _EncryptedBase(CollectionMixin): + def _resource_as_dict(self, emlist): + """See `CollectionMixin`.""" + return dict(list_id=emlist.list_id, + key_fingerprint=emlist.key_fingerprint, + unsigned_msg_action=emlist.unsigned_msg_action, + nonencrypted_msg_action=emlist.nonencrypted_msg_action, + strip_original_signature=emlist.strip_original_signature, + sign_outgoing=emlist.sign_outgoing, + self_link=self.api.path_to( + '/plugins/{}/lists/{}'.format(config.name, + emlist.list_id))) + + def _get_collection(self, request): + """See `CollectionMixin`.""" + return config.db.session.query(EncryptedMailingList).all() + + +@public +class AllEncryptedLists(_EncryptedBase): + def on_get(self, request, response): + """/lists""" + resource = self._make_collection(response) + return okay(response, etag(resource)) + + +@public +class AnEncryptedList(_EncryptedBase): + def __init__(self, list_id): + self._mlist = config.db.session.query(EncryptedMailingList).filter_by( + list_id=list_id).first() + + def on_get(self, request, response): + if self._mlist is None: + return not_found() + else: + okay(response, self._resource_as_json(self._mlist)) + + @child() + def key(self, context, segments): + if self._mlist is None: + return NotFound(), [] + else: + pass |
