comparison sat/plugins/plugin_exp_events.py @ 2941:83cbd4545274

plugin events: fixed invitation + set name and thumb_url from event element
author Goffi <goffi@goffi.org>
date Sat, 04 May 2019 00:06:41 +0200
parents 4f600b4ae819
children ab2696e34d29
comparison
equal deleted inserted replaced
2940:ef554aca3eb1 2941:83cbd4545274
141 141
142 def _parseEventElt(self, event_elt): 142 def _parseEventElt(self, event_elt):
143 """Helper method to parse event element 143 """Helper method to parse event element
144 144
145 @param (domish.Element): event_elt 145 @param (domish.Element): event_elt
146 @return (tupple[int, dict[unicode, unicode]): timestamp, event_data 146 @return (tuple[int, dict[unicode, unicode]): timestamp, event_data
147 """ 147 """
148 try: 148 try:
149 timestamp = date_utils.date_parse(next(event_elt.elements(NS_EVENT, "date"))) 149 timestamp = date_utils.date_parse(next(event_elt.elements(NS_EVENT, "date")))
150 except StopIteration: 150 except StopIteration:
151 timestamp = -1 151 timestamp = -1
230 raise exceptions.NotFound(_(u"No event element has been found")) 230 raise exceptions.NotFound(_(u"No event element has been found"))
231 except IndexError: 231 except IndexError:
232 raise exceptions.NotFound(_(u"No event with this id has been found")) 232 raise exceptions.NotFound(_(u"No event with this id has been found"))
233 defer.returnValue(event_elt) 233 defer.returnValue(event_elt)
234 234
235 def register(self, client, name, extra, service, node, event_id, event_elt, 235 def register(self, client, name, extra, service, node, event_id, item_elt,
236 creator=False): 236 creator=False):
237 """register evenement in personal events list 237 """Register evenement in personal events list
238 238
239 @param service(jid.JID): pubsub service of the event 239 @param service(jid.JID): pubsub service of the event
240 @param node(unicode): event node 240 @param node(unicode): event node
241 @param event_id(unicode): event id 241 @param event_id(unicode): event id
242 @param event_elt(domish.Element): event element 242 @param event_elt(domish.Element): event element
243 note that this element will be modified in place 243 note that this element will be modified in place
244 @param creator(bool): True if client's profile is the creator of the node 244 @param creator(bool): True if client's profile is the creator of the node
245 """ 245 """
246 # FIXME: name and extra are unused 246 event_elt = item_elt.event
247 link_elt = event_elt.addElement("link") 247 link_elt = event_elt.addElement("link")
248 link_elt["service"] = service.full() 248 link_elt["service"] = service.full()
249 link_elt["node"] = node 249 link_elt["node"] = node
250 link_elt["item"] = event_id 250 link_elt["item"] = event_id
251 __, event_data = self._parseEventElt(event_elt)
252 name = event_data.get(u'name')
253 if u'image' in event_data:
254 extra = {u'thumb_url': event_data[u'image']}
255 else:
256 extra = None
251 return self.host.plugins[u'LIST_INTEREST'].registerPubsub( 257 return self.host.plugins[u'LIST_INTEREST'].registerPubsub(
252 client, NS_EVENT, service, node, event_id, creator, 258 client, NS_EVENT, service, node, event_id, creator,
253 element=event_elt) 259 name=name, element=event_elt, extra=extra)
254 260
255 def _eventGet(self, service, node, id_=u"", profile_key=C.PROF_KEY_NONE): 261 def _eventGet(self, service, node, id_=u"", profile_key=C.PROF_KEY_NONE):
256 service = jid.JID(service) if service else None 262 service = jid.JID(service) if service else None
257 node = node if node else NS_EVENT 263 node = node if node else NS_EVENT
258 client = self.host.getClient(profile_key) 264 client = self.host.getClient(profile_key)
429 client, service, node, namespace=NS_EVENT) 435 client, service, node, namespace=NS_EVENT)
430 events = [] 436 events = []
431 for item in items: 437 for item in items:
432 try: 438 try:
433 event_elt = next(item.interest.pubsub.elements(NS_EVENT, u"event")) 439 event_elt = next(item.interest.pubsub.elements(NS_EVENT, u"event"))
434 except IndexError: 440 except StopIteration:
435 log.warning( 441 log.warning(
436 _(u"No event found in item {item_id}").format(item_id=item["id"]) 442 _(u"No event found in item {item_id}, ignoring").format(
443 item_id=item["id"])
437 ) 444 )
438 else: 445 else:
439 timestamp, data = self._parseEventElt(event_elt) 446 timestamp, data = self._parseEventElt(event_elt)
440 events.append((timestamp, data)) 447 events.append((timestamp, data))
441 defer.returnValue(events) 448 defer.returnValue(events)
593 client, comments_service, comments_node, {invitee_jid: u"publisher"} 600 client, comments_service, comments_node, {invitee_jid: u"publisher"}
594 ) 601 )
595 log.debug(_(u"affiliation set on blog and comments nodes")) 602 log.debug(_(u"affiliation set on blog and comments nodes"))
596 603
597 # now we send the invitation 604 # now we send the invitation
598 pubsub_invitation = self.host.plugins[u'PUBSUB_INVITATION'] 605 pubsub_invitation = self.host.plugins[u'INVITATION']
599 pubsub_invitation.sendPubsubInvitation(client, invitee_jid, service, node, 606 pubsub_invitation.sendPubsubInvitation(client, invitee_jid, service, node,
600 item_id, name, extra) 607 item_id, name, extra)
601 608
602 def _inviteByEmail(self, service, node, id_=NS_EVENT, email=u"", emails_extra=None, 609 def _inviteByEmail(self, service, node, id_=NS_EVENT, email=u"", emails_extra=None,
603 name=u"", host_name=u"", language=u"", url_template=u"", 610 name=u"", host_name=u"", language=u"", url_template=u"",
604 message_subject=u"", message_body=u"", 611 message_subject=u"", message_body=u"",
605 profile_key=C.PROF_KEY_NONE): 612 profile_key=C.PROF_KEY_NONE):