annotate twisted/plugins/sat_plugin.py @ 3252:54934ee3f69c

tools (image): added a guess_type method to guess media type: media type is guessed first from filename, then if it's not enough, the file is opened to try to guess type. If it still can be determined, None is returned.
author Goffi <goffi@goffi.org>
date Tue, 14 Apr 2020 20:29:37 +0200
parents 559a625a236b
children a3639d6d9643
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
1 #!/usr/bin/env python3
3137
559a625a236b fixed shebangs
Goffi <goffi@goffi.org>
parents: 3076
diff changeset
2
0
goffi@necton2
parents:
diff changeset
3
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 572
diff changeset
4 # SAT: a jabber client
2483
0046283a285d dates update
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
5 # Copyright (C) 2009-2018 Jérôme Poisson (goffi@goffi.org)
0
goffi@necton2
parents:
diff changeset
6
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 572
diff changeset
7 # This program is free software: you can redistribute it and/or modify
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 572
diff changeset
8 # it under the terms of the GNU Affero General Public License as published by
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 572
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 572
diff changeset
10 # (at your option) any later version.
0
goffi@necton2
parents:
diff changeset
11
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 572
diff changeset
12 # This program is distributed in the hope that it will be useful,
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 572
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 572
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 572
diff changeset
15 # GNU Affero General Public License for more details.
0
goffi@necton2
parents:
diff changeset
16
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 572
diff changeset
17 # You should have received a copy of the GNU Affero General Public License
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 572
diff changeset
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
0
goffi@necton2
parents:
diff changeset
19
1014
e40d9858cb83 core: if in debug mode and ipdb is present, use ipdb instead of pdb
Goffi <goffi@goffi.org>
parents: 1010
diff changeset
20
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2695
diff changeset
21 from zope.interface import implementer
1122
9ae01ccf89c1 core: sat bakcend is now a twisted plugin (no more .tac file)
Goffi <goffi@goffi.org>
parents: 1021
diff changeset
22 from twisted.python import usage
9ae01ccf89c1 core: sat bakcend is now a twisted plugin (no more .tac file)
Goffi <goffi@goffi.org>
parents: 1021
diff changeset
23 from twisted.plugin import IPlugin
9ae01ccf89c1 core: sat bakcend is now a twisted plugin (no more .tac file)
Goffi <goffi@goffi.org>
parents: 1021
diff changeset
24 from twisted.application.service import IServiceMaker
0
goffi@necton2
parents:
diff changeset
25
994
652c01ca69b1 core (log): configuration and environment variables are now checked for log level and colors:
Goffi <goffi@goffi.org>
parents: 991
diff changeset
26 # XXX: We need to configure logs before any log method is used, so here is the best place.
1010
73a0b7f94674 primitivus: use of new logging system:
Goffi <goffi@goffi.org>
parents: 994
diff changeset
27 from sat.core.constants import Const as C
1130
adea30ca0b51 core: twistd plugin refactoring:
Goffi <goffi@goffi.org>
parents: 1122
diff changeset
28 from sat.core.i18n import _
adea30ca0b51 core: twistd plugin refactoring:
Goffi <goffi@goffi.org>
parents: 1122
diff changeset
29
3076
2180b0f5c1cd core: use sat_tmp's twisted patches for Python 3.8 compatibility
Goffi <goffi@goffi.org>
parents: 3053
diff changeset
30 # patch for Python 3.8 compatibility
2180b0f5c1cd core: use sat_tmp's twisted patches for Python 3.8 compatibility
Goffi <goffi@goffi.org>
parents: 3053
diff changeset
31 from sat_tmp.twisted import install as install_twisted_patches
2180b0f5c1cd core: use sat_tmp's twisted patches for Python 3.8 compatibility
Goffi <goffi@goffi.org>
parents: 3053
diff changeset
32
2180b0f5c1cd core: use sat_tmp's twisted patches for Python 3.8 compatibility
Goffi <goffi@goffi.org>
parents: 3053
diff changeset
33
2180b0f5c1cd core: use sat_tmp's twisted patches for Python 3.8 compatibility
Goffi <goffi@goffi.org>
parents: 3053
diff changeset
34 install_twisted_patches()
2180b0f5c1cd core: use sat_tmp's twisted patches for Python 3.8 compatibility
Goffi <goffi@goffi.org>
parents: 3053
diff changeset
35
991
05e02f8b7eb4 core: logging refactoring, first step:
Goffi <goffi@goffi.org>
parents: 811
diff changeset
36
1130
adea30ca0b51 core: twistd plugin refactoring:
Goffi <goffi@goffi.org>
parents: 1122
diff changeset
37 def initialise(options):
adea30ca0b51 core: twistd plugin refactoring:
Goffi <goffi@goffi.org>
parents: 1122
diff changeset
38 """Method to initialise global modules"""
adea30ca0b51 core: twistd plugin refactoring:
Goffi <goffi@goffi.org>
parents: 1122
diff changeset
39 # XXX: We need to configure logs before any log method is used, so here is the best place.
adea30ca0b51 core: twistd plugin refactoring:
Goffi <goffi@goffi.org>
parents: 1122
diff changeset
40 from sat.core import log_config
adea30ca0b51 core: twistd plugin refactoring:
Goffi <goffi@goffi.org>
parents: 1122
diff changeset
41 log_config.satConfigure(C.LOG_BACKEND_TWISTED, C, backend_data=options)
1122
9ae01ccf89c1 core: sat bakcend is now a twisted plugin (no more .tac file)
Goffi <goffi@goffi.org>
parents: 1021
diff changeset
42
9ae01ccf89c1 core: sat bakcend is now a twisted plugin (no more .tac file)
Goffi <goffi@goffi.org>
parents: 1021
diff changeset
43
9ae01ccf89c1 core: sat bakcend is now a twisted plugin (no more .tac file)
Goffi <goffi@goffi.org>
parents: 1021
diff changeset
44 class Options(usage.Options):
9ae01ccf89c1 core: sat bakcend is now a twisted plugin (no more .tac file)
Goffi <goffi@goffi.org>
parents: 1021
diff changeset
45 optParameters = []
101
783e9d6980ec Couchsurfing plugin: first draft
Goffi <goffi@goffi.org>
parents: 90
diff changeset
46
994
652c01ca69b1 core (log): configuration and environment variables are now checked for log level and colors:
Goffi <goffi@goffi.org>
parents: 991
diff changeset
47
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2695
diff changeset
48 @implementer(IPlugin, IServiceMaker)
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2695
diff changeset
49 class SatMaker:
1122
9ae01ccf89c1 core: sat bakcend is now a twisted plugin (no more .tac file)
Goffi <goffi@goffi.org>
parents: 1021
diff changeset
50
9ae01ccf89c1 core: sat bakcend is now a twisted plugin (no more .tac file)
Goffi <goffi@goffi.org>
parents: 1021
diff changeset
51 tapname = C.APP_NAME_FILE
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2695
diff changeset
52 description = _("%s XMPP client backend") % C.APP_NAME_FULL
1122
9ae01ccf89c1 core: sat bakcend is now a twisted plugin (no more .tac file)
Goffi <goffi@goffi.org>
parents: 1021
diff changeset
53 options = Options
9ae01ccf89c1 core: sat bakcend is now a twisted plugin (no more .tac file)
Goffi <goffi@goffi.org>
parents: 1021
diff changeset
54
3053
8b36e5c3f28f misc: don't import memory in launch script:
Goffi <goffi@goffi.org>
parents: 3040
diff changeset
55 def setDebugger(self):
8b36e5c3f28f misc: don't import memory in launch script:
Goffi <goffi@goffi.org>
parents: 3040
diff changeset
56 from twisted.internet import defer
8b36e5c3f28f misc: don't import memory in launch script:
Goffi <goffi@goffi.org>
parents: 3040
diff changeset
57 if defer.Deferred.debug:
8b36e5c3f28f misc: don't import memory in launch script:
Goffi <goffi@goffi.org>
parents: 3040
diff changeset
58 # if we are in debug mode, we want to use ipdb instead of pdb
8b36e5c3f28f misc: don't import memory in launch script:
Goffi <goffi@goffi.org>
parents: 3040
diff changeset
59 try:
8b36e5c3f28f misc: don't import memory in launch script:
Goffi <goffi@goffi.org>
parents: 3040
diff changeset
60 import ipdb
8b36e5c3f28f misc: don't import memory in launch script:
Goffi <goffi@goffi.org>
parents: 3040
diff changeset
61 import pdb
8b36e5c3f28f misc: don't import memory in launch script:
Goffi <goffi@goffi.org>
parents: 3040
diff changeset
62 pdb.set_trace = ipdb.set_trace
8b36e5c3f28f misc: don't import memory in launch script:
Goffi <goffi@goffi.org>
parents: 3040
diff changeset
63 pdb.post_mortem = ipdb.post_mortem
8b36e5c3f28f misc: don't import memory in launch script:
Goffi <goffi@goffi.org>
parents: 3040
diff changeset
64 except ImportError:
8b36e5c3f28f misc: don't import memory in launch script:
Goffi <goffi@goffi.org>
parents: 3040
diff changeset
65 pass
8b36e5c3f28f misc: don't import memory in launch script:
Goffi <goffi@goffi.org>
parents: 3040
diff changeset
66
1122
9ae01ccf89c1 core: sat bakcend is now a twisted plugin (no more .tac file)
Goffi <goffi@goffi.org>
parents: 1021
diff changeset
67 def makeService(self, options):
2695
c5543fba97e8 core: fixed reactor crash by installing reactor only in makeService
Goffi <goffi@goffi.org>
parents: 2670
diff changeset
68 from twisted.internet import gireactor
c5543fba97e8 core: fixed reactor crash by installing reactor only in makeService
Goffi <goffi@goffi.org>
parents: 2670
diff changeset
69 gireactor.install()
3053
8b36e5c3f28f misc: don't import memory in launch script:
Goffi <goffi@goffi.org>
parents: 3040
diff changeset
70 self.setDebugger()
1130
adea30ca0b51 core: twistd plugin refactoring:
Goffi <goffi@goffi.org>
parents: 1122
diff changeset
71 # XXX: SAT must be imported after log configuration, because it write stuff to logs
adea30ca0b51 core: twistd plugin refactoring:
Goffi <goffi@goffi.org>
parents: 1122
diff changeset
72 initialise(options.parent)
adea30ca0b51 core: twistd plugin refactoring:
Goffi <goffi@goffi.org>
parents: 1122
diff changeset
73 from sat.core.sat_main import SAT
1122
9ae01ccf89c1 core: sat bakcend is now a twisted plugin (no more .tac file)
Goffi <goffi@goffi.org>
parents: 1021
diff changeset
74 return SAT()
9ae01ccf89c1 core: sat bakcend is now a twisted plugin (no more .tac file)
Goffi <goffi@goffi.org>
parents: 1021
diff changeset
75
9ae01ccf89c1 core: sat bakcend is now a twisted plugin (no more .tac file)
Goffi <goffi@goffi.org>
parents: 1021
diff changeset
76
9ae01ccf89c1 core: sat bakcend is now a twisted plugin (no more .tac file)
Goffi <goffi@goffi.org>
parents: 1021
diff changeset
77 serviceMaker = SatMaker()