Mercurial > libervia-backend
comparison sat/plugins/plugin_exp_pubsub_schema.py @ 2774:95321f233387
plugin pubsub schema: code formatting minor update
author | Goffi <goffi@goffi.org> |
---|---|
date | Sat, 12 Jan 2019 16:50:13 +0100 |
parents | 003b8b4b56a7 |
children | 76ebecdb9b1e |
comparison
equal
deleted
inserted
replaced
2773:b7974814dd5b | 2774:95321f233387 |
---|---|
143 d = iq_elt.send() | 143 d = iq_elt.send() |
144 d.addCallback(self._getSchemaCb) | 144 d.addCallback(self._getSchemaCb) |
145 return d | 145 return d |
146 | 146 |
147 @defer.inlineCallbacks | 147 @defer.inlineCallbacks |
148 def getSchemaForm( | 148 def getSchemaForm(self, client, service, nodeIdentifier, schema=None, |
149 self, | 149 form_type="form", copy_form=True): |
150 client, | |
151 service, | |
152 nodeIdentifier, | |
153 schema=None, | |
154 form_type="form", | |
155 copy_form=True, | |
156 ): | |
157 """get data form from node's schema | 150 """get data form from node's schema |
158 | 151 |
159 @param service(None, jid.JID): PubSub service | 152 @param service(None, jid.JID): PubSub service |
160 @param nodeIdentifier(unicode): node | 153 @param nodeIdentifier(unicode): node |
161 @param schema(domish.Element, data_form.Form, None): node schema | 154 @param schema(domish.Element, data_form.Form, None): node schema |
192 def schema2XMLUI(self, schema_elt): | 185 def schema2XMLUI(self, schema_elt): |
193 form = data_form.Form.fromElement(schema_elt) | 186 form = data_form.Form.fromElement(schema_elt) |
194 xmlui = xml_tools.dataForm2XMLUI(form, "") | 187 xmlui = xml_tools.dataForm2XMLUI(form, "") |
195 return xmlui | 188 return xmlui |
196 | 189 |
197 def _getUISchema( | 190 def _getUISchema(self, service, nodeIdentifier, default_node=None, |
198 self, service, nodeIdentifier, default_node=None, profile_key=C.PROF_KEY_NONE | 191 profile_key=C.PROF_KEY_NONE): |
199 ): | |
200 if not nodeIdentifier: | 192 if not nodeIdentifier: |
201 if not default_node: | 193 if not default_node: |
202 raise ValueError(_(u"nodeIndentifier needs to be set")) | 194 raise ValueError(_(u"nodeIndentifier needs to be set")) |
203 nodeIdentifier = default_node | 195 nodeIdentifier = default_node |
204 client = self.host.getClient(profile_key) | 196 client = self.host.getClient(profile_key) |
232 schema_elt["node"] = nodeIdentifier | 224 schema_elt["node"] = nodeIdentifier |
233 if schema is not None: | 225 if schema is not None: |
234 schema_elt.addChild(schema) | 226 schema_elt.addChild(schema) |
235 return iq_elt.send() | 227 return iq_elt.send() |
236 | 228 |
237 def _getDataFormItems( | 229 def _getDataFormItems(self, form_ns="", service="", node="", schema="", max_items=10, |
238 self, | 230 item_ids=None, sub_id=None, extra_dict=None, |
239 form_ns="", | 231 profile_key=C.PROF_KEY_NONE): |
240 service="", | |
241 node="", | |
242 schema="", | |
243 max_items=10, | |
244 item_ids=None, | |
245 sub_id=None, | |
246 extra_dict=None, | |
247 profile_key=C.PROF_KEY_NONE, | |
248 ): | |
249 client = self.host.getClient(profile_key) | 232 client = self.host.getClient(profile_key) |
250 service = jid.JID(service) if service else None | 233 service = jid.JID(service) if service else None |
251 if not node: | 234 if not node: |
252 raise exceptions.DataError(_(u"empty node is not allowed")) | 235 raise exceptions.DataError(_(u"empty node is not allowed")) |
253 if schema: | 236 if schema: |
272 return d | 255 return d |
273 | 256 |
274 @defer.inlineCallbacks | 257 @defer.inlineCallbacks |
275 def getDataFormItems(self, client, service, nodeIdentifier, schema=None, | 258 def getDataFormItems(self, client, service, nodeIdentifier, schema=None, |
276 max_items=None, item_ids=None, sub_id=None, rsm_request=None, | 259 max_items=None, item_ids=None, sub_id=None, rsm_request=None, |
277 extra=None, default_node=None, form_ns=None, filters=None): | 260 extra=None, default_node=None, form_ns=None, filters=None): |
278 """Get items known as being data forms, and convert them to XMLUI | 261 """Get items known as being data forms, and convert them to XMLUI |
279 | 262 |
280 @param schema(domish.Element, data_form.Form, None): schema of the node if known | 263 @param schema(domish.Element, data_form.Form, None): schema of the node if known |
281 if None, it will be retrieved from node | 264 if None, it will be retrieved from node |
282 @param default_node(unicode): node to use if nodeIdentifier is None or empty | 265 @param default_node(unicode): node to use if nodeIdentifier is None or empty |
331 ) | 314 ) |
332 items_xmlui.append(xmlui) | 315 items_xmlui.append(xmlui) |
333 break | 316 break |
334 defer.returnValue((items_xmlui, metadata)) | 317 defer.returnValue((items_xmlui, metadata)) |
335 | 318 |
336 def _sendDataFormItem( | 319 def _sendDataFormItem(self, service, nodeIdentifier, values, schema=None, |
337 self, | 320 item_id=None, extra=None, profile_key=C.PROF_KEY_NONE): |
338 service, | |
339 nodeIdentifier, | |
340 values, | |
341 schema=None, | |
342 item_id=None, | |
343 extra=None, | |
344 profile_key=C.PROF_KEY_NONE, | |
345 ): | |
346 client = self.host.getClient(profile_key) | 321 client = self.host.getClient(profile_key) |
347 service = None if not service else jid.JID(service) | 322 service = None if not service else jid.JID(service) |
348 if schema: | 323 if schema: |
349 schema = generic.parseXml(schema.encode("utf-8")) | 324 schema = generic.parseXml(schema.encode("utf-8")) |
350 else: | 325 else: |
361 ) | 336 ) |
362 d.addCallback(lambda ret: ret or u"") | 337 d.addCallback(lambda ret: ret or u"") |
363 return d | 338 return d |
364 | 339 |
365 @defer.inlineCallbacks | 340 @defer.inlineCallbacks |
366 def sendDataFormItem( | 341 def sendDataFormItem(self, client, service, nodeIdentifier, values, schema=None, |
367 self, | 342 item_id=None, extra=None, deserialise=False): |
368 client, | |
369 service, | |
370 nodeIdentifier, | |
371 values, | |
372 schema=None, | |
373 item_id=None, | |
374 extra=None, | |
375 deserialise=False, | |
376 ): | |
377 """Publish an item as a dataform when we know that there is a schema | 343 """Publish an item as a dataform when we know that there is a schema |
378 | 344 |
379 @param values(dict[key(unicode), [iterable[object], object]]): values set for the form | 345 @param values(dict[key(unicode), [iterable[object], object]]): values set for the |
380 if not iterable, will be put in a list | 346 form. If not iterable, will be put in a list. |
381 @param schema(domish.Element, data_form.Form, None): data schema | 347 @param schema(domish.Element, data_form.Form, None): data schema |
382 None to retrieve data schema from node (need to do a additional XMPP call) | 348 None to retrieve data schema from node (need to do a additional XMPP call) |
383 Schema is needed to construct data form to publish | 349 Schema is needed to construct data form to publish |
384 @param deserialise(bool): if True, data are list of unicode and must be deserialized according to expected type | 350 @param deserialise(bool): if True, data are list of unicode and must be |
385 This is done in this method and not directly in _sendDataFormItem because we need to know the data type | 351 deserialized according to expected type. |
386 which is in the form, not availablable in _sendDataFormItem | 352 This is done in this method and not directly in _sendDataFormItem because we |
353 need to know the data type which is in the form, not availablable in | |
354 _sendDataFormItem | |
387 other parameters as the same as for [self._p.sendItem] | 355 other parameters as the same as for [self._p.sendItem] |
388 @return (unicode): id of the created item | 356 @return (unicode): id of the created item |
389 """ | 357 """ |
390 form = yield self.getSchemaForm( | 358 form = yield self.getSchemaForm( |
391 client, service, nodeIdentifier, schema, form_type="submit" | 359 client, service, nodeIdentifier, schema, form_type="submit" |
472 ## Helper methods ## | 440 ## Helper methods ## |
473 | 441 |
474 def prepareBridgeGet(self, service, node, max_items, sub_id, extra_dict, profile_key): | 442 def prepareBridgeGet(self, service, node, max_items, sub_id, extra_dict, profile_key): |
475 """Parse arguments received from bridge *Get methods and return higher level data | 443 """Parse arguments received from bridge *Get methods and return higher level data |
476 | 444 |
477 @return (tuple): (client, service, node, max_items, extra, sub_id) usable for internal methods | 445 @return (tuple): (client, service, node, max_items, extra, sub_id) usable for |
446 internal methods | |
478 """ | 447 """ |
479 client = self.host.getClient(profile_key) | 448 client = self.host.getClient(profile_key) |
480 service = jid.JID(service) if service else None | 449 service = jid.JID(service) if service else None |
481 if not node: | 450 if not node: |
482 node = None | 451 node = None |
527 return d | 496 return d |
528 | 497 |
529 def prepareBridgeSet(self, service, node, schema, item_id, extra, profile_key): | 498 def prepareBridgeSet(self, service, node, schema, item_id, extra, profile_key): |
530 """Parse arguments received from bridge *Set methods and return higher level data | 499 """Parse arguments received from bridge *Set methods and return higher level data |
531 | 500 |
532 @return (tuple): (client, service, node, schema, item_id, extra) usable for internal methods | 501 @return (tuple): (client, service, node, schema, item_id, extra) usable for |
502 internal methods | |
533 """ | 503 """ |
534 client = self.host.getClient(profile_key) | 504 client = self.host.getClient(profile_key) |
535 service = None if not service else jid.JID(service) | 505 service = None if not service else jid.JID(service) |
536 if schema: | 506 if schema: |
537 schema = generic.parseXml(schema.encode("utf-8")) | 507 schema = generic.parseXml(schema.encode("utf-8")) |
539 schema = None | 509 schema = None |
540 if extra and u"update" in extra: | 510 if extra and u"update" in extra: |
541 extra[u"update"] = C.bool(extra[u"update"]) | 511 extra[u"update"] = C.bool(extra[u"update"]) |
542 return client, service, node or None, schema, item_id or None, extra | 512 return client, service, node or None, schema, item_id or None, extra |
543 | 513 |
544 def _set( | 514 def _set(self, service, node, values, schema=None, item_id=None, extra=None, |
545 self, | 515 default_node=None, form_ns=None, fill_author=True, |
546 service, | 516 profile_key=C.PROF_KEY_NONE): |
547 node, | |
548 values, | |
549 schema=None, | |
550 item_id=None, | |
551 extra=None, | |
552 default_node=None, | |
553 form_ns=None, | |
554 fill_author=True, | |
555 profile_key=C.PROF_KEY_NONE, | |
556 ): | |
557 """Bridge method to set item in node with schema | 517 """Bridge method to set item in node with schema |
558 | 518 |
559 this method is a helper so dependant plugins can use it directly | 519 this method is a helper so dependant plugins can use it directly |
560 when adding *Set methods | 520 when adding *Set methods |
561 """ | 521 """ |
577 ) | 537 ) |
578 d.addCallback(lambda ret: ret or u"") | 538 d.addCallback(lambda ret: ret or u"") |
579 return d | 539 return d |
580 | 540 |
581 @defer.inlineCallbacks | 541 @defer.inlineCallbacks |
582 def set( | 542 def set(self, client, service, node, values, schema, item_id, extra, deserialise, |
583 self, | 543 form_ns, default_node=None, fill_author=True): |
584 client, | |
585 service, | |
586 node, | |
587 values, | |
588 schema, | |
589 item_id, | |
590 extra, | |
591 deserialise, | |
592 form_ns, | |
593 default_node=None, | |
594 fill_author=True, | |
595 ): | |
596 """Set an item in a node with a schema | 544 """Set an item in a node with a schema |
597 | 545 |
598 This method can be used directly by *Set methods added by dependant plugin | 546 This method can be used directly by *Set methods added by dependant plugin |
599 @param values(dict[key(unicode), [iterable[object]|object]]): values of the items | 547 @param values(dict[key(unicode), [iterable[object]|object]]): values of the items |
600 if value is not iterable, it will be put in a list | 548 if value is not iterable, it will be put in a list |