[python-bugzilla] [PATCH] Fix bugzilla detection behind proxy

Jani Nikula jani.nikula at intel.com
Fri Mar 14 09:58:45 UTC 2014


Python requests handles proxying, use it also during bugzilla detection
phase. Don't bother with cookies at this point.
---
 bugzilla/__init__.py |    3 ++-
 bugzilla/base.py     |   15 ++++++++-------
 2 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/bugzilla/__init__.py b/bugzilla/__init__.py
index e6fdeef03566..95bf53875c1e 100644
--- a/bugzilla/__init__.py
+++ b/bugzilla/__init__.py
@@ -26,6 +26,7 @@ log = getLogger("bugzilla")
 
 from bugzilla.base import BugzillaBase as _BugzillaBase
 from bugzilla.base import BugzillaError
+from bugzilla.base import RequestsTransport
 from bugzilla.bugzilla3 import Bugzilla3, Bugzilla32, Bugzilla34, Bugzilla36
 from bugzilla.bugzilla4 import Bugzilla4, Bugzilla42, Bugzilla44
 from bugzilla.rhbugzilla import RHBugzilla, RHBugzilla3, RHBugzilla4
@@ -39,7 +40,7 @@ class NovellBugzilla(Bugzilla34):
 def getBugzillaClassForURL(url):
     url = Bugzilla3.fix_url(url)
     log.debug("Detecting subclass for %s", url)
-    s = ServerProxy(url)
+    s = ServerProxy(url, RequestsTransport(url))
     rhbz = False
     bzversion = ''
     c = None
diff --git a/bugzilla/base.py b/bugzilla/base.py
index bb7b9405bf1c..4553e1c3cdc7 100644
--- a/bugzilla/base.py
+++ b/bugzilla/base.py
@@ -108,7 +108,7 @@ def _build_cookiejar(cookiefile):
 class RequestsTransport(Transport):
     user_agent = 'Python/Bugzilla'
 
-    def __init__(self, url, cookiejar,
+    def __init__(self, url, cookiejar=None,
                  sslverify=True, sslcafile=None, debug=0):
         # pylint: disable=W0231
         # pylint does not handle multiple import of Transport well
@@ -128,7 +128,7 @@ class RequestsTransport(Transport):
 
         self.request_defaults = {
             'cert': sslcafile if self.use_https else None,
-            'cookies': cookiejar,
+            'cookies': cookiejar if cookiejar else None,
             'verify': sslverify,
             'headers': {
                 'Content-Type': 'text/xml',
@@ -157,12 +157,13 @@ class RequestsTransport(Transport):
             response.encoding = 'UTF-8'
 
             # update/set any cookies
-            for cookie in response.cookies:
-                self._cookiejar.set_cookie(cookie)
+            if self._cookiejar is not None:
+                for cookie in response.cookies:
+                    self._cookiejar.set_cookie(cookie)
 
-            if self._cookiejar.filename is not None:
-                # Save is required only if we have a filename
-                self._cookiejar.save()
+                if self._cookiejar.filename is not None:
+                    # Save is required only if we have a filename
+                    self._cookiejar.save()
 
             response.raise_for_status()
             return self.parse_response(response)
-- 
1.7.9.5



More information about the python-bugzilla mailing list