Mercurial > libervia-backend
annotate sat/plugins/plugin_misc_xmllog.py @ 2676:da8f3ac86845
template: overriden get_template to always have full template name:
Environment.get_template has been overriden to have always full template name (i.e. template with (site/theme) prefix or absolute template).
This is needed to correctly handle cache, so "base/base.html" is converted to "(some_site/some_theme)base/base.html" and won't conflict with an other theme "base/base.html".
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 18 Sep 2018 20:59:34 +0200 |
parents | 56f94936df1e |
children | 1ecceac3df96 |
rev | line source |
---|---|
1934
2daf7b4c6756
use of /usr/bin/env instead of /usr/bin/python in shebang
Goffi <goffi@goffi.org>
parents:
1706
diff
changeset
|
1 #!/usr/bin/env python2 |
277 | 2 # -*- coding: utf-8 -*- |
3 | |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
4 # SàT plugin for managing raw XML log |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
5 # Copyright (C) 2011 Jérôme Poisson (goffi@goffi.org) |
277 | 6 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
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:
594
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:
594
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:
594
diff
changeset
|
10 # (at your option) any later version. |
277 | 11 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
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:
594
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:
594
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:
594
diff
changeset
|
15 # GNU Affero General Public License for more details. |
277 | 16 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
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:
594
diff
changeset
|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
277 | 19 |
771 | 20 from sat.core.i18n import _ |
2145
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
21 from sat.core.constants import Const as C |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
22 from sat.core.log import getLogger |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
23 |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
24 log = getLogger(__name__) |
277 | 25 from twisted.words.xish import domish |
2440
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
26 from twisted.words.xish import xmlstream |
277 | 27 |
28 PLUGIN_INFO = { | |
2145
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
29 C.PI_NAME: "Raw XML log Plugin", |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
30 C.PI_IMPORT_NAME: "XmlLog", |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
31 C.PI_TYPE: "Misc", |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
32 C.PI_PROTOCOLS: [], |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
33 C.PI_DEPENDENCIES: [], |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
34 C.PI_MAIN: "XmlLog", |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
35 C.PI_HANDLER: "no", |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
36 C.PI_DESCRIPTION: _(u"""Send raw XML logs to bridge"""), |
277 | 37 } |
38 | |
2440
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
39 host = None |
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
40 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
41 |
2440
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
42 def send(self, obj): |
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
43 global host |
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
44 if isinstance(obj, basestring): |
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
45 log = unicode(obj) |
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
46 elif isinstance(obj, domish.Element): |
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
47 log = obj.toXml() |
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
48 else: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
49 log.error(_(u"INTERNAL ERROR: Unmanaged XML type")) |
2440
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
50 host.bridge.xmlLog("OUT", log, self._profile) |
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
51 return self._original_send(obj) |
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
52 |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
53 |
2440
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
54 def onElement(self, element): |
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
55 global host |
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
56 host.bridge.xmlLog("IN", element.toXml(), self._profile) |
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
57 return self._original_onElement(element) |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
538
diff
changeset
|
58 |
277 | 59 |
588
beaf6bec2fcd
Remove every old-style class.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
587
diff
changeset
|
60 class XmlLog(object): |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
538
diff
changeset
|
61 |
277 | 62 params = """ |
63 <params> | |
64 <general> | |
65 <category name="Debug"> | |
66 <param name="Xml log" label="%(label_xmllog)s" value="false" type="bool" /> | |
67 </category> | |
68 </general> | |
69 </params> | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
70 """ % { |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
71 "label_xmllog": _("Activate XML log") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
72 } |
277 | 73 |
2440
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
74 def __init__(self, host_): |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
75 log.info(_("Plugin XML Log initialization")) |
2440
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
76 global host |
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
77 host = host_ |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
538
diff
changeset
|
78 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
79 # parameters |
662
4f747d7fde8c
core: importParams renamed to updateParams: it now updates the parameter instead of appending children if it find an existing one.
Goffi <goffi@goffi.org>
parents:
609
diff
changeset
|
80 host.memory.updateParams(self.params) |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
538
diff
changeset
|
81 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
82 # bridge |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
83 host.bridge.addSignal( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
84 "xmlLog", ".plugin", signature="sss" |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
85 ) # args: direction("IN" or "OUT"), xml_data, profile |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
538
diff
changeset
|
86 |
2440
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
87 self.do_log = host.memory.getParamA("Xml log", "Debug") |
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
88 if self.do_log: |
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
89 XmlStream = xmlstream.XmlStream |
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
90 XmlStream._original_send = XmlStream.send |
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
91 XmlStream._original_onElement = XmlStream.onElement |
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
92 XmlStream.send = send |
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
93 XmlStream.onElement = onElement |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
94 XmlStream._profile = "" |
2440
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
95 host.trigger.add("XML Initialized", self.setProfile) |
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
96 log.info(_(u"XML log activated")) |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
538
diff
changeset
|
97 |
2440
51d346e283fd
plugin XML Log: Monkey patch is done on the whole XmlStream class, making it available as soon as the stream start + long received message are sent once fully parsed (not cut anymore)
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
98 def setProfile(self, xmlstream, profile): |
277 | 99 xmlstream._profile = profile |
100 return True |