Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAjay Garg <ajay@activitycentral.com>2012-09-18 07:56:52 (GMT)
committer Ajay Garg <ajay@activitycentral.com>2012-09-18 07:56:52 (GMT)
commit5c908a8b278f076ef9720b6ae6d1e5d48d7647e4 (patch)
tree175b3754ecba3742c197aad4d3bb461c497483ae
parent5cb448cb2d4ea2c029ce3bbe36d3a57581cc1e48 (diff)
sdxo#2332: Now, School-Server icon is shown, only when its IP-Address/DNS-Name is actually configured.
-rw-r--r--rpms/sugar/0130-1-to-N-feature-via-School-Server.patch103
1 files changed, 55 insertions, 48 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 81cd2f8..08ff4a6 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,6 +1,6 @@
-From d56362d85ecd6ce9921a67c2f4252d01c26a71af Mon Sep 17 00:00:00 2001
+From f1fd1f92fb52f0ba81c62caa90a4269d99dac938 Mon Sep 17 00:00:00 2001
From: Ajay Garg <ajay@activitycentral.com>
-Date: Tue, 4 Sep 2012 18:16:19 +0530
+Date: Tue, 18 Sep 2012 13:23:31 +0530
Subject: [sugar PATCH] 1-to-N-feature via Peer-to-Peer mechanism; and Via-School-Server mechanism.
Organization: Sugar Labs Foundation
Signed-off-by: Ajay Garg <ajay@activitycentral.com>
@@ -11,16 +11,16 @@ 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 | 375 ++++++++++++++++++++++-----------
- src/jarabe/journal/palettes.py | 283 ++++++++++++++++++++++---
- src/jarabe/journal/volumestoolbar.py | 92 ++++++---
+ src/jarabe/journal/model.py | 379 +++++++++++++++++++++++----------
+ src/jarabe/journal/palettes.py | 284 ++++++++++++++++++++++---
+ src/jarabe/journal/volumestoolbar.py | 94 ++++++---
src/jarabe/journal/webdavmanager.py | 172 ++++++++++-----
src/jarabe/view/buddymenu.py | 45 ++++-
src/jarabe/view/palettes.py | 38 ++--
src/webdav/Connection.py | 11 +-
src/webdav/WebdavClient.py | 16 +-
src/webdav/davlib.py | 9 +-
- 15 files changed, 867 insertions(+), 279 deletions(-)
+ 15 files changed, 874 insertions(+), 279 deletions(-)
diff --git a/src/jarabe/frame/activitiestray.py b/src/jarabe/frame/activitiestray.py
index 55e0c31..7cbeefb 100644
@@ -255,7 +255,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..c06b2ee 100644
+index 422e947..7756f5c 100644
--- a/src/jarabe/journal/model.py
+++ b/src/jarabe/journal/model.py
@@ -43,7 +43,7 @@ from sugar import dispatch
@@ -277,7 +277,7 @@ index 422e947..c06b2ee 100644
JOURNAL_METADATA_DIR = '.Sugar-Metadata'
_datastore = None
-@@ -66,6 +69,52 @@ updated = dispatch.Signal()
+@@ -66,6 +69,56 @@ updated = dispatch.Signal()
deleted = dispatch.Signal()
@@ -285,7 +285,11 @@ index 422e947..c06b2ee 100644
+ '/desktop/sugar/network/school_server_ip_address_or_dns_name'
+
+client = gconf.client_get_default()
-+SCHOOL_SERVER_IP_ADDRESS_OR_DNS_NAME = client.get_string(SCHOOL_SERVER_IP_ADDRESS_OR_DNS_NAME_PATH) or '127.0.0.1'
++SCHOOL_SERVER_IP_ADDRESS_OR_DNS_NAME = client.get_string(SCHOOL_SERVER_IP_ADDRESS_OR_DNS_NAME_PATH)
++
++
++def is_school_server_present():
++ return not (SCHOOL_SERVER_IP_ADDRESS_OR_DNS_NAME is None)
+
+
+def _get_mount_point(path):
@@ -330,7 +334,7 @@ index 422e947..c06b2ee 100644
class _Cache(object):
__gtype_name__ = 'model_Cache'
-@@ -430,8 +479,8 @@ class InplaceResultSet(BaseResultSet):
+@@ -430,8 +483,8 @@ class InplaceResultSet(BaseResultSet):
class RemoteShareResultSet(object):
@@ -341,7 +345,7 @@ index 422e947..c06b2ee 100644
self._file_list = []
self.ready = dispatch.Signal()
-@@ -464,7 +513,11 @@ class RemoteShareResultSet(object):
+@@ -464,7 +517,11 @@ class RemoteShareResultSet(object):
self._sort = query.get('order_by', ['+timestamp'])[0]
def setup(self):
@@ -354,7 +358,7 @@ index 422e947..c06b2ee 100644
for metadata in metadata_list_complete:
add_to_list = False
-@@ -553,15 +606,8 @@ def _get_file_metadata(path, stat, fetch_preview=True):
+@@ -553,15 +610,8 @@ def _get_file_metadata(path, stat, fetch_preview=True):
metadata based on the file properties.
"""
@@ -371,7 +375,7 @@ index 422e947..c06b2ee 100644
if 'filesize' not in metadata:
if stat is not None:
metadata['filesize'] = stat.st_size
-@@ -582,17 +628,26 @@ def _get_file_metadata(path, stat, fetch_preview=True):
+@@ -582,17 +632,26 @@ def _get_file_metadata(path, stat, fetch_preview=True):
'description': path}
@@ -401,7 +405,7 @@ index 422e947..c06b2ee 100644
filename + '.preview')
if not os.path.exists(metadata_path):
-@@ -670,7 +725,8 @@ def find(query_, page_size):
+@@ -670,7 +729,8 @@ def find(query_, page_size):
Regex Matching is used, to ensure that the mount-point is an
IP-Address.
"""
@@ -411,7 +415,7 @@ index 422e947..c06b2ee 100644
else:
"""
For Documents/Shares/Mounted-Drives.
-@@ -678,56 +734,13 @@ def find(query_, page_size):
+@@ -678,56 +738,13 @@ def find(query_, page_size):
return InplaceResultSet(query, page_size, mount_points[0])
@@ -468,7 +472,7 @@ index 422e947..c06b2ee 100644
stat = None
metadata = _get_file_metadata(object_id, stat)
-@@ -812,7 +825,21 @@ def delete(object_id):
+@@ -812,7 +829,21 @@ def delete(object_id):
def copy(metadata, mount_point):
"""Copies an object to another mount point
"""
@@ -490,7 +494,7 @@ index 422e947..c06b2ee 100644
if mount_point == '/' and metadata['icon-color'] == '#000000,#ffffff':
client = gconf.client_get_default()
metadata['icon-color'] = client.get_string('/desktop/sugar/user/color')
-@@ -823,7 +850,7 @@ def copy(metadata, mount_point):
+@@ -823,7 +854,7 @@ def copy(metadata, mount_point):
metadata['mountpoint'] = mount_point
del metadata['uid']
@@ -499,7 +503,7 @@ index 422e947..c06b2ee 100644
def write(metadata, file_path='', update_mtime=True, transfer_ownership=True):
-@@ -845,27 +872,105 @@ def write(metadata, file_path='', update_mtime=True, transfer_ownership=True):
+@@ -845,27 +876,105 @@ def write(metadata, file_path='', update_mtime=True, transfer_ownership=True):
object_id = _get_datastore().create(dbus.Dictionary(metadata),
file_path,
transfer_ownership)
@@ -616,7 +620,7 @@ index 422e947..c06b2ee 100644
old_fname + '.preview')]
for ofile in old_files:
if os.path.exists(ofile):
-@@ -876,41 +981,32 @@ def _rename_entry_on_external_device(file_path, destination_path,
+@@ -876,41 +985,32 @@ def _rename_entry_on_external_device(file_path, destination_path,
'for file=%s', ofile, old_fname)
@@ -680,7 +684,7 @@ index 422e947..c06b2ee 100644
metadata_dir_path = os.path.join(metadata['mountpoint'],
JOURNAL_METADATA_DIR)
-@@ -939,25 +1035,64 @@ def _write_entry_on_external_device(metadata, file_path):
+@@ -939,25 +1039,64 @@ def _write_entry_on_external_device(metadata, file_path):
os.close(fh)
os.rename(fn, os.path.join(metadata_dir_path, preview_fname))
@@ -695,6 +699,14 @@ index 422e947..c06b2ee 100644
- _rename_entry_on_external_device(file_path, destination_path,
- metadata_dir_path)
+ 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,
++ file_name)
- # For "Shares" folder, we need to set the permissions of the newly
- # copied file to 0777, else it will not be accessible by "httpd"
@@ -703,19 +715,11 @@ index 422e947..c06b2ee 100644
- fd = os.open(destination_path, os.O_RDONLY)
- os.fchmod(fd, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)
- os.close(fd)
-+ return (metadata_destination_path, preview_destination_path)
- 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)
-
-+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,
-+ file_name)
-+
-+
+def _write_entry_on_external_device(metadata, file_path,
+ transfer_ownership):
+ """Create and update an entry copied from the
@@ -728,7 +732,7 @@ index 422e947..c06b2ee 100644
+ This function handles renames of an entry on the
+ external device and avoids name collisions. Renames are
+ handled failsafe.
-+
+
+ """
+ if 'uid' in metadata and os.path.exists(metadata['uid']):
+ file_path = metadata['uid']
@@ -760,7 +764,7 @@ index 422e947..c06b2ee 100644
object_id = destination_path
created.send(None, object_id=object_id)
-@@ -1013,7 +1148,11 @@ def is_editable(metadata):
+@@ -1013,7 +1152,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
@@ -774,7 +778,7 @@ index 422e947..c06b2ee 100644
def get_documents_path():
diff --git a/src/jarabe/journal/palettes.py b/src/jarabe/journal/palettes.py
-index 66dcadc..91e5460 100644
+index 66dcadc..bdd09bd 100644
--- a/src/jarabe/journal/palettes.py
+++ b/src/jarabe/journal/palettes.py
@@ -30,6 +30,7 @@ import gio
@@ -1195,7 +1199,7 @@ index 66dcadc..91e5460 100644
class FriendsMenu(gtk.Menu):
__gtype_name__ = 'JournalFriendsMenu'
-@@ -970,12 +1180,23 @@ class CopyMenuHelper(gtk.Menu):
+@@ -970,12 +1180,24 @@ class CopyMenuHelper(gtk.Menu):
menu.append(documents_menu)
documents_menu.show()
@@ -1212,7 +1216,8 @@ index 66dcadc..91e5460 100644
+ menu.append(local_shares_menu)
+ local_shares_menu.show()
+
-+ if not model.is_mount_point_for_locally_mounted_remote_share(get_mount_point()):
++ if (model.is_school_server_present()) and \
++ (not model.is_mount_point_for_locally_mounted_remote_share(get_mount_point())):
+ documents_menu = SchoolServerMenu(metadata_list,
show_editing_alert,
show_progress_info_alert,
@@ -1223,7 +1228,7 @@ index 66dcadc..91e5460 100644
documents_menu.connect('volume-error', self.__volume_error_cb)
menu.append(documents_menu)
diff --git a/src/jarabe/journal/volumestoolbar.py b/src/jarabe/journal/volumestoolbar.py
-index c24475d..b004657 100644
+index c24475d..07b178f 100644
--- a/src/jarabe/journal/volumestoolbar.py
+++ b/src/jarabe/journal/volumestoolbar.py
@@ -37,7 +37,6 @@ from sugar.graphics.palette import Palette
@@ -1244,7 +1249,7 @@ index c24475d..b004657 100644
def _get_id(document):
"""Get the ID for the document in the xapian database."""
-@@ -211,7 +213,13 @@ class VolumesToolbar(gtk.Toolbar):
+@@ -211,7 +213,15 @@ class VolumesToolbar(gtk.Toolbar):
def _set_up_volumes(self):
self._set_up_documents_button()
@@ -1253,13 +1258,15 @@ index c24475d..b004657 100644
+
+ client = gconf.client_get_default()
+ color = XoColor(client.get_string('/desktop/sugar/user/color'))
-+ self._add_remote_share_button(_('School-Server Shares'),
-+ model.SCHOOL_SERVER_IP_ADDRESS_OR_DNS_NAME,
-+ color, SHARE_TYPE_SCHOOL_SERVER)
++
++ if model.is_school_server_present():
++ self._add_remote_share_button(_('School-Server Shares'),
++ model.SCHOOL_SERVER_IP_ADDRESS_OR_DNS_NAME,
++ color, SHARE_TYPE_SCHOOL_SERVER)
volume_monitor = gio.volume_monitor_get()
self._mount_added_hid = volume_monitor.connect('mount-added',
-@@ -242,18 +250,28 @@ class VolumesToolbar(gtk.Toolbar):
+@@ -242,18 +252,28 @@ class VolumesToolbar(gtk.Toolbar):
'user-documents',
_('Documents'))
@@ -1298,7 +1305,7 @@ index c24475d..b004657 100644
button.connect('toggled', self._button_toggled_cb)
button.show()
-@@ -262,12 +280,7 @@ class VolumesToolbar(gtk.Toolbar):
+@@ -262,12 +282,7 @@ class VolumesToolbar(gtk.Toolbar):
self._volume_buttons.append(button)
self.show()
@@ -1312,7 +1319,7 @@ index c24475d..b004657 100644
def __mount_added_cb(self, volume_monitor, mount):
self._add_button(mount)
-@@ -302,13 +315,13 @@ class VolumesToolbar(gtk.Toolbar):
+@@ -302,13 +317,13 @@ class VolumesToolbar(gtk.Toolbar):
def _button_toggled_cb(self, button, force_toggle=False):
if button.props.active or force_toggle:
@@ -1327,7 +1334,7 @@ index c24475d..b004657 100644
self.emit('volume-changed', button.mount_point)
-@@ -328,6 +341,14 @@ class VolumesToolbar(gtk.Toolbar):
+@@ -328,6 +343,14 @@ class VolumesToolbar(gtk.Toolbar):
logging.error('Couldnt find button with mount_point %r', mount_point)
return None
@@ -1342,7 +1349,7 @@ index c24475d..b004657 100644
def _remove_button(self, mount):
button = self._get_button_for_mount(mount)
self._volume_buttons.remove(button)
-@@ -337,16 +358,20 @@ class VolumesToolbar(gtk.Toolbar):
+@@ -337,16 +360,20 @@ class VolumesToolbar(gtk.Toolbar):
if len(self.get_children()) < 2:
self.hide()
@@ -1367,7 +1374,7 @@ index c24475d..b004657 100644
self.hide()
break;
-@@ -478,6 +503,7 @@ class DirectoryButton(BaseButton):
+@@ -478,6 +505,7 @@ class DirectoryButton(BaseButton):
def __init__(self, dir_path, icon_name):
BaseButton.__init__(self, mount_point=dir_path)
@@ -1375,7 +1382,7 @@ index c24475d..b004657 100644
self.props.named_icon = icon_name
-@@ -488,16 +514,22 @@ class DirectoryButton(BaseButton):
+@@ -488,16 +516,22 @@ class DirectoryButton(BaseButton):
class RemoteSharesButton(BaseButton):
@@ -1384,14 +1391,14 @@ index c24475d..b004657 100644
+ def __init__(self, primary_text, ip_address_or_dns_name, color,
+ share_type):
+ BaseButton.__init__(self, mount_point=(model.WEBDAV_MOUNT_POINT + ip_address_or_dns_name))
-+
-+ self._primary_text = primary_text
-+ self._ip_address_or_dns_name = ip_address_or_dns_name
- self._buddy = buddy
- self.props.named_icon = 'emblem-neighborhood-shared'
- self.props.xo_color = buddy.props.color
- self._buddy_ip_address = buddy.props.ip_address
++ self._primary_text = primary_text
++ self._ip_address_or_dns_name = ip_address_or_dns_name
++
+ if share_type == SHARE_TYPE_PEER:
+ self.props.named_icon = 'emblem-neighborhood-shared'
+ elif share_type == SHARE_TYPE_SCHOOL_SERVER: