annotate sat/tools/async_trigger.py @ 2738:eb58f26ed236

plugin XEP-0384: update to last python-omemo + trust management: - Plugin has been updated to use last version of python-omemo (10.0.3). - A temporary method remove all storage data if they are found, this method must be removed before 0.7 release (only people using dev version should have old omemo data in there storage). - Trust management is not implemented, using new encryptionTrustUIGet method (an UI is also displayed when trust handling is needed before sending a message). - omemo.DefaultOTPKPolicy is now used, instead of previous test policy of always deleting. OMEMO e2e encryption is now functional for one2one conversations, including fingerprint management.
author Goffi <goffi@goffi.org>
date Wed, 02 Jan 2019 18:50:28 +0100
parents 3a8e7ec4648a
children 003b8b4b56a7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2645
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
1 #!/usr/bin/env python2
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
3
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
4 # SAT: a jabber client
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
5 # Copyright (C) 2009-2018 Jérôme Poisson (goffi@goffi.org)
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
6
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # This program is free software: you can redistribute it and/or modify
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # it under the terms of the GNU Affero General Public License as published by
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
10 # (at your option) any later version.
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
11
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # This program is distributed in the hope that it will be useful,
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
15 # GNU Affero General Public License for more details.
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
16
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
17 # You should have received a copy of the GNU Affero General Public License
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
19
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
20 """Misc usefull classes"""
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
21
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
22 from sat.tools import trigger as sync_trigger
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
23 from twisted.internet import defer
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
24
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
25 class TriggerManager(sync_trigger.TriggerManager):
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
26 """This is a TriggerManager with an new asyncPoint method"""
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
27
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
28 @defer.inlineCallbacks
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
29 def asyncPoint(self, point_name, *args, **kwargs):
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
30 """This put a trigger point with potentially async Deferred
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
31
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
32 All the triggers for that point will be run
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
33 @param point_name: name of the trigger point
2650
3a8e7ec4648a tools (trigger, async_trigger): added no_cancel argument to point and asyncPoint when a trigger must not be cancellable
Goffi <goffi@goffi.org>
parents: 2645
diff changeset
34 @param *args: args to transmit to trigger
3a8e7ec4648a tools (trigger, async_trigger): added no_cancel argument to point and asyncPoint when a trigger must not be cancellable
Goffi <goffi@goffi.org>
parents: 2645
diff changeset
35 @param *kwargs: kwargs to transmit to trigger
3a8e7ec4648a tools (trigger, async_trigger): added no_cancel argument to point and asyncPoint when a trigger must not be cancellable
Goffi <goffi@goffi.org>
parents: 2645
diff changeset
36 if "triggers_no_cancel" is present, it will be popped out
3a8e7ec4648a tools (trigger, async_trigger): added no_cancel argument to point and asyncPoint when a trigger must not be cancellable
Goffi <goffi@goffi.org>
parents: 2645
diff changeset
37 when set to True, this argument don't let triggers stop
3a8e7ec4648a tools (trigger, async_trigger): added no_cancel argument to point and asyncPoint when a trigger must not be cancellable
Goffi <goffi@goffi.org>
parents: 2645
diff changeset
38 the workflow
2645
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
39 @return D(bool): True if the action must be continued, False else
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
40 """
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
41 if point_name not in self.__triggers:
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
42 defer.returnValue(True)
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
43
2650
3a8e7ec4648a tools (trigger, async_trigger): added no_cancel argument to point and asyncPoint when a trigger must not be cancellable
Goffi <goffi@goffi.org>
parents: 2645
diff changeset
44 can_cancel = not kwargs.pop('triggers_no_cancel', False)
3a8e7ec4648a tools (trigger, async_trigger): added no_cancel argument to point and asyncPoint when a trigger must not be cancellable
Goffi <goffi@goffi.org>
parents: 2645
diff changeset
45
2645
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
46 for priority, trigger in self.__triggers[point_name]:
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
47 try:
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
48 cont = yield trigger(*args, **kwargs)
2650
3a8e7ec4648a tools (trigger, async_trigger): added no_cancel argument to point and asyncPoint when a trigger must not be cancellable
Goffi <goffi@goffi.org>
parents: 2645
diff changeset
49 if can_cancel and not cont:
2645
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
50 defer.returnValue(False)
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
51 except sync_trigger.SkipOtherTriggers:
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
52 break
f2cf1daa42cb core: added async TriggerManager
Goffi <goffi@goffi.org>
parents:
diff changeset
53 defer.returnValue(True)