Mercurial > libervia-backend
annotate sat_frontends/jp/cmd_uri.py @ 2807:0b7ce5daee9b
plugin XEP-0277: blog items data are now entirely serialised before going to bridge:
So far, and for historical reasons, blog items data where serialised using a unicode: unicode dict, which was causing trouble for many types of values (timestamps, booleans, lists).
This patch changes it by serialising the whole items before going to bridge, and deserialising it when going back. This way, complex data can be used easily in items.
This impact psEvent and serItemsData* methods which are renamed transItemsData* because there are not always serialising anymore (a new argument "serialise" allows to specify it).
When editing a blog post in jp, metadata are now more easy to manipulate, specially lists like tags.
author | Goffi <goffi@goffi.org> |
---|---|
date | Sat, 23 Feb 2019 18:59:00 +0100 |
parents | 003b8b4b56a7 |
children | ab2696e34d29 |
rev | line source |
---|---|
2240
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
1 #!/usr/bin/env python2 |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
3 |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
4 # jp: a SàT command line tool |
2771 | 5 # Copyright (C) 2009-2019 Jérôme Poisson (goffi@goffi.org) |
2240
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
6 |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
7 # This program is free software: you can redistribute it and/or modify |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
8 # it under the terms of the GNU Affero General Public License as published by |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
9 # the Free Software Foundation, either version 3 of the License, or |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
10 # (at your option) any later version. |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
11 |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
12 # This program is distributed in the hope that it will be useful, |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
15 # GNU Affero General Public License for more details. |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
16 |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
17 # You should have received a copy of the GNU Affero General Public License |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
19 |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
20 |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
21 import base |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
22 from sat.core.i18n import _ |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
23 from sat_frontends.jp.constants import Const as C |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
24 from sat.tools.common import uri |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
25 |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
26 __commands__ = ["Uri"] |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
27 |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
28 |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
29 class Parse(base.CommandBase): |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
30 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
31 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
32 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
33 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
34 "parse", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
35 use_profile=False, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
36 use_output=C.OUTPUT_DICT, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
37 help=_(u"parse URI"), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
38 ) |
2240
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
39 |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
40 def add_parser_options(self): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
41 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
42 "uri", type=base.unicode_decoder, help=_(u"XMPP URI to parse") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
43 ) |
2240
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
44 |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
45 def start(self): |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
46 self.output(uri.parseXMPPUri(self.args.uri)) |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
47 |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
48 |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
49 class Build(base.CommandBase): |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
50 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
51 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
52 self, host, "build", use_profile=False, help=_(u"build URI") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
53 ) |
2240
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
54 |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
55 def add_parser_options(self): |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
56 self.parser.add_argument("type", type=base.unicode_decoder, help=_(u"URI type")) |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
57 self.parser.add_argument("path", type=base.unicode_decoder, help=_(u"URI path")) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
58 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
59 "-f", |
2240
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
60 "--field", |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
61 type=base.unicode_decoder, |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
62 action="append", |
2240
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
63 nargs=2, |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
64 dest="fields", |
2240
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
65 metavar=(u"KEY", u"VALUE"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
66 help=_(u"URI fields"), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
67 ) |
2240
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
68 |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
69 def start(self): |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
70 fields = dict(self.args.fields) if self.args.fields else {} |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
71 self.disp(uri.buildXMPPUri(self.args.type, path=self.args.path, **fields)) |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
72 |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
73 |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
74 class Uri(base.CommandBase): |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
75 subcommands = (Parse, Build) |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
76 |
4b66f070cfbb
jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
77 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
78 super(Uri, self).__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
79 host, "uri", use_profile=False, help=_("XMPP URI parsing/generation") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
80 ) |