comparison idavoll/backend.py @ 80:ec354aab3949

Implemented ItemRetrievalService.
author Ralph Meijer <ralphm@ik.nu>
date Tue, 09 Nov 2004 14:51:32 +0000
parents a914cad421c5
children 34be83a0bd2e
comparison
equal deleted inserted replaced
79:c40ccc30dfb7 80:ec354aab3949
119 """ Removes all items in node from persistent storage """ 119 """ Removes all items in node from persistent storage """
120 120
121 class IItemRetrievalService(components.Interface): 121 class IItemRetrievalService(components.Interface):
122 """ A service for retrieving previously published items. """ 122 """ A service for retrieving previously published items. """
123 123
124 def get_items(self, node_id, max_items=None, item_ids=[], 124 def get_items(self, node_id, requestor, max_items=None, item_ids=[]):
125 requestor=None):
126 """ Retrieve items from persistent storage 125 """ Retrieve items from persistent storage
127 126
128 If C{max_items} is given, return the C{max_items} last published 127 If C{max_items} is given, return the C{max_items} last published
129 items, else if C{item_ids} is not empty, return the items requested. 128 items, else if C{item_ids} is not empty, return the items requested.
130 If neither is given, return all items. 129 If neither is given, return all items.
316 'jid': subscriber, 315 'jid': subscriber,
317 'affiliation': None, 316 'affiliation': None,
318 'subscription': subscription} 317 'subscription': subscription}
319 318
320 return new_affiliations.values() 319 return new_affiliations.values()
320
321 class ItemRetrievalService(service.Service):
322
323 __implements__ = IItemRetrievalService
324
325 def get_items(self, node_id, requestor, max_items=None, item_ids=[]):
326 d = self.parent.storage.is_subscribed(node_id, requestor)
327 d.addCallback(self._do_get_items, node_id, max_items, item_ids)
328 return d
329
330 def _do_get_items(self, result, node_id, max_items, item_ids):
331 def q(r):
332 print r
333 return r
334
335 if not result:
336 raise NotAuthorized
337
338 if item_ids:
339 d = self.parent.storage.get_items_by_ids(node_id, item_ids)
340 d.addCallback(q)
341 d.addErrback(q)
342 return d
343 else:
344 return self.parent.storage.get_items(node_id, max_items)