Mercurial > libervia-pubsub
diff sat_pubsub/backend.py @ 317:34adc4a8aa64
new container module, with an ItemData container:
this simplify item data manipulation and transmission between storage and backend, it's also better if new data need to be used.
author | Goffi <goffi@goffi.org> |
---|---|
date | Sun, 03 Jan 2016 18:33:22 +0100 |
parents | 720d73e30bf7 |
children | d13526c0eb32 |
line wrap: on
line diff
--- a/sat_pubsub/backend.py Sun Jan 03 18:33:22 2016 +0100 +++ b/sat_pubsub/backend.py Sun Jan 03 18:33:22 2016 +0100 @@ -72,18 +72,18 @@ # from twisted.words.protocols.jabber.jid import JID, InvalidFormat from twisted.words.xish import utility -from wokkel import disco, data_form, rsm -from wokkel.iwokkel import IPubSubResource -from wokkel.pubsub import PubSubResource, PubSubError, Subscription +from wokkel import disco +from wokkel import data_form +from wokkel import rsm +from wokkel import iwokkel +from wokkel import pubsub -from sat_pubsub import error, iidavoll, const -from sat_pubsub.iidavoll import IBackendService, ILeafNode +from sat_pubsub import error +from sat_pubsub import iidavoll +from sat_pubsub import const +from sat_pubsub import container from copy import deepcopy -from collections import namedtuple - - -ItemData = namedtuple('ItemData', ('item', 'access_model', 'config', 'categories')) def _getAffiliation(node, entity): @@ -336,7 +336,7 @@ check_overwrite = True access_model, item_config = self.parseItemConfig(item) categories = self.parseCategories(item) - items_data.append(ItemData(item, access_model, item_config, categories)) + items_data.append(container.ItemData(item, access_model, item_config, categories)) if persistItems: if check_overwrite and affiliation != 'owner': @@ -594,11 +594,6 @@ log.msg("Error while getting roster of {}: {}".format(unicode(owner_jid), failure.value)) return {} - def _tuple2ItemData(self, items_data): - # FIXME: workaround for the use of ItemData which doesn't exist in storage - # must be done in a cleaner way - return [ItemData(item, access_model, access_list, []) for item, access_model, access_list in items_data] - def _doGetItems(self, result, requestor, maxItems, itemIdentifiers, ext_data): node, affiliation = result @@ -636,11 +631,9 @@ if itemIdentifiers: d = node.getItemsById(authorized_groups, unrestricted, itemIdentifiers) - d.addCallback(self._tuple2ItemData) else: d = node.getItems(authorized_groups, unrestricted, maxItems, ext_data) if unrestricted: - d.addCallback(self._tuple2ItemData) d.addCallback(append_item_config) try: @@ -654,7 +647,7 @@ rsm_data) return d - if not ILeafNode.providedBy(node): + if not iidavoll.ILeafNode.providedBy(node): return [] if affiliation == 'outcast': @@ -780,7 +773,6 @@ d = node.getItemsPublishers(itemIdentifiers) d.addCallback(checkPublishers) d.addCallback(lambda dummy: node.getItemsById(None, True, itemIdentifiers)) - d.addCallback(self._tuple2ItemData) d.addCallback(removeItems) if notify: @@ -876,7 +868,7 @@ -class PubSubResourceFromBackend(PubSubResource): +class PubSubResourceFromBackend(pubsub.PubSubResource): """ Adapts a backend to an xmpp publish-subscribe service. """ @@ -932,7 +924,7 @@ } def __init__(self, backend): - PubSubResource.__init__(self) + pubsub.PubSubResource.__init__(self) self.backend = backend self.hideNodes = False @@ -993,7 +985,7 @@ return new_item notifications_filtered.append((owner_jid, - set([Subscription(node.nodeIdentifier, + set([pubsub.Subscription(node.nodeIdentifier, owner_jid, 'subscribed')]), [getFullItem(item_data) for item_data in items_data])) @@ -1025,7 +1017,7 @@ #we add the owner notifications_filtered.append((owner_jid, - set([Subscription(node.nodeIdentifier, + set([pubsub.Subscription(node.nodeIdentifier, owner_jid, 'subscribed')]), [item_data.item for item_data in items_data])) @@ -1143,7 +1135,7 @@ msg = failure.value.msg if pubsubCondition: - exc = PubSubError(condition, pubsubCondition, feature, msg) + exc = pubsub.PubSubError(condition, pubsubCondition, feature, msg) else: exc = StanzaError(condition, text=msg) @@ -1326,5 +1318,5 @@ return d.addErrback(self._mapErrors) components.registerAdapter(PubSubResourceFromBackend, - IBackendService, - IPubSubResource) + iidavoll.IBackendService, + iwokkel.IPubSubResource)