~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to utilities/massage-bug-import-xml

  • Committer: Gavin Panella
  • Date: 2011-11-23 15:45:18 UTC
  • mto: This revision was merged to the branch mainline in revision 14376.
  • Revision ID: gavin.panella@canonical.com-20111123154518-yoz6j6no9ct2h3m1
Resolve duplicateof as far as it will go.

Show diffs side-by-side

added added

removed removed

Lines of Context:
64
64
    - Normalizing whitespace.
65
65
 
66
66
    """
 
67
    # Resolve duplicates as far as they'll go.
 
68
    duplicates = dict(
 
69
        (node.getparent().get("id"), node.text)
 
70
        for node in root.findall('{%s}bug/{%s}duplicateof' % (NS, NS))
 
71
        if node.text is not None and node.text.isdigit())
 
72
 
 
73
    def resolve(bug_id):
 
74
        dupe_of = duplicates.get(bug_id)
 
75
        return (bug_id if dupe_of is None else resolve(dupe_of))
 
76
 
 
77
    for bug_id in duplicates:
 
78
        duplicates[bug_id] = resolve(bug_id)
 
79
 
67
80
    # Scan the tree, fixing up issues.
68
81
    for bug in root.findall('{%s}bug' % NS):
69
82
        # Get or create the tags element.
83
96
        if nickname.text is None or fix_nickname:
84
97
            nickname.text = u"%s-%s" % (project_name, bug.get('id'))
85
98
 
 
99
        # Resolve duplicateof, if it exists.
 
100
        if bug.get("id") in duplicates:
 
101
            bug.find("{%s}duplicateof" % NS).text = duplicates[bug.get("id")]
 
102
 
86
103
        # Get the first comment and its text. We'll need these later.
87
104
        first_comment = bug.find('{%s}comment' % NS)
88
105
        first_comment_text = first_comment.find('{%s}text' % NS)