Mercurial > libervia-backend
annotate src/plugins/plugin_tmp_directory_subscription.py @ 1955:633b5c21aefd
backend, frontend: messages refactoring (huge commit, not finished):
/!\ database schema has been modified, do a backup before updating
message have been refactored, here are the main changes:
- languages are now handled
- all messages have an uid (internal to SàT)
- message updating is anticipated
- subject is now first class
- new naming scheme is used newMessage => messageNew, getHistory => historyGet, sendMessage => messageSend
- minimal compatibility refactoring in quick_frontend/Primitivus, better refactoring should follow
- threads handling
- delayed messages are saved into history
- info messages may also be saved in history (e.g. to keep track of people joining/leaving a room)
- duplicate messages should be avoided
- historyGet return messages in right order, no need to sort again
- plugins have been updated to follow new features, some of them need to be reworked (e.g. OTR)
- XEP-0203 (Delayed Delivery) is now fully handled in core, the plugin just handle disco and creation of a delay element
- /!\ jp and Libervia are currently broken, as some features of Primitivus
It has been put in one huge commit to avoid breaking messaging between changes.
This is the main part of message refactoring, other commits will follow to take profit of the new features/behaviour.
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 24 May 2016 22:11:04 +0200 |
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 |
1810
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
3 |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
4 # SAT plugin for directory subscription |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
5 # Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Jérôme Poisson (goffi@goffi.org) |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
6 # Copyright (C) 2015, 2016 Adrien Cossa (souliane@mailoo.org) |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
7 |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
8 # This program is free software: you can redistribute it and/or modify |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
9 # it under the terms of the GNU Affero General Public License as published by |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
10 # the Free Software Foundation, either version 3 of the License, or |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
11 # (at your option) any later version. |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
12 |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
13 # This program is distributed in the hope that it will be useful, |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
16 # GNU Affero General Public License for more details. |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
17 |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
18 # You should have received a copy of the GNU Affero General Public License |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
19 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
20 |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
21 from sat.core.i18n import _, D_ |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
22 from sat.core.log import getLogger |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
23 log = getLogger(__name__) |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
24 |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
25 |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
26 PLUGIN_INFO = { |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
27 "name": "Directory subscription plugin", |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
28 "import_name": "DIRECTORY-SUBSCRIPTION", |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
29 "type": "TMP", |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
30 "protocols": [], |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
31 "dependencies": ["XEP-0050", "XEP-0055"], |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
32 "recommendations": [], |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
33 "main": "DirectorySubscription", |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
34 "handler": "no", |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
35 "description": _("""Implementation of directory subscription""") |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
36 } |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
37 |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
38 |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
39 NS_COMMANDS = "http://jabber.org/protocol/commands" |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
40 CMD_UPDATE_SUBSCRIBTION = "update" |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
41 |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
42 |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
43 class DirectorySubscription(object): |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
44 |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
45 def __init__(self, host): |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
46 log.info(_("Directory subscription plugin initialization")) |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
47 self.host = host |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
48 host.importMenu((D_("Service"), D_("Directory subscription")), self.subscribe, security_limit=1, help_string=D_("User directory subscription")) |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
49 |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
50 def subscribe(self, raw_data, profile): |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
51 """Request available commands on the jabber search service associated to profile's host. |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
52 |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
53 @param raw_data (dict): data received from the frontend |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
54 @param profile (unicode): %(doc_profile)s |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
55 @return: a deferred dict{unicode: unicode} |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
56 """ |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
57 d = self.host.plugins["XEP-0055"]._getHostServices(profile) |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
58 |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
59 def got_services(services): |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
60 service_jid = services[0] |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
61 session_id, session_data = self.host.plugins["XEP-0050"].requesting.newSession(profile=profile) |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
62 session_data["jid"] = service_jid |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
63 session_data["node"] = CMD_UPDATE_SUBSCRIBTION |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
64 data = {"session_id": session_id} |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
65 return self.host.plugins["XEP-0050"]._requestingEntity(data, profile) |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
66 |
25c3569abb71
plugin XEP-0055, tmp_directory_subscription: move directory subscription to a new temporary plugin
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
67 return d.addCallback(got_services) |