[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