Bugzilla plugin is now converted to backend sync service

as the summary, Bugzilla is now a backend sync service. It can be used simply as it was a plugin before. When enable this service, any added task will be handled and attempt to sync bug information from specific related Bugzilla service.

This version works well, but not perfect. I'm being continue to add more features, such as the configuration ability.
set_task is triggered every X minutes after the task has been modified. It
means that the explosion of save events is not immediately obvious but it
is there.

On Mon, Nov 10, 2014, 1:45 AM Chenxiong Qi <notifications@github.com> wrote:

> In GTG/backends/bugzilla/bugzilla.py:
>
> > +            send_notification(self.backend, error_no, error_message)
> > +        except socket.gaierror as err:
> > +            # NOTE: TBD, is it necessary to let user know this problem?
> > +            Log.error('Failed to synchronize bug {0} due to a network problem '
> > +                      '"{1}"'.format(task_info.bug_id, str(err)))
> > +        except Exception as err:
> > +            error_message = BUGZILLA_BUG_SYNC_FAIL_MESSAGE % task_info.bug_id
> > +            send_notification(self.backend,
> > +                              exceptions.ERRNO_BUGZILLA_BUG_SYNC_FAIL,
> > +                              error_message)
> > +            Log.error('Failed to synchronize information of bug {0} from {1}. '
> > +                      'Server error message "{2}"'.format(task_info.bug_id,
> > +                                                          bugzillaService.name,
> > +                                                          str(err)))
> > +        else:
> > +            title = '#%s: %s' % (task_info.bug_id, bug.summary)
>
> This kind of infinite loop doesn't happen by changing a task's title.
> Bugzilla sync task checks task's title to see whether it's a bug URL by
> matching a regular expression. So, it isn't a bug URL, nothing happens.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/getting-things-gnome/gtg/pull/55/files#r20068519>.
>