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

Anish Mangal anish at activitycentral.org
Thu Feb 10 10:28:33 EST 2011


On Sun, Feb 6, 2011 at 07:52, Aleksey Lim <alsroot at activitycentral.org> wrote:
> ---
>  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

Maybe catch specific exception and give a message like:

'Was not able to submit feedback! Check your internet connection or
try again later'

> --
> 1.7.3.4
>
>


More information about the Dextrose mailing list