~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/bugs/doc/externalbugtracker-debbugs.txt

  • Committer: Launchpad Patch Queue Manager
  • Date: 2011-12-26 06:01:53 UTC
  • mfrom: (14575.2.4 megalint-9)
  • Revision ID: launchpad@pqm.canonical.com-20111226060153-1rfmi1yn90lu4fuf
[r=jtv][no-qa] Lint.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
= ExternalBugTracker: DebBugs =
 
1
===========================
 
2
ExternalBugTracker: DebBugs
 
3
===========================
2
4
 
3
5
Differently from Bugzilla, debbugs watch syncing is done by reading from
4
6
a local database, so we can use a real class for testing: we just need
46
48
    True
47
49
 
48
50
 
49
 
== Retrieving bug status from the debbugs database ==
 
51
Retrieving bug status from the debbugs database
 
52
===============================================
50
53
 
51
54
The retrieval of the remote status is done through the
52
55
getRemoteStatus() method. If we pass a bug number that doesn't exist in
78
81
    'done normal'
79
82
 
80
83
 
81
 
== Getting the time ==
 
84
Getting the time
 
85
================
82
86
 
83
87
We don't have acccess to the Debian servers exact time, but we trust it
84
88
being correct.
87
91
    datetime.datetime(...)
88
92
 
89
93
 
90
 
== Checking debbugs bug watches ==
 
94
Checking debbugs bug watches
 
95
============================
91
96
 
92
97
    >>> from lp.bugs.interfaces.bugtracker import IBugTrackerSet
93
98
    >>> debbugs = getUtility(IBugTrackerSet).getByName('debbugs')
155
160
    15 thunderbird New Unknown
156
161
 
157
162
Sometimes the severity field is missing in the bug summary. That will
158
 
cause importance to be set to medium, equivalent to the default normal severity
159
 
in debbugs.
 
163
cause importance to be set to medium, equivalent to the default normal
 
164
severity in debbugs.
160
165
 
161
166
    >>> import email
162
167
    >>> summary = email.message_from_file(
169
174
    'open normal'
170
175
 
171
176
 
172
 
== Debbugs status conversions ==
 
177
Debbugs status conversions
 
178
==========================
173
179
 
174
180
Let's take closer look at the status conversion. Debbugs has basically
175
181
only two statuses, 'open' and 'done', so in order to get a more fine
223
229
The 'pending' tag means that a fix is about to be uploaded, so it maps
224
230
to 'Fix Committed'.
225
231
 
226
 
    >>> print external_debbugs.convertRemoteStatus('open normal pending').title
 
232
    >>> print (
 
233
    ...     external_debbugs.convertRemoteStatus('open normal pending').title)
227
234
    Fix Committed
228
235
 
229
236
The 'fixed' tag means that the bug has been either fixed or work around
275
282
    UnknownRemoteStatusError: open
276
283
 
277
284
 
278
 
== Importing bugs ==
 
285
Importing bugs
 
286
==============
279
287
 
280
288
The Debbugs ExternalBugTracker can import a Debian bug into Launchpad.
281
289
 
340
348
    evolution
341
349
 
342
350
 
343
 
== Importing Comments ==
 
351
Importing Comments
 
352
==================
344
353
 
345
354
Along with importing debian bug reports, comments on those bug reports
346
355
can also be imported. The DebBugs class implements the
349
358
    >>> from lp.bugs.externalbugtracker import (
350
359
    ...     get_external_bugtracker)
351
360
    >>> from lp.bugs.interfaces.bugtracker import BugTrackerType
352
 
    >>> from lp.bugs.interfaces.externalbugtracker import ISupportsCommentImport
 
361
    >>> from lp.bugs.interfaces.externalbugtracker import (
 
362
    ...     ISupportsCommentImport)
353
363
    >>> from lp.bugs.tests.externalbugtracker import (
354
364
    ...     new_bugtracker)
355
365
    >>> external_debbugs = get_external_bugtracker(
551
561
    datetime.datetime(2008, 7, 15, 9, 20, 11, tzinfo=<UTC>)
552
562
 
553
563
 
554
 
=== Pushing comments to DebBugs ===
 
564
Pushing comments to DebBugs
 
565
---------------------------
555
566
 
556
567
The DebBugs ExternalBugTracker implements the ISupportsCommentPushing
557
568
interface, which allows checkwatches to use it to push Launchpad
558
569
comments back to the remote DebBugs instance.
559
570
 
560
 
    >>> from lp.bugs.interfaces.externalbugtracker import ISupportsCommentPushing
 
571
    >>> from lp.bugs.interfaces.externalbugtracker import (
 
572
    ...     ISupportsCommentPushing)
561
573
    >>> ISupportsCommentPushing.providedBy(external_debbugs)
562
574
    True
563
575
 
602
614
    A little fermented curd will do the trick!
603
615
 
604
616
 
605
 
=== Script for importing Debian bugs, linking them to Ubutu ===
 
617
Script for importing Debian bugs, linking them to Ubuntu
 
618
--------------------------------------------------------
606
619
 
607
620
There's a script called `import-debian-bugs.py`, which accepts a list of
608
621
bug numbers to be imported. It will link the bugs to the debbugs bug
665
678
    evolution (Debian): NEW
666
679
 
667
680
 
668
 
==== Importing bugs twice ====
 
681
Importing bugs twice
 
682
....................
669
683
 
670
684
If a Debian bug already exists in Launchpad (i.e it has a bug watch), it
671
685
won't be imported again. A warning is logged so that the person runnning
682
696
    [1]
683
697
 
684
698
 
685
 
== Getting the remote product for a bug ==
 
699
Getting the remote product for a bug
 
700
====================================
686
701
 
687
702
We can get the remote product for a bug by calling getRemoteProduct() on
688
703
a DebBugs instance. In actual fact this is a wrapper around