Mercurial > libervia-backend
annotate src/plugins/plugin_xep_0055.py @ 2138:6e509ee853a8
plugin OTR, core; use of new sendMessage + OTR mini refactoring:
- new client.sendMessage method is used instead of sendMessageToStream
- client.feedback is used in OTR
- OTR now add message processing hints and carbon private element as recommanded by XEP-0364. Explicit Message Encryption is still TODO
- OTR use the new sendMessageFinish trigger, this has a number of advantages:
* there is little risk that OTR is skipped by other plugins (they have to use client.sendMessage as recommanded)
* being at the end of the chain, OTR can check and remove any HTML or other leaking elements
* OTR doesn't have to skip other plugins anymore, this means that things like delivery receipts are now working with OTR
(but because there is not full stanza encryption, they can leak metadata)
* OTR can decide to follow storage hint by letting or deleting "history" key
author | Goffi <goffi@goffi.org> |
---|---|
date | Sun, 05 Feb 2017 15:00:01 +0100 |
parents | 2daf7b4c6756 |
children | 33c8c4973743 |
rev | line source |
---|---|
1934
2daf7b4c6756
use of /usr/bin/env instead of /usr/bin/python in shebang
Goffi <goffi@goffi.org>
parents:
1810
diff
changeset
|
1 #!/usr/bin/env python2 |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
3 |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
4 # SAT plugin for Jabber Search (xep-0055) |
1766 | 5 # Copyright (C) 2009-2016 Jérôme Poisson (goffi@goffi.org) |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
6 |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
7 # This program is free software: you can redistribute it and/or modify |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
8 # it under the terms of the GNU Affero General Public License as published by |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
9 # the Free Software Foundation, either version 3 of the License, or |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
10 # (at your option) any later version. |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
11 |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
12 # This program is distributed in the hope that it will be useful, |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
15 # GNU Affero General Public License for more details. |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
16 |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
17 # You should have received a copy of the GNU Affero General Public License |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
19 |
799
7f2082b192ed
plugin XEP-0055, Primitivus: Directory search dialogs are now entirely done in plugin XEP-0055, specific code in frontend is not needed anymore
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
20 from sat.core.i18n import _, D_ |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
867
diff
changeset
|
21 from sat.core.log import getLogger |
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
867
diff
changeset
|
22 log = getLogger(__name__) |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
23 |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
24 from twisted.words.protocols.jabber.xmlstream import IQ |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
25 from twisted.words.protocols.jabber import jid |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
867
diff
changeset
|
26 from twisted.internet import defer |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
27 from wokkel import data_form |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
28 from sat.core.constants import Const as C |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
29 from sat.core.exceptions import DataError |
799
7f2082b192ed
plugin XEP-0055, Primitivus: Directory search dialogs are now entirely done in plugin XEP-0055, specific code in frontend is not needed anymore
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
30 from sat.tools import xml_tools |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
31 |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
32 from wokkel import disco, iwokkel |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
33 try: |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
34 from twisted.words.protocols.xmlstream import XMPPHandler |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
35 except ImportError: |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
36 from wokkel.subprotocols import XMPPHandler |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
37 from zope.interface import implements |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
38 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
39 |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
40 NS_SEARCH = 'jabber:iq:search' |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
41 |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
42 PLUGIN_INFO = { |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
43 "name": "Jabber Search", |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
44 "import_name": "XEP-0055", |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
45 "type": "XEP", |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
46 "protocols": ["XEP-0055"], |
1219
16484ebb695b
plugin XEP-0059: first draft, pubsub and jabber search do not exploit it yet
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
47 "dependencies": [], |
1810
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
1766
diff
changeset
|
48 "recommendations": ["XEP-0059"], |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
49 "main": "XEP_0055", |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
50 "handler": "no", |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
51 "description": _("""Implementation of Jabber Search""") |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
52 } |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
53 |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
54 # config file parameters |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
55 CONFIG_SECTION = "plugin search" |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
56 CONFIG_SERVICE_LIST = "service_list" |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
57 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
58 DEFAULT_SERVICE_LIST = ["salut.libervia.org"] |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
59 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
60 FIELD_SINGLE = "field_single" # single text field for the simple search |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
61 FIELD_CURRENT_SERVICE = "current_service_jid" # read-only text field for the advanced search |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
62 |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
63 class XEP_0055(object): |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
64 |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
65 def __init__(self, host): |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
867
diff
changeset
|
66 log.info(_("Jabber search plugin initialization")) |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
67 self.host = host |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
68 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
69 # default search services (config file + hard-coded lists) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
70 self.services = [jid.JID(entry) for entry in host.memory.getConfig(CONFIG_SECTION, CONFIG_SERVICE_LIST, DEFAULT_SERVICE_LIST)] |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
71 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
72 host.bridge.addMethod("searchGetFieldsUI", ".plugin", in_sign='ss', out_sign='s', |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
73 method=self._getFieldsUI, |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
74 async=True) |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
75 host.bridge.addMethod("searchRequest", ".plugin", in_sign='sa{ss}s', out_sign='s', |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
76 method=self._searchRequest, |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
77 async=True) |
799
7f2082b192ed
plugin XEP-0055, Primitivus: Directory search dialogs are now entirely done in plugin XEP-0055, specific code in frontend is not needed anymore
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
78 |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
79 self.__search_menu_id = host.registerCallback(self._getMainUI, with_data=True) |
1707
94c450972346
primitivus and plugins: renamed a few menus:
souliane <souliane@mailoo.org>
parents:
1552
diff
changeset
|
80 host.importMenu((D_("Contacts"), D_("Search directory")), self._getMainUI, security_limit=1, help_string=D_("Search user directory")) |
1509
72e6ee3fdf53
plugin XEP-0055: add "Directory subscription" menu + use the category "Service" for this plugin's menus instead of "Communication"
souliane <souliane@mailoo.org>
parents:
1508
diff
changeset
|
81 |
72e6ee3fdf53
plugin XEP-0055: add "Directory subscription" menu + use the category "Service" for this plugin's menus instead of "Communication"
souliane <souliane@mailoo.org>
parents:
1508
diff
changeset
|
82 def _getHostServices(self, profile): |
72e6ee3fdf53
plugin XEP-0055: add "Directory subscription" menu + use the category "Service" for this plugin's menus instead of "Communication"
souliane <souliane@mailoo.org>
parents:
1508
diff
changeset
|
83 """Return the jabber search services associated to the user host. |
1552
e0bde0d0b321
core (disco): use of “profile” instead of “profile_key” in several disco methods
Goffi <goffi@goffi.org>
parents:
1509
diff
changeset
|
84 |
1509
72e6ee3fdf53
plugin XEP-0055: add "Directory subscription" menu + use the category "Service" for this plugin's menus instead of "Communication"
souliane <souliane@mailoo.org>
parents:
1508
diff
changeset
|
85 @param profile (unicode): %(doc_profile)s |
72e6ee3fdf53
plugin XEP-0055: add "Directory subscription" menu + use the category "Service" for this plugin's menus instead of "Communication"
souliane <souliane@mailoo.org>
parents:
1508
diff
changeset
|
86 @return: list[jid.JID] |
72e6ee3fdf53
plugin XEP-0055: add "Directory subscription" menu + use the category "Service" for this plugin's menus instead of "Communication"
souliane <souliane@mailoo.org>
parents:
1508
diff
changeset
|
87 """ |
1552
e0bde0d0b321
core (disco): use of “profile” instead of “profile_key” in several disco methods
Goffi <goffi@goffi.org>
parents:
1509
diff
changeset
|
88 d = self.host.findFeaturesSet([NS_SEARCH], profile=profile) |
1509
72e6ee3fdf53
plugin XEP-0055: add "Directory subscription" menu + use the category "Service" for this plugin's menus instead of "Communication"
souliane <souliane@mailoo.org>
parents:
1508
diff
changeset
|
89 return d.addCallback(lambda set_: list(set_)) |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
90 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
91 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
92 ## Main search UI (menu item callback) ## |
799
7f2082b192ed
plugin XEP-0055, Primitivus: Directory search dialogs are now entirely done in plugin XEP-0055, specific code in frontend is not needed anymore
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
93 |
7f2082b192ed
plugin XEP-0055, Primitivus: Directory search dialogs are now entirely done in plugin XEP-0055, specific code in frontend is not needed anymore
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
94 |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
95 def _getMainUI(self, raw_data, profile): |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
96 """Get the XMLUI for selecting a service and searching the directory. |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
97 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
98 @param raw_data (dict): data received from the frontend |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
99 @param profile (unicode): %(doc_profile)s |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
100 @return: a deferred XMLUI string representation |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
101 """ |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
102 # check if the user's server offers some search services |
1509
72e6ee3fdf53
plugin XEP-0055: add "Directory subscription" menu + use the category "Service" for this plugin's menus instead of "Communication"
souliane <souliane@mailoo.org>
parents:
1508
diff
changeset
|
103 d = self._getHostServices(profile) |
72e6ee3fdf53
plugin XEP-0055: add "Directory subscription" menu + use the category "Service" for this plugin's menus instead of "Communication"
souliane <souliane@mailoo.org>
parents:
1508
diff
changeset
|
104 return d.addCallback(lambda services: self.getMainUI(services, raw_data, profile)) |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
105 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
106 def getMainUI(self, services, raw_data, profile): |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
107 """Get the XMLUI for selecting a service and searching the directory. |
799
7f2082b192ed
plugin XEP-0055, Primitivus: Directory search dialogs are now entirely done in plugin XEP-0055, specific code in frontend is not needed anymore
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
108 |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
109 @param services (list[jid.JID]): search services offered by the user server |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
110 @param raw_data (dict): data received from the frontend |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
111 @param profile (unicode): %(doc_profile)s |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
112 @return: a deferred XMLUI string representation |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
113 """ |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
114 # extend services offered by user's server with the default services |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
115 services.extend([service for service in self.services if service not in services]) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
116 data = xml_tools.XMLUIResult2DataFormResult(raw_data) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
117 main_ui = xml_tools.XMLUI(C.XMLUI_WINDOW, container="tabs", title=_("Search users"), submit_id=self.__search_menu_id) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
118 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
119 d = self._addSimpleSearchUI(services, main_ui, data, profile) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
120 d.addCallback(lambda dummy: self._addAdvancedSearchUI(services, main_ui, data, profile)) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
121 return d.addCallback(lambda dummy: {'xmlui': main_ui.toXml()}) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
122 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
123 def _addSimpleSearchUI(self, services, main_ui, data, profile): |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
124 """Add to the main UI a tab for the simple search. |
1552
e0bde0d0b321
core (disco): use of “profile” instead of “profile_key” in several disco methods
Goffi <goffi@goffi.org>
parents:
1509
diff
changeset
|
125 |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
126 Display a single input field and search on the main service (it actually does one search per search field and then compile the results). |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
127 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
128 @param services (list[jid.JID]): search services offered by the user server |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
129 @param main_ui (XMLUI): the main XMLUI instance |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
130 @param data (dict): form data without SAT_FORM_PREFIX |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
131 @param profile (unicode): %(doc_profile)s |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
132 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
133 @return: a dummy Deferred |
799
7f2082b192ed
plugin XEP-0055, Primitivus: Directory search dialogs are now entirely done in plugin XEP-0055, specific code in frontend is not needed anymore
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
134 """ |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
135 service_jid = services[0] # TODO: search on all the given services, not only the first one |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
136 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
137 form = data_form.Form('form', formNamespace=NS_SEARCH) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
138 form.addField(data_form.Field('text-single', FIELD_SINGLE, label=_('Search for'), value=data.get(FIELD_SINGLE, ''))) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
139 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
140 sub_cont = main_ui.main_container.addTab("simple_search", label=_("Simple search"), container=xml_tools.VerticalContainer) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
141 main_ui.changeContainer(sub_cont.append(xml_tools.PairsContainer(main_ui))) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
142 xml_tools.dataForm2Widgets(main_ui, form) |
1552
e0bde0d0b321
core (disco): use of “profile” instead of “profile_key” in several disco methods
Goffi <goffi@goffi.org>
parents:
1509
diff
changeset
|
143 |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
144 # FIXME: add colspan attribute to divider? (we are in a PairsContainer) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
145 main_ui.addDivider('blank') |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
146 main_ui.addDivider('blank') # here we added a blank line before the button |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
147 main_ui.addDivider('blank') |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
148 main_ui.addButton(self.__search_menu_id, _("Search"), (FIELD_SINGLE,)) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
149 main_ui.addDivider('blank') |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
150 main_ui.addDivider('blank') # a blank line again after the button |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
151 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
152 simple_data = {key: value for key, value in data.iteritems() if key in (FIELD_SINGLE,)} |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
153 if simple_data: |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
154 log.debug("Simple search with %s on %s" % (simple_data, service_jid)) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
155 sub_cont.parent.setSelected(True) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
156 main_ui.changeContainer(sub_cont.append(xml_tools.VerticalContainer(main_ui))) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
157 main_ui.addDivider('dash') |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
158 d = self.searchRequest(service_jid, simple_data, profile) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
159 d.addCallbacks(lambda elt: self._displaySearchResult(main_ui, elt), |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
160 lambda failure: main_ui.addText(failure.getErrorMessage())) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
161 return d |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
162 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
163 return defer.succeed(None) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
164 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
165 def _addAdvancedSearchUI(self, services, main_ui, data, profile): |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
166 """Add to the main UI a tab for the advanced search. |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
167 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
168 Display a service selector and allow to search on all the fields that are implemented by the selected service. |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
169 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
170 @param services (list[jid.JID]): search services offered by the user server |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
171 @param main_ui (XMLUI): the main XMLUI instance |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
172 @param data (dict): form data without SAT_FORM_PREFIX |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
173 @param profile (unicode): %(doc_profile)s |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
174 |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
175 @return: a dummy Deferred |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
176 """ |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
177 sub_cont = main_ui.main_container.addTab("advanced_search", label=_("Advanced search"), container=xml_tools.VerticalContainer) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
178 service_selection_fields = ['service_jid', 'service_jid_extra'] |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
179 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
180 if 'service_jid_extra' in data: |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
181 # refresh button has been pushed, select the tab |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
182 sub_cont.parent.setSelected(True) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
183 # get the selected service |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
184 service_jid_s = data.get('service_jid_extra', '') |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
185 if not service_jid_s: |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
186 service_jid_s = data.get('service_jid', unicode(services[0])) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
187 log.debug("Refreshing search fields for %s" % service_jid_s) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
188 else: |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
189 service_jid_s = data.get(FIELD_CURRENT_SERVICE, unicode(services[0])) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
190 services_s = [unicode(service) for service in services] |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
191 if service_jid_s not in services_s: |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
192 services_s.append(service_jid_s) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
193 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
194 main_ui.changeContainer(sub_cont.append(xml_tools.PairsContainer(main_ui))) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
195 main_ui.addLabel(_("Search on")) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
196 main_ui.addList('service_jid', options=services_s, selected=service_jid_s) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
197 main_ui.addLabel(_("Other service")) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
198 main_ui.addString(name='service_jid_extra') |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
199 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
200 # FIXME: add colspan attribute to divider? (we are in a PairsContainer) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
201 main_ui.addDivider('blank') |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
202 main_ui.addDivider('blank') # here we added a blank line before the button |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
203 main_ui.addDivider('blank') |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
204 main_ui.addButton(self.__search_menu_id, _("Refresh fields"), service_selection_fields) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
205 main_ui.addDivider('blank') |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
206 main_ui.addDivider('blank') # a blank line again after the button |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
207 main_ui.addLabel(_("Displaying the search form for")) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
208 main_ui.addString(name=FIELD_CURRENT_SERVICE, value=service_jid_s, read_only=True) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
209 main_ui.addDivider('dash') |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
210 main_ui.addDivider('dash') |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
211 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
212 main_ui.changeContainer(sub_cont.append(xml_tools.VerticalContainer(main_ui))) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
213 service_jid = jid.JID(service_jid_s) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
214 d = self.getFieldsUI(service_jid, profile) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
215 d.addCallbacks(self._addAdvancedForm, lambda failure: main_ui.addText(failure.getErrorMessage()), |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
216 [service_jid, main_ui, sub_cont, data, profile]) |
799
7f2082b192ed
plugin XEP-0055, Primitivus: Directory search dialogs are now entirely done in plugin XEP-0055, specific code in frontend is not needed anymore
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
217 return d |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
218 |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
219 def _addAdvancedForm(self, form_elt, service_jid, main_ui, sub_cont, data, profile): |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
220 """Add the search form and the search results (if there is some to display). |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
221 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
222 @param form_elt (domish.Element): form element listing the fields |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
223 @param service_jid (jid.JID): current search service |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
224 @param main_ui (XMLUI): the main XMLUI instance |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
225 @param sub_cont (Container): the container of the current tab |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
226 @param data (dict): form data without SAT_FORM_PREFIX |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
227 @param profile (unicode): %(doc_profile)s |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
228 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
229 @return: a dummy Deferred |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
230 """ |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
231 field_list = data_form.Form.fromElement(form_elt).fieldList |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
232 adv_fields = [field.var for field in field_list if field.var] |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
233 adv_data = {key: value for key, value in data.iteritems() if key in adv_fields} |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
234 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
235 xml_tools.dataForm2Widgets(main_ui, data_form.Form.fromElement(form_elt)) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
236 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
237 # refill the submitted values |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
238 # FIXME: wokkel's data_form.Form.fromElement doesn't parse the values, so we do it directly in XMLUI for now |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
239 for widget in main_ui.current_container.elem.childNodes: |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
240 name = widget.getAttribute("name") |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
241 if adv_data.get(name): |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
242 widget.setAttribute("value", adv_data[name]) |
1552
e0bde0d0b321
core (disco): use of “profile” instead of “profile_key” in several disco methods
Goffi <goffi@goffi.org>
parents:
1509
diff
changeset
|
243 |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
244 # FIXME: add colspan attribute to divider? (we are in a PairsContainer) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
245 main_ui.addDivider('blank') |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
246 main_ui.addDivider('blank') # here we added a blank line before the button |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
247 main_ui.addDivider('blank') |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
248 main_ui.addButton(self.__search_menu_id, _("Search"), adv_fields + [FIELD_CURRENT_SERVICE]) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
249 main_ui.addDivider('blank') |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
250 main_ui.addDivider('blank') # a blank line again after the button |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
251 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
252 if adv_data: # display the search results |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
253 log.debug("Advanced search with %s on %s" % (adv_data, service_jid)) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
254 sub_cont.parent.setSelected(True) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
255 main_ui.changeContainer(sub_cont.append(xml_tools.VerticalContainer(main_ui))) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
256 main_ui.addDivider('dash') |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
257 d = self.searchRequest(service_jid, adv_data, profile) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
258 d.addCallbacks(lambda elt: self._displaySearchResult(main_ui, elt), |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
259 lambda failure: main_ui.addText(failure.getErrorMessage())) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
260 return d |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
261 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
262 return defer.succeed(None) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
263 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
264 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
265 def _displaySearchResult(self, main_ui, elt): |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
266 """Display the search results. |
1552
e0bde0d0b321
core (disco): use of “profile” instead of “profile_key” in several disco methods
Goffi <goffi@goffi.org>
parents:
1509
diff
changeset
|
267 |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
268 @param main_ui (XMLUI): the main XMLUI instance |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
269 @param elt (domish.Element): form result element |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
270 """ |
1552
e0bde0d0b321
core (disco): use of “profile” instead of “profile_key” in several disco methods
Goffi <goffi@goffi.org>
parents:
1509
diff
changeset
|
271 if [child for child in elt.children if child.name == "item"]: |
1508
ec60682a9d17
plugin XEP-0055: display the search results using XMLUI JidsListWidget
souliane <souliane@mailoo.org>
parents:
1506
diff
changeset
|
272 headers, xmlui_data = xml_tools.dataFormResult2XMLUIData(elt) |
ec60682a9d17
plugin XEP-0055: display the search results using XMLUI JidsListWidget
souliane <souliane@mailoo.org>
parents:
1506
diff
changeset
|
273 if "jid" in headers: # use XMLUI JidsListWidget to display the results |
ec60682a9d17
plugin XEP-0055: display the search results using XMLUI JidsListWidget
souliane <souliane@mailoo.org>
parents:
1506
diff
changeset
|
274 values = {} |
ec60682a9d17
plugin XEP-0055: display the search results using XMLUI JidsListWidget
souliane <souliane@mailoo.org>
parents:
1506
diff
changeset
|
275 for i in range(len(xmlui_data)): |
ec60682a9d17
plugin XEP-0055: display the search results using XMLUI JidsListWidget
souliane <souliane@mailoo.org>
parents:
1506
diff
changeset
|
276 header = headers.keys()[i % len(headers)] |
ec60682a9d17
plugin XEP-0055: display the search results using XMLUI JidsListWidget
souliane <souliane@mailoo.org>
parents:
1506
diff
changeset
|
277 widget_type, widget_args, widget_kwargs = xmlui_data[i] |
ec60682a9d17
plugin XEP-0055: display the search results using XMLUI JidsListWidget
souliane <souliane@mailoo.org>
parents:
1506
diff
changeset
|
278 value = widget_args[0] |
ec60682a9d17
plugin XEP-0055: display the search results using XMLUI JidsListWidget
souliane <souliane@mailoo.org>
parents:
1506
diff
changeset
|
279 values.setdefault(header, []).append(jid.JID(value) if header == "jid" else value) |
ec60682a9d17
plugin XEP-0055: display the search results using XMLUI JidsListWidget
souliane <souliane@mailoo.org>
parents:
1506
diff
changeset
|
280 main_ui.addJidsList(jids=values["jid"], name=D_(u"Search results")) |
ec60682a9d17
plugin XEP-0055: display the search results using XMLUI JidsListWidget
souliane <souliane@mailoo.org>
parents:
1506
diff
changeset
|
281 # TODO: also display the values other than JID |
ec60682a9d17
plugin XEP-0055: display the search results using XMLUI JidsListWidget
souliane <souliane@mailoo.org>
parents:
1506
diff
changeset
|
282 else: |
ec60682a9d17
plugin XEP-0055: display the search results using XMLUI JidsListWidget
souliane <souliane@mailoo.org>
parents:
1506
diff
changeset
|
283 xml_tools.XMLUIData2AdvancedList(main_ui, headers, xmlui_data) |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
284 else: |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
285 main_ui.addText(D_("The search gave no result")) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
286 |
1506
8405d622bde0
plugin XEP-0055: remove a "debug" break that has been forgotten here
souliane <souliane@mailoo.org>
parents:
1498
diff
changeset
|
287 |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
288 ## Retrieve the search fields ## |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
289 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
290 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
291 def _getFieldsUI(self, to_jid_s, profile_key): |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
292 """Ask a service to send us the list of the form fields it manages. |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
293 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
294 @param to_jid_s (unicode): XEP-0055 compliant search entity |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
295 @param profile_key (unicode): %(doc_profile_key)s |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
296 @return: a deferred XMLUI instance |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
297 """ |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
298 d = self.getFieldsUI(jid.JID(to_jid_s), profile_key) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
299 d.addCallback(lambda form: xml_tools.dataFormResult2XMLUI(form).toXml()) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
300 return d |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
301 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
302 def getFieldsUI(self, to_jid, profile_key): |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
303 """Ask a service to send us the list of the form fields it manages. |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
304 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
305 @param to_jid (jid.JID): XEP-0055 compliant search entity |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
306 @param profile_key (unicode): %(doc_profile_key)s |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
307 @return: a deferred domish.Element |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
308 """ |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
309 client = self.host.getClient(profile_key) |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
310 fields_request = IQ(client.xmlstream, 'get') |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
311 fields_request["from"] = client.jid.full() |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
312 fields_request["to"] = to_jid.full() |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
313 fields_request.addElement('query', NS_SEARCH) |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
314 d = fields_request.send(to_jid.full()) |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
315 d.addCallbacks(self._getFieldsUICb, self._getFieldsUIEb) |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
316 return d |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
317 |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
318 def _getFieldsUICb(self, answer): |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
319 """Callback for self.getFieldsUI. |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
320 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
321 @param answer (domish.Element): search query element |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
322 @return: domish.Element |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
323 """ |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
324 try: |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
325 query_elts = answer.elements('jabber:iq:search', 'query').next() |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
326 except StopIteration: |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
867
diff
changeset
|
327 log.info(_("No query element found")) |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
328 raise DataError # FIXME: StanzaError is probably more appropriate, check the RFC |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
329 try: |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
330 form_elt = query_elts.elements(data_form.NS_X_DATA, 'x').next() |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
331 except StopIteration: |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
867
diff
changeset
|
332 log.info(_("No data form found")) |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
333 raise NotImplementedError("Only search through data form is implemented so far") |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
334 return form_elt |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
335 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
336 def _getFieldsUIEb(self, failure): |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
337 """Errback to self.getFieldsUI. |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
338 |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
339 @param failure (defer.failure.Failure): twisted failure |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
340 @raise: the unchanged defer.failure.Failure |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
341 """ |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
342 log.info(_("Fields request failure: %s") % unicode(failure.getErrorMessage())) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
343 raise failure |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
344 |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
345 |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
346 ## Do the search ## |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
347 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
348 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
349 def _searchRequest(self, to_jid_s, search_data, profile_key): |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
350 """Actually do a search, according to filled data. |
799
7f2082b192ed
plugin XEP-0055, Primitivus: Directory search dialogs are now entirely done in plugin XEP-0055, specific code in frontend is not needed anymore
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
351 |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
352 @param to_jid_s (unicode): XEP-0055 compliant search entity |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
353 @param search_data (dict): filled data, corresponding to the form obtained in getFieldsUI |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
354 @param profile_key (unicode): %(doc_profile_key)s |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
355 @return: a deferred XMLUI string representation |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
356 """ |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
357 d = self.searchRequest(jid.JID(to_jid_s), search_data, profile_key) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
358 d.addCallback(lambda form: xml_tools.dataFormResult2XMLUI(form).toXml()) |
799
7f2082b192ed
plugin XEP-0055, Primitivus: Directory search dialogs are now entirely done in plugin XEP-0055, specific code in frontend is not needed anymore
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
359 return d |
7f2082b192ed
plugin XEP-0055, Primitivus: Directory search dialogs are now entirely done in plugin XEP-0055, specific code in frontend is not needed anymore
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
360 |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
361 def searchRequest(self, to_jid, search_data, profile_key): |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
362 """Actually do a search, according to filled data. |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
363 |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
364 @param to_jid (jid.JID): XEP-0055 compliant search entity |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
365 @param search_data (dict): filled data, corresponding to the form obtained in getFieldsUI |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
366 @param profile_key (unicode): %(doc_profile_key)s |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
367 @return: a deferred domish.Element |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
368 """ |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
369 if FIELD_SINGLE in search_data: |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
370 value = search_data[FIELD_SINGLE] |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
371 d = self.getFieldsUI(to_jid, profile_key) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
372 d.addCallback(lambda elt: self.searchRequestMulti(to_jid, value, elt, profile_key)) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
373 return d |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
374 |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
375 client = self.host.getClient(profile_key) |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
376 search_request = IQ(client.xmlstream, 'set') |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
377 search_request["from"] = client.jid.full() |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
378 search_request["to"] = to_jid.full() |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
379 query_elt = search_request.addElement('query', NS_SEARCH) |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
380 x_form = data_form.Form('submit', formNamespace=NS_SEARCH) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
381 x_form.makeFields(search_data) |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
382 query_elt.addChild(x_form.toElement()) |
1219
16484ebb695b
plugin XEP-0059: first draft, pubsub and jabber search do not exploit it yet
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
383 # TODO: XEP-0059 could be used here (with the needed new method attributes) |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
384 d = search_request.send(to_jid.full()) |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
385 d.addCallbacks(self._searchOk, self._searchErr) |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
386 return d |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
387 |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
388 def searchRequestMulti(self, to_jid, value, form_elt, profile_key): |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
389 """Search for a value simultaneously in all fields, returns the results compilation. |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
390 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
391 @param to_jid (jid.JID): XEP-0055 compliant search entity |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
392 @param value (unicode): value to search |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
393 @param form_elt (domish.Element): form element listing the fields |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
394 @param profile_key (unicode): %(doc_profile_key)s |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
395 @return: a deferred domish.Element |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
396 """ |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
397 form = data_form.Form.fromElement(form_elt) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
398 d_list = [] |
1506
8405d622bde0
plugin XEP-0055: remove a "debug" break that has been forgotten here
souliane <souliane@mailoo.org>
parents:
1498
diff
changeset
|
399 |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
400 for field in [field.var for field in form.fieldList if field.var]: |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
401 d_list.append(self.searchRequest(to_jid, {field: value}, profile_key)) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
402 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
403 def cb(result): # return the results compiled in one domish element |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
404 result_elt = None |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
405 for success, form_elt in result: |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
406 if not success: |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
407 continue |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
408 if result_elt is None: # the result element is built over the first answer |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
409 result_elt = form_elt |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
410 continue |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
411 for item_elt in form_elt.elements('jabber:x:data', 'item'): |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
412 result_elt.addChild(item_elt) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
413 if result_elt is None: |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
414 raise defer.failure.Failure(DataError(_("The search could not be performed"))) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
415 return result_elt |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
416 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
417 return defer.DeferredList(d_list).addCallback(cb) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
418 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
419 def _searchOk(self, answer): |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
420 """Callback for self.searchRequest. |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
421 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
422 @param answer (domish.Element): search query element |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
423 @return: domish.Element |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
424 """ |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
425 try: |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
426 query_elts = answer.elements('jabber:iq:search', 'query').next() |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
427 except StopIteration: |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
867
diff
changeset
|
428 log.info(_("No query element found")) |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
429 raise DataError # FIXME: StanzaError is probably more appropriate, check the RFC |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
430 try: |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
431 form_elt = query_elts.elements(data_form.NS_X_DATA, 'x').next() |
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
432 except StopIteration: |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
867
diff
changeset
|
433 log.info(_("No data form found")) |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
434 raise NotImplementedError("Only search through data form is implemented so far") |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
435 return form_elt |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
436 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
437 def _searchErr(self, failure): |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
438 """Errback to self.searchRequest. |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
439 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
440 @param failure (defer.failure.Failure): twisted failure |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
441 @raise: the unchanged defer.failure.Failure |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
442 """ |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
443 log.info(_("Search request failure: %s") % unicode(failure.getErrorMessage())) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
444 raise failure |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
445 |
631
694f118d0cd5
plugin XEP-0055: implementation of Jabber Search
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
446 |
1810
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
1766
diff
changeset
|
447 class XEP_0055_handler(XMPPHandler): |
1498
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
448 implements(iwokkel.IDisco) |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
449 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
450 def __init__(self, plugin_parent, profile): |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
451 self.plugin_parent = plugin_parent |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
452 self.host = plugin_parent.host |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
453 self.profile = profile |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
454 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
455 def getDiscoInfo(self, requestor, target, nodeIdentifier=''): |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
456 return [disco.DiscoFeature(NS_SEARCH)] |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
457 |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
458 def getDiscoItems(self, requestor, target, nodeIdentifier=''): |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
459 return [] |
e3330ce65285
plugin XEP-0055: add "simple" and "advanced" modes to Jabber search:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
460 |