annotate src/tools/common/data_objects.py @ 2474:e04c874ace79

core: 'x-data' namespace is now registered
author Goffi <goffi@goffi.org>
date Fri, 19 Jan 2018 17:39:38 +0100
parents adcc35625e17
children 6607bb29ab7b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2160
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
1 #!/usr/bin/env python2
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
3
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
4 # SAT: a jabber client
2414
8b37a62336c3 misc: date update (yes it's a bit late :p )
Goffi <goffi@goffi.org>
parents: 2383
diff changeset
5 # Copyright (C) 2009-2017 Jérôme Poisson (goffi@goffi.org)
2160
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
6
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # This program is free software: you can redistribute it and/or modify
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # it under the terms of the GNU Affero General Public License as published by
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
10 # (at your option) any later version.
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
11
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # This program is distributed in the hope that it will be useful,
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
15 # GNU Affero General Public License for more details.
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
16
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
17 # You should have received a copy of the GNU Affero General Public License
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
19
2300
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2264
diff changeset
20 """Objects handling bridge data, with jinja2 safe markup handling"""
2160
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
21
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
22 from sat.tools.common import data_format
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
23 try:
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
24 from jinja2 import Markup as safe
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
25 except ImportError:
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
26 safe = unicode
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
27
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
28
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
29 class BlogItem(object):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
30
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
31 def __init__(self, mb_data):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
32 self.mb_data = mb_data
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
33 self._tags = None
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
34 self._groups = None
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
35 self._comments = None
2228
cf6c539672c7 tools (common/data_objects): comments items can now be chained to their parent
Goffi <goffi@goffi.org>
parents: 2160
diff changeset
36 self._comments_items_list = None
2160
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
37
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
38 @property
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
39 def id(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
40 return self.mb_data.get(u'id')
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
41
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
42 @property
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
43 def atom_id(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
44 return self.mb_data.get(u'atom_id')
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
45
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
46 @property
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
47 def published(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
48 return self.mb_data.get(u'published')
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
49
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
50 @property
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
51 def updated(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
52 return self.mb_data.get(u'updated')
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
53
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
54 @property
2264
a8eaaac4d80f plugin XEP-0277, tools/common/data_objects: language handling
Goffi <goffi@goffi.org>
parents: 2257
diff changeset
55 def language(self):
a8eaaac4d80f plugin XEP-0277, tools/common/data_objects: language handling
Goffi <goffi@goffi.org>
parents: 2257
diff changeset
56 return self.mb_data.get(u'language')
a8eaaac4d80f plugin XEP-0277, tools/common/data_objects: language handling
Goffi <goffi@goffi.org>
parents: 2257
diff changeset
57
a8eaaac4d80f plugin XEP-0277, tools/common/data_objects: language handling
Goffi <goffi@goffi.org>
parents: 2257
diff changeset
58 @property
2160
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
59 def author(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
60 return self.mb_data.get(u'author')
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
61
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
62 @property
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
63 def author_jid(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
64 return self.mb_data.get(u'author_jid')
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
65
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
66 @property
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
67 def author_jid_verified(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
68 return self.mb_data.get(u'author_jid_verified')
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
69
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
70 @property
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
71 def author_email(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
72 return self.mb_data.get(u'author_email')
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
73
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
74 @property
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
75 def tags(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
76 if self._tags is None:
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
77 self._tags = data_format.dict2iter('tag', self.mb_data)
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
78 return self._tags
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
79
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
80 @property
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
81 def groups(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
82 if self._groups is None:
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
83 self._groups = data_format.dict2iter('group', self.mb_data)
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
84 return self._groups
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
85
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
86 @property
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
87 def title(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
88 return self.mb_data.get(u'title')
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
89
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
90 @property
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
91 def title_xhtml(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
92 try:
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
93 return safe(self.mb_data[u'title_xhtml'])
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
94 except KeyError:
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
95 return None
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
96
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
97 @property
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
98 def content(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
99 return self.mb_data.get(u'content')
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
100
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
101 @property
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
102 def content_xhtml(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
103 try:
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
104 return safe(self.mb_data[u'content_xhtml'])
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
105 except KeyError:
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
106 return None
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
107
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
108 @property
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
109 def comments(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
110 if self._comments is None:
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
111 self._comments = data_format.dict2iterdict(u'comments', self.mb_data, (u'node', u'service'))
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
112 return self._comments
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
113
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
114 @property
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
115 def comments_service(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
116 return self.mb_data.get(u'comments_service')
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
117
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
118 @property
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
119 def comments_node(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
120 return self.mb_data.get(u'comments_node')
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
121
2228
cf6c539672c7 tools (common/data_objects): comments items can now be chained to their parent
Goffi <goffi@goffi.org>
parents: 2160
diff changeset
122 @property
cf6c539672c7 tools (common/data_objects): comments items can now be chained to their parent
Goffi <goffi@goffi.org>
parents: 2160
diff changeset
123 def comments_items_list(self):
cf6c539672c7 tools (common/data_objects): comments items can now be chained to their parent
Goffi <goffi@goffi.org>
parents: 2160
diff changeset
124 return [] if self._comments_items_list is None else self._comments_items_list
cf6c539672c7 tools (common/data_objects): comments items can now be chained to their parent
Goffi <goffi@goffi.org>
parents: 2160
diff changeset
125
cf6c539672c7 tools (common/data_objects): comments items can now be chained to their parent
Goffi <goffi@goffi.org>
parents: 2160
diff changeset
126 def appendCommentsItems(self, items):
cf6c539672c7 tools (common/data_objects): comments items can now be chained to their parent
Goffi <goffi@goffi.org>
parents: 2160
diff changeset
127 """append comments items to self.comments_items"""
cf6c539672c7 tools (common/data_objects): comments items can now be chained to their parent
Goffi <goffi@goffi.org>
parents: 2160
diff changeset
128 if self._comments_items_list is None:
cf6c539672c7 tools (common/data_objects): comments items can now be chained to their parent
Goffi <goffi@goffi.org>
parents: 2160
diff changeset
129 self._comments_items_list = []
cf6c539672c7 tools (common/data_objects): comments items can now be chained to their parent
Goffi <goffi@goffi.org>
parents: 2160
diff changeset
130 self._comments_items_list.append(items)
cf6c539672c7 tools (common/data_objects): comments items can now be chained to their parent
Goffi <goffi@goffi.org>
parents: 2160
diff changeset
131
2160
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
132
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
133 class BlogItems(object):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
134
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
135 def __init__(self, mb_data):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
136 self.items = [BlogItem(i) for i in mb_data[0]]
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
137 self.metadata = mb_data[1]
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
138
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
139 @property
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
140 def service(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
141 return self.metadata[u'service']
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
142
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
143 @property
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
144 def node(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
145 return self.metadata[u'node']
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
146
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
147 @property
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
148 def uri(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
149 return self.metadata[u'uri']
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
150
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
151 def __len__(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
152 return self.items.__len__()
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
153
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
154 def __missing__(self, key):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
155 return self.items.__missing__(key)
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
156
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
157 def __getitem__(self, key):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
158 return self.items.__getitem__(key)
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
159
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
160 def __iter__(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
161 return self.items.__iter__()
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
162
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
163 def __reversed__(self):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
164 return self.items.__reversed__()
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
165
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
166 def __contains__(self, item):
e67e8cd24141 core (tools/common): data objects first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
167 return self.items.__contains__(item)
2257
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
168
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
169
2464
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
170 class Message(object):
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
171
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
172 def __init__(self, msg_data):
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
173 self._uid = msg_data[0]
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
174 self._timestamp = msg_data[1]
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
175 self._from_jid = msg_data[2]
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
176 self._to_jid = msg_data[3]
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
177 self._message_data = msg_data[4]
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
178 self._subject_data = msg_data[5]
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
179 self._type = msg_data[6]
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
180 self._extra = msg_data[7]
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
181 self._html = dict(data_format.getSubDict('xhtml', self._extra))
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
182
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
183 @property
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
184 def id(self):
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
185 return self._uid
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
186
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
187 @property
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
188 def timestamp(self):
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
189 return self._timestamp
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
190
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
191 @property
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
192 def from_(self):
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
193 return self._from_jid
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
194
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
195 @property
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
196 def text(self):
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
197 try:
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
198 return self._message_data['']
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
199 except KeyError:
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
200 return next(self._message_data.itervalues())
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
201
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
202 @property
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
203 def subject(self):
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
204 try:
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
205 return self._subject_data['']
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
206 except KeyError:
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
207 return next(self._subject_data.itervalues())
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
208
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
209 @property
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
210 def type(self):
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
211 return self._type
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
212
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
213 @property
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
214 def thread(self):
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
215 return self._extra.get('thread')
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
216
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
217 @property
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
218 def thread_parent(self):
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
219 return self._extra.get('thread_parent')
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
220
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
221 @property
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
222 def received(self):
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
223 return self._extra.get('received_timestamp', self._timestamp)
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
224
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
225 @property
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
226 def delay_sender(self):
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
227 return self._extra.get('delay_sender')
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
228
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
229 @property
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
230 def info_type(self):
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
231 return self._extra.get('info_type')
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
232
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
233 @property
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
234 def html(self):
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
235 if not self._html:
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
236 return None
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
237 try:
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
238 return safe(self._html[''])
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
239 except KeyError:
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
240 return safe(next(self._html.itervalues()))
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
241
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
242
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
243 class Messages(object):
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
244
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
245 def __init__(self, msgs_data):
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
246 self.messages = [Message(m) for m in msgs_data]
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
247
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
248 def __len__(self):
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
249 return self.messages.__len__()
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
250
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
251 def __missing__(self, key):
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
252 return self.messages.__missing__(key)
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
253
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
254 def __getitem__(self, key):
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
255 return self.messages.__getitem__(key)
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
256
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
257 def __iter__(self):
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
258 return self.messages.__iter__()
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
259
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
260 def __reversed__(self):
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
261 return self.messages.__reversed__()
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
262
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
263 def __contains__(self, item):
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
264 return self.messages.__contains__(item)
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
265
2469
adcc35625e17 tools (common/data_objects): added Room class
Goffi <goffi@goffi.org>
parents: 2464
diff changeset
266 class Room(object):
adcc35625e17 tools (common/data_objects): added Room class
Goffi <goffi@goffi.org>
parents: 2464
diff changeset
267
adcc35625e17 tools (common/data_objects): added Room class
Goffi <goffi@goffi.org>
parents: 2464
diff changeset
268 def __init__(self, jid, name=None, url=None):
adcc35625e17 tools (common/data_objects): added Room class
Goffi <goffi@goffi.org>
parents: 2464
diff changeset
269 self.jid = jid
adcc35625e17 tools (common/data_objects): added Room class
Goffi <goffi@goffi.org>
parents: 2464
diff changeset
270 self.name = name or jid
adcc35625e17 tools (common/data_objects): added Room class
Goffi <goffi@goffi.org>
parents: 2464
diff changeset
271 if url is not None:
adcc35625e17 tools (common/data_objects): added Room class
Goffi <goffi@goffi.org>
parents: 2464
diff changeset
272 self.url = url
adcc35625e17 tools (common/data_objects): added Room class
Goffi <goffi@goffi.org>
parents: 2464
diff changeset
273
2464
8788c217a49e tools (common/data_objects): added classes for messages
Goffi <goffi@goffi.org>
parents: 2414
diff changeset
274
2257
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
275 class Identity(object):
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
276
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
277 def __init__(self, jid_str, data=None):
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
278 self.jid_str = jid_str
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
279 self.data = data if data is not None else {}
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
280
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
281 @property
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
282 def nick(self):
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
283 return self.data.get(u'nick')
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
284
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
285
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
286 class Identities(object):
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
287
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
288 def __init__(self):
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
289 self.identities = {}
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
290
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
291 def __getitem__(self, jid_str):
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
292 try:
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
293 return self.identities[jid_str]
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
294 except KeyError:
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
295 return None
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
296
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
297 def __setitem__(self, jid_str, data):
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
298 self.identities[jid_str] = Identity(jid_str, data)
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
299
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
300 def __contains__(self, jid_str):
0ffa8ba0857c core (tools/common/data_objects): added classes to handle Identities
Goffi <goffi@goffi.org>
parents: 2228
diff changeset
301 return jid_str in self.identities
2383
a37457da2bb7 tools (common/data_objects): new OnClick class
Goffi <goffi@goffi.org>
parents: 2300
diff changeset
302
a37457da2bb7 tools (common/data_objects): new OnClick class
Goffi <goffi@goffi.org>
parents: 2300
diff changeset
303
a37457da2bb7 tools (common/data_objects): new OnClick class
Goffi <goffi@goffi.org>
parents: 2300
diff changeset
304 class OnClick(object):
a37457da2bb7 tools (common/data_objects): new OnClick class
Goffi <goffi@goffi.org>
parents: 2300
diff changeset
305 """Class to handle clickable elements targets"""
a37457da2bb7 tools (common/data_objects): new OnClick class
Goffi <goffi@goffi.org>
parents: 2300
diff changeset
306
a37457da2bb7 tools (common/data_objects): new OnClick class
Goffi <goffi@goffi.org>
parents: 2300
diff changeset
307 def __init__(self, url=None):
a37457da2bb7 tools (common/data_objects): new OnClick class
Goffi <goffi@goffi.org>
parents: 2300
diff changeset
308 self.url = url
a37457da2bb7 tools (common/data_objects): new OnClick class
Goffi <goffi@goffi.org>
parents: 2300
diff changeset
309
a37457da2bb7 tools (common/data_objects): new OnClick class
Goffi <goffi@goffi.org>
parents: 2300
diff changeset
310 def formatUrl(self, item):
a37457da2bb7 tools (common/data_objects): new OnClick class
Goffi <goffi@goffi.org>
parents: 2300
diff changeset
311 """Use an item to format URL
a37457da2bb7 tools (common/data_objects): new OnClick class
Goffi <goffi@goffi.org>
parents: 2300
diff changeset
312
a37457da2bb7 tools (common/data_objects): new OnClick class
Goffi <goffi@goffi.org>
parents: 2300
diff changeset
313 item will be formatted using "item=item" in format()
a37457da2bb7 tools (common/data_objects): new OnClick class
Goffi <goffi@goffi.org>
parents: 2300
diff changeset
314 """
a37457da2bb7 tools (common/data_objects): new OnClick class
Goffi <goffi@goffi.org>
parents: 2300
diff changeset
315 return self.url.format(item=item)