diff options
author | Lars Wirzenius <liw@liw.fi> | 2017-10-23 20:43:45 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2017-10-25 16:10:14 +0300 |
commit | ae18ed25c64fe4cafd46ebb7cc3599d1c9c95741 (patch) | |
tree | 76c2c4705140b9e7737f7f8968cf4b3977aeba7f | |
parent | 55db4288d32c73fd69c1c3a54278e860c5ec6f39 (diff) | |
download | qvisqve-ae18ed25c64fe4cafd46ebb7cc3599d1c9c95741.tar.gz |
Add: listen_on_type field to listeners
This makes it possible to only return listeners for a specific
resource type.
-rw-r--r-- | qvarn/notification_router.py | 20 | ||||
-rw-r--r-- | resource_type/listeners.yaml | 1 |
2 files changed, 20 insertions, 1 deletions
diff --git a/qvarn/notification_router.py b/qvarn/notification_router.py index 000c445..b96e38e 100644 --- a/qvarn/notification_router.py +++ b/qvarn/notification_router.py @@ -106,6 +106,12 @@ class NotificationRouter(qvarn.Router): if 'type' not in body: body['type'] = 'listener' + rtype = self._parent_coll.get_type_name() + if body.get('listen_on_type', rtype) != rtype: + return qvarn.bad_request_response( + 'listen_on_type does not have value {}'.format(rtype)) + body['listen_on_type'] = rtype + result_body = self._listener_coll.post(body) location = self._get_new_resource_location(result_body) qvarn.log.log( @@ -119,7 +125,19 @@ class NotificationRouter(qvarn.Router): resource['id']) def _get_listener_list(self, content_type, body, *args, **kwargs): - body = self._listener_coll.list() + rtype = self._parent_coll.get_type_name() + listener_list = self._listener_coll.list()['resources'] + listener_ids = [listener['id'] for listener in listener_list] + listeners = [self._listener_coll.get(lid) for lid in listener_ids] + qvarn.log.log('trace', msg_text='xxx', listeners=listeners) + correct_ids = [ + {"id": listener['id']} + for listener in listeners + if listener['listen_on_type'] == rtype + ] + body = { + 'resources': correct_ids, + } return qvarn.ok_response(body) def _get_a_listener(self, *args, **kwargs): diff --git a/resource_type/listeners.yaml b/resource_type/listeners.yaml index 07c2e53..19caa3f 100644 --- a/resource_type/listeners.yaml +++ b/resource_type/listeners.yaml @@ -6,6 +6,7 @@ versions: id: "" type: "" revision: "" + listen_on_type: "" notify_of_new: false listen_on_all: false listen_on: [""] |