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 Andrés Ambrois <andresambrois@gmail.com>2010-08-24 20:30:11 (GMT)
commit532594bb856c96e13462e7825187551c940d41f2 (patch)
treeb0945caca0b40a3b82959047a80cdbb85d9b004b
parentbc1edfa2193ca554d385c68e43c2cef0b9795a54 (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 030b88f..e76914e 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
@@ -242,6 +243,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)
@@ -250,7 +253,13 @@ class InplaceResultSet(BaseResultSet):
self._stopped = True
def setup_ready(self):
- self._file_list.sort(lambda a, b: b[2] - a[2])
+ if self._sort[1:] == 'filesize':
+ keygetter = itemgetter(3)
+ else:
+ keygetter = itemgetter(2) # timestamp
+ self._file_list.sort(lambda a, b: b - a,
+ key=keygetter,
+ reverse=self._sort[0]=='-')
self.ready.send(self)
def find(self, query):
@@ -269,7 +278,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)
@@ -327,7 +336,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)
@@ -340,6 +349,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': '',