diff sat/plugins/plugin_tickets_import_bugzilla.py @ 2624:56f94936df1e

code style reformatting using black
author Goffi <goffi@goffi.org>
date Wed, 27 Jun 2018 20:14:46 +0200
parents 3e4e78de9cca
children 003b8b4b56a7
line wrap: on
line diff
--- a/sat/plugins/plugin_tickets_import_bugzilla.py	Wed Jun 27 07:51:29 2018 +0200
+++ b/sat/plugins/plugin_tickets_import_bugzilla.py	Wed Jun 27 20:14:46 2018 +0200
@@ -20,8 +20,10 @@
 from sat.core.i18n import _, D_
 from sat.core.constants import Const as C
 from sat.core.log import getLogger
+
 log = getLogger(__name__)
 from sat.core import exceptions
+
 # from twisted.internet import threads
 from twisted.internet import defer
 import os.path
@@ -36,25 +38,27 @@
     C.PI_DEPENDENCIES: ["TICKETS_IMPORT"],
     C.PI_MAIN: "BugzillaImport",
     C.PI_HANDLER: "no",
-    C.PI_DESCRIPTION: _("""Tickets importer for Bugzilla""")
+    C.PI_DESCRIPTION: _("""Tickets importer for Bugzilla"""),
 }
 
 SHORT_DESC = D_(u"import tickets from Bugzilla xml export file")
 
-LONG_DESC = D_(u"""This importer handle Bugzilla xml export file.
+LONG_DESC = D_(
+    u"""This importer handle Bugzilla xml export file.
 
 To use it, you'll need to export tickets using XML.
 Tickets will be uploaded with the same ID as for Bugzilla, any existing ticket with this ID will be replaced.
 
 location: you must use the absolute path to your .xml file
-""")
+"""
+)
 
 STATUS_MAP = {
-    'NEW': 'queued',
-    'ASSIGNED': 'started',
-    'RESOLVED': 'review',
-    'CLOSED': 'closed',
-    'REOPENED': 'started'  # we loose data here because there is no need on basic workflow to have a reopened status
+    "NEW": "queued",
+    "ASSIGNED": "started",
+    "RESOLVED": "review",
+    "CLOSED": "closed",
+    "REOPENED": "started",  # we loose data here because there is no need on basic workflow to have a reopened status
 }
 
 
@@ -65,67 +69,73 @@
         tickets = []
         root = etree.parse(file_path)
 
-        for bug in root.xpath('bug'):
+        for bug in root.xpath("bug"):
             ticket = {}
-            ticket['id'] = bug.findtext('bug_id')
-            ticket['created'] = date_utils.date_parse(bug.findtext('creation_ts'))
-            ticket['updated'] = date_utils.date_parse(bug.findtext('delta_ts'))
-            ticket['title'] = bug.findtext('short_desc')
-            reporter_elt = bug.find('reporter')
-            ticket['author'] = reporter_elt.get('name')
-            if ticket['author'] is None:
-                if '@' in reporter_elt.text:
-                    ticket['author'] = reporter_elt.text[:reporter_elt.text.find('@')].title()
+            ticket["id"] = bug.findtext("bug_id")
+            ticket["created"] = date_utils.date_parse(bug.findtext("creation_ts"))
+            ticket["updated"] = date_utils.date_parse(bug.findtext("delta_ts"))
+            ticket["title"] = bug.findtext("short_desc")
+            reporter_elt = bug.find("reporter")
+            ticket["author"] = reporter_elt.get("name")
+            if ticket["author"] is None:
+                if "@" in reporter_elt.text:
+                    ticket["author"] = reporter_elt.text[
+                        : reporter_elt.text.find("@")
+                    ].title()
                 else:
