Merge lp:~dobey/ubuntuone-client/sharing-error into lp:ubuntuone-client

Proposed by dobey
Status: Merged
Approved by: Tim Cole
Approved revision: 217
Merged at revision: not available
Proposed branch: lp:~dobey/ubuntuone-client/sharing-error
Merge into: lp:ubuntuone-client
Diff against target: None lines
To merge this branch: bzr merge lp:~dobey/ubuntuone-client/sharing-error
Reviewer Review Type Date Requested Status
Tim Cole (community) Approve
John O'Brien (community) Approve
Review via email: mp+12088@code.launchpad.net

Commit message

Handle ShareCreateError in the nautilus extension, and show an error dialog
Fix the _create_share_http code to call the errback/callback properly
Add the path to the share_info dict on errors
Fix volume_manager and tests to get mdid properly

To post a comment you must log in.
Revision history for this message
John O'Brien (jdobrien) :
review: Approve
Revision history for this message
Tim Cole (tcole) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'nautilus/ubuntuone-nautilus.c'
--- nautilus/ubuntuone-nautilus.c 2009-09-14 15:48:56 +0000
+++ nautilus/ubuntuone-nautilus.c 2009-09-18 18:41:10 +0000
@@ -115,6 +115,10 @@
115static void ubuntuone_nautilus_share_created (DBusGProxy * proxy,115static void ubuntuone_nautilus_share_created (DBusGProxy * proxy,
116 GHashTable * hash,116 GHashTable * hash,
117 gpointer user_data);117 gpointer user_data);
118static void ubuntuone_nautilus_sharing_error (DBusGProxy * proxy,
119 GHashTable * hash,
120 gchar * error,
121 gpointer user_data);
118122
119static GObjectClass * parent_class = NULL;123static GObjectClass * parent_class = NULL;
120124
@@ -622,6 +626,15 @@
622 dbus_g_proxy_connect_signal (uon->u1_shares, "ShareCreated",626 dbus_g_proxy_connect_signal (uon->u1_shares, "ShareCreated",
623 G_CALLBACK (ubuntuone_nautilus_share_created),627 G_CALLBACK (ubuntuone_nautilus_share_created),
624 uon, NULL);628 uon, NULL);
629 dbus_g_proxy_add_signal (uon->u1_shares, "ShareCreateError",
630 dbus_g_type_get_map ("GHashTable",
631 G_TYPE_STRING,
632 G_TYPE_STRING),
633 G_TYPE_STRING,
634 G_TYPE_INVALID);
635 dbus_g_proxy_connect_signal (uon->u1_shares, "ShareCreateError",
636 G_CALLBACK (ubuntuone_nautilus_sharing_error),
637 uon, NULL);
625}638}
626639
627static void ubuntuone_nautilus_class_init (UbuntuOneNautilusClass * klass) {640static void ubuntuone_nautilus_class_init (UbuntuOneNautilusClass * klass) {
@@ -887,7 +900,8 @@
887}900}
888901
889static void ubuntuone_nautilus_download_finished (DBusGProxy * proxy,902static void ubuntuone_nautilus_download_finished (DBusGProxy * proxy,
890 gchar * path, GHashTable * info,903 gchar * path,
904 GHashTable * info,
891 gpointer user_data) {905 gpointer user_data) {
892 UbuntuOneNautilus * uon = UBUNTUONE_NAUTILUS (user_data);906 UbuntuOneNautilus * uon = UBUNTUONE_NAUTILUS (user_data);
893 gchar * partial = NULL;907 gchar * partial = NULL;
@@ -919,6 +933,33 @@
919 }933 }
920}934}
921935
936static void ubuntuone_nautilus_sharing_error (DBusGProxy * proxy,
937 GHashTable * hash,
938 gchar * error,
939 gpointer user_data) {
940 UbuntuOneNautilus * uon = UBUNTUONE_NAUTILUS (user_data);
941 gchar * path, * message;
942 GtkWidget * dialog;
943
944 path = g_hash_table_lookup (hash, "path");
945
946 dialog = gtk_message_dialog_new (GTK_WINDOW (uon->share_cb_data->parent),
947 GTK_DIALOG_DESTROY_WITH_PARENT |
948 GTK_DIALOG_NO_SEPARATOR,
949 GTK_MESSAGE_ERROR,
950 GTK_BUTTONS_CLOSE,
951 _("Error creating share."));
952 message = g_strdup_printf (_("There was an error sharing the folder '%s':\n%s"),
953 path,
954 error);
955 gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
956 "%s", message);
957 g_free (message);
958 g_signal_connect_swapped (G_OBJECT (dialog), "response",
959 G_CALLBACK (gtk_widget_destroy), dialog);
960 gtk_widget_show (dialog);
961}
962
922/* Required Nautilus module handling methods */963/* Required Nautilus module handling methods */
923void nautilus_module_initialize (GTypeModule * module) {964void nautilus_module_initialize (GTypeModule * module) {
924#ifdef ENABLE_NLS965#ifdef ENABLE_NLS
925966
=== modified file 'tests/syncdaemon/test_dbus.py'
--- tests/syncdaemon/test_dbus.py 2009-08-26 06:04:50 +0000
+++ tests/syncdaemon/test_dbus.py 2009-09-18 18:41:10 +0000
@@ -1118,7 +1118,8 @@
1118 a_dir = os.path.join(self.root_dir, "a_dir")1118 a_dir = os.path.join(self.root_dir, "a_dir")
1119 self.fs_manager.create(a_dir, "", is_dir=True)1119 self.fs_manager.create(a_dir, "", is_dir=True)
1120 self.fs_manager.set_node_id(a_dir, "node_id")1120 self.fs_manager.set_node_id(a_dir, "node_id")
1121 mdid = self.fs_manager.get_by_node_id("", "node_id")1121 mdobj = self.fs_manager.get_by_node_id("", "node_id")
1122 mdid = mdobj.mdid
1122 marker = MDMarker(mdid)1123 marker = MDMarker(mdid)
1123 d = defer.Deferred()1124 d = defer.Deferred()
1124 def share_handler(result):1125 def share_handler(result):
@@ -1137,7 +1138,8 @@
1137 a_dir = os.path.join(self.root_dir, "a_dir")1138 a_dir = os.path.join(self.root_dir, "a_dir")
1138 self.fs_manager.create(a_dir, "", is_dir=True)1139 self.fs_manager.create(a_dir, "", is_dir=True)
1139 self.fs_manager.set_node_id(a_dir, "node_id")1140 self.fs_manager.set_node_id(a_dir, "node_id")
1140 mdid = self.fs_manager.get_by_node_id("", "node_id")1141 mdobj = self.fs_manager.get_by_node_id("", "node_id")
1142 mdid = mdobj.mdid
1141 marker = MDMarker(mdid)1143 marker = MDMarker(mdid)
1142 error_msg = 'a error message'1144 error_msg = 'a error message'
1143 d = defer.Deferred()1145 d = defer.Deferred()
11441146
=== modified file 'ubuntuone/syncdaemon/action_queue.py'
--- ubuntuone/syncdaemon/action_queue.py 2009-09-10 18:49:01 +0000
+++ ubuntuone/syncdaemon/action_queue.py 2009-09-18 18:41:10 +0000
@@ -1799,7 +1799,7 @@
1799 """1799 """
1800 return self.demark(self.node_id)1800 return self.demark(self.node_id)
18011801
1802 def _create_share_http(self, node_id, user, name, modify):1802 def _create_share_http(self, node_id, user, name, modify, deferred):
1803 """Create a share using the HTTP Web API method."""1803 """Create a share using the HTTP Web API method."""
18041804
1805 consumer = oauth.OAuthConsumer("ubuntuone", "hammertime")1805 consumer = oauth.OAuthConsumer("ubuntuone", "hammertime")
@@ -1821,24 +1821,23 @@
1821 try:1821 try:
1822 urlopen(req)1822 urlopen(req)
1823 except HTTPError, e:1823 except HTTPError, e:
1824 self.log.error('Failed to create share for %s: %s',1824 deferred.errback(Failure(e))
1825 str(node_id), e.strerror)1825
1826 deferred.callback()
18261827
1827 def _run(self):1828 def _run(self):
1828 """1829 """
1829 Do the actual running1830 Do the actual running
1830 """1831 """
1831 if self.use_http:1832 if self.use_http:
1832 # External user, do the Web API method1833 # External user, do the HTTP REST method
1833 def failed_thread(error):1834 deferred = defer.Deferred()
1834 """Failed to launch the share creation thread."""
1835 self.log.error("Failed to create share: %s",
1836 error.getErrorMessage())
1837 d = threads.deferToThread(self._create_share_http,1835 d = threads.deferToThread(self._create_share_http,
1838 self.node_id, self.share_to,1836 self.node_id, self.share_to,
1839 self.name, self.access_level)1837 self.name, self.access_level,
1840 d.addErrback(failed_thread)1838 deferred)
1841 return d1839 d.addErrback(deferred.errback)
1840 return deferred
1842 else:1841 else:
1843 return self.action_queue.client.create_share(self.node_id,1842 return self.action_queue.client.create_share(self.node_id,
1844 self.share_to,1843 self.share_to,
@@ -1849,6 +1848,7 @@
1849 """1848 """
1850 It worked! Push the event.1849 It worked! Push the event.
1851 """1850 """
1851 # We don't get a share_id back from the HTTP REST method
1852 if not self.use_http:1852 if not self.use_http:
1853 self.action_queue.event_queue.push('AQ_CREATE_SHARE_OK',1853 self.action_queue.event_queue.push('AQ_CREATE_SHARE_OK',
1854 share_id=success.share_id,1854 share_id=success.share_id,
18551855
=== modified file 'ubuntuone/syncdaemon/dbus_interface.py'
--- ubuntuone/syncdaemon/dbus_interface.py 2009-08-26 15:25:50 +0000
+++ ubuntuone/syncdaemon/dbus_interface.py 2009-09-18 18:41:10 +0000
@@ -769,6 +769,8 @@
769769
770 def emit_share_create_error(self, share_info, error):770 def emit_share_create_error(self, share_info, error):
771 """ emits ShareDeleted signal """771 """ emits ShareDeleted signal """
772 path = self.fs_manager.get_by_mdid(str(share_info['marker'])).path
773 share_info.update(dict(path=path))
772 self.ShareCreateError(share_info, error)774 self.ShareCreateError(share_info, error)
773775
774 @dbus.service.method(DBUS_IFACE_SHARES_NAME,776 @dbus.service.method(DBUS_IFACE_SHARES_NAME,
775777
=== modified file 'ubuntuone/syncdaemon/volume_manager.py'
--- ubuntuone/syncdaemon/volume_manager.py 2009-09-14 19:03:00 +0000
+++ ubuntuone/syncdaemon/volume_manager.py 2009-09-18 18:41:10 +0000
@@ -418,7 +418,7 @@
418 self.log.debug('create share(%r, %s, %s, %s)',418 self.log.debug('create share(%r, %s, %s, %s)',
419 path, username, name, access_level)419 path, username, name, access_level)
420 mdobj = self.m.fs.get_by_path(path)420 mdobj = self.m.fs.get_by_path(path)
421 mdid = self.m.fs.get_by_node_id(mdobj.share_id, mdobj.node_id)421 mdid = mdobj.mdid
422 marker = MDMarker(mdid)422 marker = MDMarker(mdid)
423 share = Share(self.m.fs.get_abspath("", mdobj.path), share_id=marker,423 share = Share(self.m.fs.get_abspath("", mdobj.path), share_id=marker,
424 name=name, access_level=access_level,424 name=name, access_level=access_level,

Subscribers

People subscribed via source and target branches