diff options
author | Ajay Garg <ajay@activitycentral.com> | 2012-10-20 08:53:15 (GMT) |
---|---|---|
committer | Ajay Garg <ajay@activitycentral.com> | 2012-10-20 08:53:15 (GMT) |
commit | ce0a770d7619597086c61d825463fd08a86a4c0b (patch) | |
tree | 2debee7baf07dfdc7003996fc9ac507ccd23d41c | |
parent | 654b82dc2915aa2dd1ce37bfb1c665bb1bd23d12 (diff) |
sdxo#2371: Now, sorting by favorites work in Documents/Local-Shares.
-rw-r--r-- | rpms/sugar/0156-Fixing-many-inter-related-favorite-issues.patch | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/rpms/sugar/0156-Fixing-many-inter-related-favorite-issues.patch b/rpms/sugar/0156-Fixing-many-inter-related-favorite-issues.patch new file mode 100644 index 0000000..11daceb --- /dev/null +++ b/rpms/sugar/0156-Fixing-many-inter-related-favorite-issues.patch @@ -0,0 +1,127 @@ +From 22e847b712403c157da322fa8888641e8ea84b7f Mon Sep 17 00:00:00 2001 +From: Ajay Garg <ajay@activitycentral.com> +Date: Sat, 20 Oct 2012 14:04:54 +0530 +Subject: [PATCH] Fixing many inter-related favorite-issues. +Organization: Sugar Labs Foundation + + +Signed-off-by: Ajay Garg <ajay@activitycentral.com> +--- + src/jarabe/journal/model.py | 50 ++++++++++++++++++++----------------------- + 1 file changed, 23 insertions(+), 27 deletions(-) + +diff --git a/src/jarabe/journal/model.py b/src/jarabe/journal/model.py +index c9e08ec..9b31ac0 100644 +--- a/src/jarabe/journal/model.py ++++ b/src/jarabe/journal/model.py +@@ -289,6 +289,14 @@ class BaseResultSet(object): + + return self._cache[self._position - self._offset] + ++ def is_favorite_compatible(self, metadata): ++ if self._favorite == '0': ++ return True ++ ++ return ((metadata is not None) and \ ++ ('keep' in metadata.keys()) and \ ++ (str(metadata['keep']) == '1')) ++ + + class DatastoreResultSet(BaseResultSet): + """Encapsulates the result of a query on the datastore +@@ -352,6 +360,8 @@ class InplaceResultSet(BaseResultSet): + + self._sort = query.get('order_by', ['+timestamp'])[0] + ++ self._favorite = str(query.get('keep', 0)) ++ + def setup(self): + self._file_list = [] + self._pending_directories = [self._mount_point] +@@ -459,10 +469,13 @@ class InplaceResultSet(BaseResultSet): + if S_IFMT(stat.st_mode) != S_IFREG: + return + ++ metadata = _get_file_metadata(full_path, stat, ++ fetch_preview=False) ++ ++ if not self.is_favorite_compatible(metadata): ++ return + if self._regex is not None and \ + not self._regex.match(full_path): +- metadata = _get_file_metadata(full_path, stat, +- fetch_preview=False) + if not metadata: + return + add_to_list = False +@@ -510,7 +523,7 @@ class InplaceResultSet(BaseResultSet): + return + + +-class RemoteShareResultSet(object): ++class RemoteShareResultSet(BaseResultSet): + def __init__(self, ip_address_or_dns_name, query): + self._ip_address_or_dns_name = ip_address_or_dns_name + self._file_list = [] +@@ -544,6 +557,8 @@ class RemoteShareResultSet(object): + + self._sort = query.get('order_by', ['+timestamp'])[0] + ++ self._favorite = str(query.get('keep', 0)) ++ + def setup(self): + try: + metadata_list_complete = webdavmanager.get_remote_webdav_share_metadata(self._ip_address_or_dns_name) +@@ -552,6 +567,9 @@ class RemoteShareResultSet(object): + + for metadata in metadata_list_complete: + ++ if not self.is_favorite_compatible(metadata): ++ continue ++ + add_to_list = False + if self._regex is not None: + for f in ['fulltext', 'title', +@@ -1111,8 +1129,7 @@ def _write_entry_on_external_device(metadata, file_path, + if destination_path != file_path: + file_name = get_unique_file_name(metadata['mountpoint'], file_name) + destination_path = os.path.join(metadata['mountpoint'], file_name) +- clean_name, extension_ = os.path.splitext(file_name) +- metadata['title'] = clean_name ++ metadata['title'] = file_name + + _write_metadata_and_preview_files_and_return_file_paths(metadata, + file_name) +@@ -1131,28 +1148,7 @@ def _write_entry_on_external_device(metadata, file_path, + + + def get_file_name(title, mime_type): +- file_name = title +- +- extension = mime.get_primary_extension(mime_type) +- if extension is not None and extension: +- extension = '.' + extension +- if not file_name.endswith(extension): +- file_name += extension +- +- # Invalid characters in VFAT filenames. From +- # http://en.wikipedia.org/wiki/File_Allocation_Table +- invalid_chars = ['/', '\\', ':', '*', '?', '"', '<', '>', '|', '\x7F'] +- invalid_chars.extend([chr(x) for x in range(0, 32)]) +- for char in invalid_chars: +- file_name = file_name.replace(char, '_') +- +- # FAT limit is 255, leave some space for uniqueness +- max_len = 250 +- if len(file_name) > max_len: +- name, extension = os.path.splitext(file_name) +- file_name = name[0:max_len - len(extension)] + extension +- +- return file_name ++ return title + + + def get_unique_file_name(mount_point, file_name): +-- +1.7.10.2 + |