diff --git a/weboob/capabilities/collection.py b/weboob/capabilities/collection.py index 61b4d67b9efcbddeee911c2e76af705732c87b2a..72b7c07153b41391770de3d739a3bf9bdc32e80b 100644 --- a/weboob/capabilities/collection.py +++ b/weboob/capabilities/collection.py @@ -17,6 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . +from weboob.tools.ordereddict import OrderedDict from .base import IBaseCap, CapBaseObject, UserError, StringField, Field @@ -54,6 +55,19 @@ def parent_path(self): def path_level(self): return len(self.split_path) + def to_dict(self): + def iter_decorate(d): + for key, value in d: + if key == 'id' and self.backend is not None: + value = u'%s@%s' % (self.basename, self.backend) + yield key, value + + if key == 'split_path': + yield key, '/'.join(value) + + fields_iterator = self.iter_fields() + return OrderedDict(iter_decorate(fields_iterator)) + class Collection(BaseCollection): """ diff --git a/weboob/tools/application/formatters/json.py b/weboob/tools/application/formatters/json.py index b4800cede42ddb1aa6f348ec8c809e5e3d71833a..94b23e2be367c56c9a5f246351717d2076a40193 100644 --- a/weboob/tools/application/formatters/json.py +++ b/weboob/tools/application/formatters/json.py @@ -57,6 +57,9 @@ def flush(self): def format_dict(self, item): self.queue.append(item) + def format_collection(self, collection, only): + self.queue.append(collection.to_dict()) + class JsonLineFormatter(IFormatter): """