From 6745aabf9aef557a157c2f7e3c8ba294c05d081d Mon Sep 17 00:00:00 2001
From: Sascha Silbe <sascha@silbe.org>
Date: Mon, 24 Aug 2009 16:48:43 +0200
Subject: [PATCH] add filesize to returned metadata
---
src/carquinyol/datastore.py | 20 ++++++++++----------
src/carquinyol/filestore.py | 7 +++++++
2 files changed, 17 insertions(+), 10 deletions(-)
diff --git a/src/carquinyol/datastore.py b/src/carquinyol/datastore.py
index dc2e167..21de309 100644
a
|
b
|
import dbus.service |
26 | 26 | import gobject |
27 | 27 | |
28 | 28 | from sugar import mime |
| 29 | from sugar.logger import trace |
29 | 30 | |
30 | 31 | from carquinyol import layoutmanager |
31 | 32 | from carquinyol import migration |
… |
… |
class DataStore(dbus.service.Object): |
225 | 226 | |
226 | 227 | return self._find_all(query, properties) |
227 | 228 | |
228 | | metadata = self._metadata_store.retrieve(uid, properties) |
229 | | entries.append(metadata) |
| 229 | entries.append(self._get_metadata(uid, properties)) |
230 | 230 | |
231 | 231 | logger.debug('find(): %r', time.time() - t) |
232 | 232 | |
… |
… |
class DataStore(dbus.service.Object): |
240 | 240 | limit = query.get('limit', MAX_QUERY_LIMIT) |
241 | 241 | uids = uids[offset:offset + limit] |
242 | 242 | |
243 | | entries = [] |
244 | | for uid in uids: |
245 | | metadata = self._metadata_store.retrieve(uid, properties) |
246 | | entries.append(metadata) |
247 | | |
| 243 | entries = [self._get_metadata(uid, properties) for uid in uids] |
248 | 244 | return entries, count |
249 | 245 | |
| 246 | def _get_metadata(self, uid, properties): |
| 247 | metadata = self._metadata_store.retrieve(uid, properties) |
| 248 | metadata['filesize'] = self._file_store.get_file_size(uid) |
| 249 | return metadata |
| 250 | |
250 | 251 | @dbus.service.method(DS_DBUS_INTERFACE, |
251 | 252 | in_signature='s', |
252 | 253 | out_signature='s', |
… |
… |
class DataStore(dbus.service.Object): |
266 | 267 | @dbus.service.method(DS_DBUS_INTERFACE, |
267 | 268 | in_signature='s', |
268 | 269 | out_signature='a{sv}') |
| 270 | @trace(logger=logger) |
269 | 271 | def get_properties(self, uid): |
270 | | logging.debug('datastore.get_properties %r', uid) |
271 | | metadata = self._metadata_store.retrieve(uid) |
272 | | return metadata |
| 272 | return self._get_metadata(uid, []) |
273 | 273 | |
274 | 274 | @dbus.service.method(DS_DBUS_INTERFACE, |
275 | 275 | in_signature='sa{sv}', |
diff --git a/src/carquinyol/filestore.py b/src/carquinyol/filestore.py
index 71d6344..baa0e28 100644
a
|
b
|
class FileStore(object): |
146 | 146 | def get_file_path(self, uid): |
147 | 147 | return layoutmanager.get_instance().get_data_path(uid) |
148 | 148 | |
| 149 | def get_file_size(self, uid): |
| 150 | file_path = layoutmanager.get_instance().get_data_path(uid) |
| 151 | if not os.path.exists(file_path): |
| 152 | return 0 |
| 153 | |
| 154 | return os.stat(file_path).st_size |
| 155 | |
149 | 156 | def delete(self, uid): |
150 | 157 | """Remove the file associated to a given entry. |
151 | 158 | |