-                    ticket['author'] = u'no name'
-            ticket['author_email'] = reporter_elt.text
-            assigned_to_elt = bug.find('assigned_to')
-            ticket['assigned_to_name'] = assigned_to_elt.get('name')
-            ticket['assigned_to_email'] = assigned_to_elt.text
-            ticket['cc_emails'] = [e.text for e in bug.findall('cc')]
-            ticket['priority'] = bug.findtext('priority').lower().strip()
-            ticket['severity'] = bug.findtext('bug_severity').lower().strip()
-            ticket['product'] = bug.findtext('product')
-            ticket['component'] = bug.findtext('component')
-            ticket['version'] = bug.findtext('version')
-            ticket['platform'] = bug.findtext('rep_platform')
-            ticket['os'] = bug.findtext('op_sys')
-            ticket['status'] = STATUS_MAP.get(bug.findtext('bug_status'), 'queued')
-            ticket['milestone'] = bug.findtext('target_milestone')
-
+                    ticket["author"] = u"no name"
+            ticket["author_email"] = reporter_elt.text
+            assigned_to_elt = bug.find("assigned_to")
+            ticket["assigned_to_name"] = assigned_to_elt.get("name")
+            ticket["assigned_to_email"] = assigned_to_elt.text
+            ticket["cc_emails"] = [e.text for e in bug.findall("cc")]
+            ticket["priority"] = bug.findtext("priority").lower().strip()
+            ticket["severity"] = bug.findtext("bug_severity").lower().strip()
+            ticket["product"] = bug.findtext("product")
+            ticket["component"] = bug.findtext("component")
+            ticket["version"] = bug.findtext("version")
+            ticket["platform"] = bug.findtext("rep_platform")
+            ticket["os"] = bug.findtext("op_sys")
+            ticket["status"] = STATUS_MAP.get(bug.findtext("bug_status"), "queued")
+            ticket["milestone"] = bug.findtext("target_milestone")
 
             body = None
             comments = []
-            for longdesc in bug.findall('long_desc'):
+            for longdesc in bug.findall("long_desc"):
                 if body is None:
-                    body = longdesc.findtext('thetext')
+                    body = longdesc.findtext("thetext")
                 else:
-                    who = longdesc.find('who')
-                    comment = {'id': longdesc.findtext('commentid'),
-                               'author_email': who.text,
-                               'published': date_utils.date_parse(longdesc.findtext('bug_when')),
-                               'author': who.get('name', who.text),
-                               'content': longdesc.findtext('thetext')}
+                    who = longdesc.find("who")
+                    comment = {
+                        "id": longdesc.findtext("commentid"),
+                        "author_email": who.text,
+                        "published": date_utils.date_parse(longdesc.findtext("bug_when")),
+                        "author": who.get("name", who.text),
+                        "content": longdesc.findtext("thetext"),
+                    }
                     comments.append(comment)
 
-            ticket['body'] = body
-            ticket['comments'] = comments
+            ticket["body"] = body
+            ticket["comments"] = comments
             tickets.append(ticket)
 
-        tickets.sort(key = lambda t: int(t['id']))
+        tickets.sort(key=lambda t: int(t["id"]))
         return (tickets, len(tickets))
 
 
 class BugzillaImport(object):
-
     def __init__(self, host):
         log.info(_(u"Bugilla Import plugin initialization"))
         self.host = host
-        host.plugins['TICKETS_IMPORT'].register('bugzilla', self.Import, SHORT_DESC, LONG_DESC)
+        host.plugins["TICKETS_IMPORT"].register(
+            "bugzilla", self.Import, SHORT_DESC, LONG_DESC
+        )
 
     def Import(self, client, location, options=None):
         if not os.path.isabs(location):
-            raise exceptions.DataError(u"An absolute path to XML data need to be given as location")
+            raise exceptions.DataError(
+                u"An absolute path to XML data need to be given as location"
+            )
         bugzilla_parser = BugzillaParser()
         # d = threads.deferToThread(bugzilla_parser.parse, location)
         d = defer.maybeDeferred(bugzilla_parser.parse, location)