comparison sat_pubsub/privilege.py @ 455:0b5233981671

backend: fix `delete` notification + add `purge` notification
author Goffi <goffi@goffi.org>
date Mon, 02 Aug 2021 21:58:17 +0200
parents 96342e7e9f5d
children 607616f9ef5b
comparison
equal deleted inserted replaced
454:7f1394bb96db 455:0b5233981671
184 self.send(main_message) 184 self.send(main_message)
185 185
186 def notifyPublish(self, pep_jid, nodeIdentifier, notifications): 186 def notifyPublish(self, pep_jid, nodeIdentifier, notifications):
187 """Do notifications using privileges""" 187 """Do notifications using privileges"""
188 for subscriber, subscriptions, items in notifications: 188 for subscriber, subscriptions, items in notifications:
189 message = self._pubsub_service._createNotification('items', pep_jid, 189 message = self._pubsub_service._createNotification(
190 nodeIdentifier, subscriber, 190 'items',
191 subscriptions) 191 pep_jid,
192 nodeIdentifier,
193 subscriber,
194 subscriptions
195 )
192 for item in items: 196 for item in items:
193 item.uri = pubsub.NS_PUBSUB_EVENT 197 item.uri = pubsub.NS_PUBSUB_EVENT
194 message.event.items.addChild(item) 198 message.event.items.addChild(item)
195 self.sendMessage(message) 199 self.sendMessage(message)
196 200
197
198 def notifyRetract(self, pep_jid, nodeIdentifier, notifications): 201 def notifyRetract(self, pep_jid, nodeIdentifier, notifications):
199 for subscriber, subscriptions, items in notifications: 202 for subscriber, subscriptions, items in notifications:
200 message = self._pubsub_service._createNotification('items', pep_jid, 203 message = self._pubsub_service._createNotification(
201 nodeIdentifier, subscriber, 204 'items',
202 subscriptions) 205 pep_jid,
206 nodeIdentifier,
207 subscriber,
208 subscriptions
209 )
203 for item in items: 210 for item in items:
204 retract = domish.Element((None, "retract")) 211 retract = domish.Element((None, "retract"))
205 retract['id'] = item['id'] 212 retract['id'] = item['id']
206 message.event.items.addChild(retract) 213 message.event.items.addChild(retract)
207 self.sendMessage(message) 214 self.sendMessage(message)
208 215
209 216 def notifyDelete(self, pep_jid, nodeIdentifier, subscribers, redirectURI=None):
210 # def notifyDelete(self, service, nodeIdentifier, subscribers, 217 for subscriber in subscribers:
211 # redirectURI=None): 218 message = self._pubsub_service._createNotification(
212 # # TODO 219 'delete',
213 # for subscriber in subscribers: 220 pep_jid,
214 # message = self._createNotification('delete', service, 221 nodeIdentifier,
215 # nodeIdentifier, 222 subscriber
216 # subscriber) 223 )
217 # if redirectURI: 224 if redirectURI:
218 # redirect = message.event.delete.addElement('redirect') 225 redirect = message.event.delete.addElement('redirect')
219 # redirect['uri'] = redirectURI 226 redirect['uri'] = redirectURI
220 # self.send(message) 227 self.sendMessage(message)
221 228
229 def notifyPurge(self, pep_jid, nodeIdentifier, subscribers):
230 for subscriber in subscribers:
231 message = self._pubsub_service._createNotification(
232 'purge',
233 pep_jid,
234 nodeIdentifier,
235 subscriber
236 )
237 self.sendMessage(message)
222 238
223 ## presence ## 239 ## presence ##
224 240
225 @defer.inlineCallbacks 241 @defer.inlineCallbacks
226 def onPresence(self, presence_elt): 242 def onPresence(self, presence_elt):