From patchwork Sun Feb 6 10:52:50 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [sugar] Notify on not sent feedbacks; fix issue with not auto resend Date: Sun, 06 Feb 2011 15:52:50 -0000 From: Aleksey Lim X-Patchwork-Id: 634 Message-Id: <1296989570-2997-1-git-send-email-alsroot@activitycentral.org> To: dextrose@lists.sugarlabs.org --- 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': '', '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