From 5c54609e23fca1104e195ad4755b6ca098db6759 Mon Sep 17 00:00:00 2001 From: Will Woods Date: Fri, 8 Aug 2008 09:59:14 -0400 Subject: Move multicall methods into rhbugzilla, since normal bugzilla instances don't support it --- bugzilla/base.py | 30 ++++++++---------------------- bugzilla/rhbugzilla.py | 22 ++++++++++++++++++++++ 2 files changed, 30 insertions(+), 22 deletions(-) (limited to 'bugzilla') diff --git a/bugzilla/base.py b/bugzilla/base.py index 6a56fac..c9eaac9 100644 --- a/bugzilla/base.py +++ b/bugzilla/base.py @@ -396,36 +396,22 @@ class BugzillaBase(object): def _getbug(self,id): '''IMPLEMENT ME: Return a dict of full bug info for the given bug id''' raise NotImplementedError + def _getbugs(self,idlist): + '''IMPLEMENT ME: Return a list of full bug dicts, one for each of the + given bug ids''' + raise NotImplementedError def _getbugsimple(self,id): '''IMPLEMENT ME: Return a short dict of simple bug info for the given bug id''' raise NotImplementedError + def _getbugssimple(self,idlist): + '''IMPLEMENT ME: Return a list of short bug dicts, one for each of the + given bug ids''' + raise NotImplementedError def _query(self,query): '''IMPLEMENT ME: Query bugzilla and return a list of matching bugs.''' raise NotImplementedError - # Multicall methods - def _getbugs(self,idlist): - '''Like _getbug, but takes a list of ids and returns a corresponding - list of bug objects. Uses multicall for awesome speed.''' - mc = self._multicall() - for id in idlist: - mc._getbug(id) - raw_results = mc.run() - del mc - # check results for xmlrpc errors, and replace them with None - return replace_getbug_errors_with_None(raw_results) - def _getbugssimple(self,idlist): - '''Like _getbugsimple, but takes a list of ids and returns a - corresponding list of bug objects. Uses multicall for awesome speed.''' - mc = self._multicall() - for id in idlist: - mc._getbugsimple(id) - raw_results = mc.run() - del mc - # check results for xmlrpc errors, and replace them with None - return replace_getbug_errors_with_None(raw_results) - # these return Bug objects def getbug(self,id): '''Return a Bug object with the full complement of bug data diff --git a/bugzilla/rhbugzilla.py b/bugzilla/rhbugzilla.py index 09b09a4..d19c863 100644 --- a/bugzilla/rhbugzilla.py +++ b/bugzilla/rhbugzilla.py @@ -74,6 +74,28 @@ class RHBugzilla(bugzilla.base.BugzillaBase): raise xmlrpclib.Fault("Server","Could not load bug %s" % id) else: return r + # Multicall methods + def _getbugs(self,idlist): + '''Like _getbug, but takes a list of ids and returns a corresponding + list of bug objects. Uses multicall for awesome speed.''' + mc = self._multicall() + for id in idlist: + mc._getbug(id) + raw_results = mc.run() + del mc + # check results for xmlrpc errors, and replace them with None + return replace_getbug_errors_with_None(raw_results) + def _getbugssimple(self,idlist): + '''Like _getbugsimple, but takes a list of ids and returns a + corresponding list of bug objects. Uses multicall for awesome speed.''' + mc = self._multicall() + for id in idlist: + mc._getbugsimple(id) + raw_results = mc.run() + del mc + # check results for xmlrpc errors, and replace them with None + return replace_getbug_errors_with_None(raw_results) + def _query(self,query): '''Query bugzilla and return a list of matching bugs. query must be a dict with fields like those in in querydata['fields']. -- cgit