| ... |
... |
@@ -149,34 +149,33 @@ class Roster(BaseModule): |
|
149
|
149
|
|
|
150
|
150
|
for item in query.getTags('item'):
|
|
151
|
151
|
jid = item.getAttr('jid')
|
|
152
|
|
- self._data[jid] = self._get_item_attrs(item, update=False)
|
|
|
152
|
+ self._data[jid] = self._get_item_attrs(item)
|
|
153
|
153
|
self._log.info('Item %s: %s', jid, self._data[jid])
|
|
154
|
154
|
return version
|
|
155
|
155
|
|
|
156
|
156
|
@staticmethod
|
|
157
|
|
- def _get_item_attrs(item, update=True):
|
|
|
157
|
+ def _get_item_attrs(item, update=False):
|
|
158
|
158
|
'''
|
|
159
|
159
|
update: True
|
|
160
|
|
- returns only the attrs that are present in the item
|
|
|
160
|
+ Omit avatar_sha from the returned attrs
|
|
161
|
161
|
|
|
162
|
162
|
update: False
|
|
163
|
|
- returns the attrs of the item but fills missing
|
|
164
|
|
- attrs with default values
|
|
|
163
|
+ Include the default value fro avatar_sha in the returned attrs
|
|
165
|
164
|
'''
|
|
166
|
165
|
|
|
167
|
166
|
default_attrs = {'name': None,
|
|
168
|
167
|
'ask': None,
|
|
169
|
168
|
'subscription': None,
|
|
170
|
|
- 'groups': [],
|
|
171
|
|
- 'avatar_sha': None}
|
|
|
169
|
+ 'groups': []}
|
|
|
170
|
+
|
|
|
171
|
+ if not update:
|
|
|
172
|
+ default_attrs['avatar_sha'] = None
|
|
172
|
173
|
|
|
173
|
174
|
attrs = item.getAttrs()
|
|
174
|
175
|
del attrs['jid']
|
|
175
|
176
|
groups = {group.getData() for group in item.getTags('group')}
|
|
176
|
177
|
attrs['groups'] = list(groups)
|
|
177
|
178
|
|
|
178
|
|
- if update:
|
|
179
|
|
- return attrs
|
|
180
|
179
|
default_attrs.update(attrs)
|
|
181
|
180
|
return default_attrs
|
|
182
|
181
|
|
| ... |
... |
@@ -196,13 +195,13 @@ class Roster(BaseModule): |
|
196
|
195
|
|
|
197
|
196
|
if item.getAttr('subscription') == 'remove':
|
|
198
|
197
|
self._data.pop(jid, None)
|
|
199
|
|
- attrs = self._get_item_attrs(item, update=False)
|
|
|
198
|
+ attrs = self._get_item_attrs(item)
|
|
200
|
199
|
return RosterItem(jid, attrs)
|
|
201
|
200
|
|
|
202
|
201
|
if jid not in self._data:
|
|
203
|
|
- self._data[jid] = self._get_item_attrs(item, update=False)
|
|
|
202
|
+ self._data[jid] = self._get_item_attrs(item)
|
|
204
|
203
|
else:
|
|
205
|
|
- self._data[jid].update(self._get_item_attrs(item))
|
|
|
204
|
+ self._data[jid].update(self._get_item_attrs(item, update=True))
|
|
206
|
205
|
|
|
207
|
206
|
return RosterItem(jid, self._data[jid])
|
|
208
|
207
|
|