Mercurial > libervia-backend
diff sat/plugins/plugin_exp_list_of_interest.py @ 3322:56ee491c0df6
plugin list for interest: build ID using URI or file path metadata:
by using those metadata, we get the same ID for 2 interests linking to the same location.
This has been done to avoid duplicated interests.
author | Goffi <goffi@goffi.org> |
---|---|
date | Sat, 01 Aug 2020 16:17:19 +0200 |
parents | 9a174abafdee |
children | 7515e1878004 |
line wrap: on
line diff
--- a/sat/plugins/plugin_exp_list_of_interest.py Sat Aug 01 16:14:37 2020 +0200 +++ b/sat/plugins/plugin_exp_list_of_interest.py Sat Aug 01 16:17:19 2020 +0200 @@ -21,6 +21,7 @@ from sat.core.constants import Const as C from sat.core.log import getLogger from sat.tools.common import data_format +from sat.tools.common import uri from wokkel import disco, iwokkel, pubsub from zope.interface import implementer from twisted.internet import defer @@ -134,7 +135,15 @@ pubsub_elt["creator"] = C.BOOL_TRUE if element is not None: pubsub_elt.addChild(element) - item_elt = pubsub.Item(payload=interest_elt) + uri_kwargs = { + "path": service, + "node": node + } + if item_id: + uri_kwargs['id'] = item_id + interest_uri = uri.buildXMPPUri("pubsub", **uri_kwargs) + # we use URI of the interest as item id to avoid duplicates + item_elt = pubsub.Item(interest_uri, payload=interest_elt) yield self._p.publish( client, client.jid.userhostJID(), NS_LIST_INTEREST, items=[item_elt] ) @@ -182,7 +191,8 @@ file_sharing_elt["namespace"] = namespace if path is not None: file_sharing_elt["path"] = path - item_elt = pubsub.Item(payload=interest_elt) + item_id = f"{service}_{namespace or ''}_{path or ''}" + item_elt = pubsub.Item(item_id, payload=interest_elt) await self._p.publish( client, client.jid.userhostJID(), NS_LIST_INTEREST, items=[item_elt] )