diff options
author | Ajay Garg <ajay@activitycentral.com> | 2012-08-29 11:30:14 (GMT) |
---|---|---|
committer | Ajay Garg <ajay@activitycentral.com> | 2012-08-29 11:30:14 (GMT) |
commit | fae6b3d83f8ff06b0fe7ffd142018107dec2dc8f (patch) | |
tree | 56883600813d516e3ec03b293ecd6ea98c8a3361 | |
parent | f607aa742d50db63ddfc8d1ed776de9f24047710 (diff) |
[Version-6] 1-to-N feature via School-Server.
Changes of version-6 over version-5 :
====================================
a)
Added the option to show the "nick" and "serial number" of the
uploader XO in the Expanded-Entry.
-rw-r--r-- | rpms/sugar/0130-1-to-N-feature-via-School-Server.patch | 131 |
1 files changed, 112 insertions, 19 deletions
diff --git a/rpms/sugar/0130-1-to-N-feature-via-School-Server.patch b/rpms/sugar/0130-1-to-N-feature-via-School-Server.patch index 4d61d7f..ef570a4 100644 --- a/rpms/sugar/0130-1-to-N-feature-via-School-Server.patch +++ b/rpms/sugar/0130-1-to-N-feature-via-School-Server.patch @@ -1,22 +1,64 @@ -From 2201c690a2705fe90a7c009e2fd60e3e5bcb8e6c Mon Sep 17 00:00:00 2001 +From ef7fc9392d515430290406bc7813987b5e661451 Mon Sep 17 00:00:00 2001 From: Ajay Garg <ajay@activitycentral.com> -Date: Wed, 29 Aug 2012 12:34:20 +0530 +Date: Wed, 29 Aug 2012 16:56:59 +0530 Subject: [sugar PATCH] 1-to-N-feature-via-School-Server. Organization: Sugar Labs Foundation Signed-off-by: Ajay Garg <ajay@activitycentral.com> --- + src/jarabe/journal/expandedentry.py | 24 +++- src/jarabe/journal/journalactivity.py | 17 ++- src/jarabe/journal/journaltoolbox.py | 44 ++++- - src/jarabe/journal/model.py | 350 ++++++++++++++++++++++----------- - src/jarabe/journal/palettes.py | 202 ++++++++++++++++--- + src/jarabe/journal/model.py | 352 ++++++++++++++++++++++----------- + src/jarabe/journal/palettes.py | 238 +++++++++++++++++++--- src/jarabe/journal/volumestoolbar.py | 41 ++--- src/jarabe/journal/webdavmanager.py | 164 ++++++++++------ src/jarabe/view/palettes.py | 31 +--- src/webdav/Connection.py | 11 +- src/webdav/WebdavClient.py | 16 ++- src/webdav/davlib.py | 9 +- - 10 files changed, 605 insertions(+), 280 deletions(-) + 11 files changed, 667 insertions(+), 280 deletions(-) +diff --git a/src/jarabe/journal/expandedentry.py b/src/jarabe/journal/expandedentry.py +index 03f8cd1..1e857ba 100644 +--- a/src/jarabe/journal/expandedentry.py ++++ b/src/jarabe/journal/expandedentry.py +@@ -166,13 +166,35 @@ class ExpandedEntry(hippo.CanvasBox): + self._buddy_list.append(self._create_buddy_list()) + + description = self._description.text_view_widget +- description.props.buffer.props.text = metadata.get('description', '') ++ ++ # TRANS: Do not translate the """%s""". ++ uploader_nick_text = self.__create_text_description( ++ _('Source XO Nick :: \n%s'), metadata.get('uploader-nick', '')) ++ ++ # TRANS: Do not translate the """%s""". ++ uploader_serial_text = self.__create_text_description( ++ _('Source XO Serial Number :: \n%s'), metadata.get('uploader-serial', '')) ++ ++ # TRANS: Do not translate the """%s""". ++ misc_info_text = self.__create_text_description( ++ _('Misellaneous Information :: \n%s'), metadata.get('description', '')) ++ ++ description.props.buffer.props.text = uploader_nick_text + \ ++ uploader_serial_text + \ ++ misc_info_text ++ + description.props.editable = model.is_editable(metadata) + + tags = self._tags.text_view_widget + tags.props.buffer.props.text = metadata.get('tags', '') + tags.props.editable = model.is_editable(metadata) + ++ def __create_text_description(self, heading, value): ++ if (value == '') or (value is None): ++ return '' ++ ++ return ((heading % value) + '\n\n') ++ + def _create_keep_icon(self): + keep_icon = KeepIcon(False) + keep_icon.connect('activated', self._keep_icon_activated_cb) diff --git a/src/jarabe/journal/journalactivity.py b/src/jarabe/journal/journalactivity.py index fc4773d..5f2a734 100644 --- a/src/jarabe/journal/journalactivity.py @@ -152,7 +194,7 @@ index 6b2494e..b1c0cac 100644 return self._selected_entries diff --git a/src/jarabe/journal/model.py b/src/jarabe/journal/model.py -index 422e947..2dc256a 100644 +index 422e947..071376b 100644 --- a/src/jarabe/journal/model.py +++ b/src/jarabe/journal/model.py @@ -43,7 +43,7 @@ from sugar import dispatch @@ -557,7 +599,7 @@ index 422e947..2dc256a 100644 metadata_dir_path = os.path.join(metadata['mountpoint'], JOURNAL_METADATA_DIR) -@@ -939,26 +1015,62 @@ def _write_entry_on_external_device(metadata, file_path): +@@ -939,25 +1015,61 @@ def _write_entry_on_external_device(metadata, file_path): os.close(fh) os.rename(fn, os.path.join(metadata_dir_path, preview_fname)) @@ -569,7 +611,10 @@ index 422e947..2dc256a 100644 else: - _rename_entry_on_external_device(file_path, destination_path, - metadata_dir_path) -- ++ preview_destination_path = None ++ ++ return (metadata_destination_path, preview_destination_path) + - # For "Shares" folder, we need to set the permissions of the newly - # copied file to 0777, else it will not be accessible by "httpd" - # service. @@ -577,16 +622,11 @@ index 422e947..2dc256a 100644 - fd = os.open(destination_path, os.O_RDONLY) - os.fchmod(fd, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO) - os.close(fd) -- + - metadata_file_path = os.path.join(metadata_dir_path, file_name + '.metadata') - fd = os.open(metadata_file_path, os.O_RDONLY) - os.fchmod(fd, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO) - os.close(fd) -+ preview_destination_path = None -+ -+ return (metadata_destination_path, preview_destination_path) - - +def update_only_metadata_and_preview_files_and_return_file_paths(metadata): + file_name = get_file_name(metadata['title'], metadata['mime_type']) + _write_metadata_and_preview_files_and_return_file_paths(metadata, @@ -597,7 +637,7 @@ index 422e947..2dc256a 100644 + transfer_ownership): + """Create and update an entry copied from the + DS to an external storage device. -+ + + Besides copying the associated file a file for the preview + and one for the metadata are stored in the hidden directory + .Sugar-Metadata. @@ -633,12 +673,24 @@ index 422e947..2dc256a 100644 + _rename_entry_on_external_device(file_path, destination_path) + else: + shutil.copy(file_path, destination_path) -+ + object_id = destination_path created.send(None, object_id=object_id) +@@ -1013,7 +1125,11 @@ def is_editable(metadata): + # called, upon an entry in the context of a singular + # mount-point. + from jarabe.journal.journalactivity import get_mount_point +- return os.access(get_mount_point(), os.W_OK) ++ mount_point = get_mount_point() ++ ++ if is_mount_point_for_locally_mounted_remote_share(mount_point): ++ return False ++ return os.access(mount_point, os.W_OK) + + def get_documents_path(): diff --git a/src/jarabe/journal/palettes.py b/src/jarabe/journal/palettes.py -index 66dcadc..645ed3a 100644 +index 66dcadc..f8a437e 100644 --- a/src/jarabe/journal/palettes.py +++ b/src/jarabe/journal/palettes.py @@ -30,6 +30,7 @@ import gio @@ -950,7 +1002,7 @@ index 66dcadc..645ed3a 100644 show_editing_alert, show_progress_info_alert, batch_mode) -@@ -835,8 +951,34 @@ class SharesMenu(BaseCopyMenuItem): +@@ -835,13 +951,75 @@ class SharesMenu(BaseCopyMenuItem): def _operate(self, metadata): if not self._file_path_valid(metadata): return False @@ -977,6 +1029,12 @@ index 66dcadc..645ed3a 100644 + from jarabe.journal.journalactivity import get_mount_point, \ + get_journal + metadata['mountpoint'] = get_mount_point() ++ ++ # Attach the info of the uploader. ++ from jarabe.model.buddy import get_owner_instance ++ metadata['uploader-nick'] = get_owner_instance().props.nick ++ metadata['uploader-serial'] = self.__get_serial_number() ++ + if not self._metadata_write_valid(metadata): + return False + @@ -986,7 +1044,42 @@ index 66dcadc..645ed3a 100644 return False # This is sync-operation. Call the post-operation now. -@@ -970,8 +1112,8 @@ class CopyMenuHelper(gtk.Menu): + self._post_operate_per_metadata_per_action(metadata) + ++ def __get_serial_number(self): ++ _OFW_TREE = '/ofw' ++ _PROC_TREE = '/proc/device-tree' ++ _SN = 'serial-number' ++ _not_available = _('Not available') ++ ++ serial_no = None ++ if os.path.exists(os.path.join(_OFW_TREE, _SN)): ++ serial_no = self.__read_file(os.path.join(_OFW_TREE, _SN)) ++ elif os.path.exists(os.path.join(_PROC_TREE, _SN)): ++ serial_no = self.__read_file(os.path.join(_PROC_TREE, _SN)) ++ ++ if serial_no is None: ++ serial_no = _not_available ++ return serial_no ++ ++ def __read_file(self, path): ++ if os.access(path, os.R_OK) == 0: ++ return None ++ ++ fd = open(path, 'r') ++ value = fd.read() ++ fd.close() ++ if value: ++ value = value.strip('\n') ++ return value ++ else: ++ logging.debug('No information in file or directory: %s', path) ++ return None ++ + + class FriendsMenu(gtk.Menu): + __gtype_name__ = 'JournalFriendsMenu' +@@ -970,8 +1148,8 @@ class CopyMenuHelper(gtk.Menu): menu.append(documents_menu) documents_menu.show() |