Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrés Ambrois <andresambrois@gmail.com>2010-05-23 07:23:12 (GMT)
committer Sascha Silbe <sascha-pgp@silbe.org>2010-11-01 16:52:16 (GMT)
commit529cc980c4219b7cbfef1d31d29d4191e022c246 (patch)
tree82a34cbde312bfa35be21916a737aefa6f8e518a
parentfad159ad9bb4316582a311a0d1fd7cdc2426a11d (diff)
Implement sorting for removable devices.
Signed-off-by: Andrés Ambrois <andresambrois@gmail.com>
-rw-r--r--src/jarabe/journal/model.py16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/jarabe/journal/model.py b/src/jarabe/journal/model.py
index 503f77c..0b60d79 100644
--- a/src/jarabe/journal/model.py
+++ b/src/jarabe/journal/model.py
@@ -21,6 +21,7 @@ import time
import shutil
from stat import S_IFMT, S_IFDIR, S_IFREG
import re
+from operator import itemgetter
import gobject
import dbus
@@ -246,6 +247,8 @@ class InplaceResultSet(BaseResultSet):
self._mime_types = query.get('mime_type', [])
+ self._sort = query.get('order_by', ['+timestamp'])[0]
+
def setup(self):
self._file_list = []
self._recurse_dir(self._mount_point)
@@ -254,7 +257,13 @@ class InplaceResultSet(BaseResultSet):
self._stopped = True
def setup_ready(self):
- self._file_list.sort(lambda a, b: cmp(b[2], a[2]))
+ if self._sort[1:] == 'filesize':
+ keygetter = itemgetter(3)
+ else:
+ keygetter = itemgetter(2) # timestamp
+ self._file_list.sort(lambda a, b: cmp(b, a),
+ key=keygetter,
+ reverse=self._sort[0]=='-')
self.ready.send(self)
def find(self, query):
@@ -273,7 +282,7 @@ class InplaceResultSet(BaseResultSet):
files = self._file_list[offset:offset + limit]
entries = []
- for file_path, stat, mtime_ in files:
+ for file_path, stat, mtime_, size_ in files:
metadata = _get_file_metadata(file_path, stat)
metadata['mountpoint'] = self._mount_point
entries.append(metadata)
@@ -331,7 +340,7 @@ class InplaceResultSet(BaseResultSet):
add_to_list = False
if add_to_list:
- file_info = (full_path, stat, int(stat.st_mtime))
+ file_info = (full_path, stat, int(stat.st_mtime), stat.st_size)
self._file_list.append(file_info)
self.progress.send(self)
@@ -344,6 +353,7 @@ def _get_file_metadata(path, stat):
return {'uid': path,
'title': os.path.basename(path),
'timestamp': stat.st_mtime,
+ 'filesize': stat.st_size,
'mime_type': gio.content_type_guess(filename=path),
'activity': '',
'activity_id': '',