[Dextrose] [PATCH sugar] Notify on not sent feedbacks; fix issue with not auto resend

Aleksey Lim alsroot at activitycentral.org
Sun Feb 6 05:52:50 EST 2011


---
 src/jarabe/model/feedback_collector.py |   32 ++++++++++++++++++++------------
 1 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/src/jarabe/model/feedback_collector.py b/src/jarabe/model/feedback_collector.py
index 4671437..43540a0 100644
--- a/src/jarabe/model/feedback_collector.py
+++ b/src/jarabe/model/feedback_collector.py
@@ -25,12 +25,14 @@ from email.mime.multipart import MIMEMultipart
 from email.mime.application import MIMEApplication
 from email.generator import Generator
 from email.encoders import encode_noop
+from gettext import gettext as _
 
 import gconf
 import gobject
 import simplejson
 
 from sugar import logger, feedback, util
+from jarabe import frame
 
 
 _reports = {}
@@ -47,7 +49,7 @@ def start(host, port, auto_submit_delay):
     _port = port
 
     if auto_submit_delay > 0:
-        gobject.timeout_add_seconds(auto_submit_delay, anonymous_submit)
+        gobject.timeout_add_seconds(auto_submit_delay, anonymous_submit, True)
 
 
 def update(bundle_id, report, log_file):
@@ -86,24 +88,26 @@ def submit(message):
             'nick': nick,
             'jabber_server': jabber,
             }
-    _submit(data)
+    _submit(data, False)
 
 
-def anonymous_submit():
+def anonymous_submit(implicit=False):
     from jarabe.journal import misc
 
     data = {}
     client = gconf.client_get_default()
     if client.get_bool('/desktop/sugar/feedback/anonymous_with_sn'):
         data['serial_number'] = misc.get_xo_serial()
-    _submit(data)
+    _submit(data, implicit)
+
+    return True
 
 
-def _submit(data=None):
+def _submit(data, implicit):
     if data:
         _reports.update(data)
     if is_empty():
-        return True
+        return
 
     logging.debug('Sending feedback report: %r', _reports)
 
@@ -126,16 +130,15 @@ def _submit(data=None):
 
     tar.close()
 
-    _SubmitThread(tar_file).run()
-
-    return True
+    _SubmitThread(tar_file, implicit).run()
 
 
 class _SubmitThread(threading.Thread):
 
-    def __init__(self, tar_file):
+    def __init__(self, tar_file, implicit):
         threading.Thread.__init__(self)
         self._tar_file = tar_file
+        self._implicit = implicit
 
     def run(self):
         try:
@@ -151,11 +154,16 @@ class _SubmitThread(threading.Thread):
             response = conn.getresponse()
 
             if response.status != 200:
-                logging.error('Incorrect feedback submit: %s, %s',
+                raise Exception('Incorrect feedback submit: %s, %s',
                         response.status, response.read())
 
         except Exception:
-            logging.exception('Cannot submit feedback')
+            title = _('Cannot submit feedback')
+            msg = _('Feedback was not sent to %s:%s.') % (_host, _port)
+            if not self._implicit:
+                gobject.idle_add(lambda:
+                        frame.get_view().add_message(summary=title, body=msg))
+            logging.exception('%s: %s', title, msg)
         finally:
             os.unlink(self._tar_file)
             self._tar_file = None
-- 
1.7.3.4



More information about the Dextrose mailing list