diff --git a/buildd b/buildd index e19c162..47c8f93 100755 --- a/buildd +++ b/buildd @@ -27,7 +27,7 @@ import sys from optparse import OptionGroup from optparse import OptionParser from ubuntutools.lp.udtexceptions import SeriesNotFoundException, PackageNotFoundException -from ubuntutools.lp.lpapiwrapper import LpApiWrapper +from ubuntutools.lp.lpapiwrapper import LpApiWrapper, PersonTeam # Usage. usage = "%prog \n\n" @@ -140,7 +140,7 @@ if not options.batch: # Operations that are remaining may only be done by Ubuntu developers (retry) # or buildd admins (rescore). Check if the proper permissions are in place. - me = LpApiWrapper.getMe() + me = PersonTeam.getMe() if op == "rescore": necessaryPrivs = me.isLpTeamMember('launchpad-buildd-admins') if op == "retry": necessaryPrivs = me.canUploadPackage( ubuntu_archive, sources.getPackageName(), sources.getComponent()) @@ -211,7 +211,7 @@ if release and '-' in release: sys.exit(1) ubuntu_archive = LpApiWrapper.getUbuntuDistribution().getArchive() -me = LpApiWrapper.getMe() +me = PersonTeam.getMe() # Check permisions (part 1): Rescoring can only be done by buildd admins can_rescore = options.priority and me.isLpTeamMember('launchpad-buildd-admins') or False diff --git a/requestsync b/requestsync index 5065b58..a6b701c 100755 --- a/requestsync +++ b/requestsync @@ -5,7 +5,7 @@ # Authors: # Martin Pitt # Steve Kowalik -# Michael Bienia (python-launchpad-bugs support) +# Michael Bienia # Daniel Hahler # Iain Lane # Jonathan Davies @@ -38,7 +38,7 @@ from time import sleep # ubuntu-dev-tools modules. import ubuntutools.lp.libsupport as lp_libsupport import ubuntutools.lp.udtexceptions as udtexceptions -from ubuntutools.lp.lpapiwrapper import Launchpad, LpApiWrapper +from ubuntutools.lp.lpapiwrapper import Launchpad, LpApiWrapper, PersonTeam # https_proxy fix import ubuntutools.common import ubuntutools.packages @@ -363,7 +363,7 @@ def post_bug(source_package, subscribe, status, bugtitle, bugtext): #newly created bugreports have one task task = bug.bug_tasks[0] # Only members of ubuntu-bugcontrol can set importance - if LpApiWrapper.getMe().isLpTeamMember('ubuntu-bugcontrol'): + if PersonTeam.getMe().isLpTeamMember('ubuntu-bugcontrol'): task.importance = 'Wishlist' task.status = status task.lp_save() diff --git a/ubuntutools/lp/lpapiwrapper.py b/ubuntutools/lp/lpapiwrapper.py index 7e0489c..ecb6559 100644 --- a/ubuntutools/lp/lpapiwrapper.py +++ b/ubuntutools/lp/lpapiwrapper.py @@ -29,8 +29,6 @@ from launchpadlib.errors import HTTPError from launchpadlib.resource import Entry from udtexceptions import * -__all__ = ['LpApiWrapper'] - class Launchpad(object): ''' Singleton for LP API access. ''' __lp = None @@ -57,16 +55,6 @@ class LpApiWrapper(object): Wrapper around some common used LP API functions used in ubuntu-dev-tools. ''' - _me = None - - @classmethod - def getMe(cls): - ''' - Returns a PersonTeam object of the currently authenticated LP user. - ''' - if not cls._me: - cls._me = PersonTeam(Launchpad.me) - return cls._me @classmethod def getUbuntuDistribution(cls): @@ -112,7 +100,7 @@ class LpApiWrapper(object): except PackageNotFoundException: package = None - return cls.getMe().canUploadPackage(archive, package, component) + return PersonTeam.getMe().canUploadPackage(archive, package, component) # TODO: check if this is still needed after ArchiveReorg (or at all) @classmethod @@ -125,7 +113,7 @@ class LpApiWrapper(object): archive = cls.getUbuntuDistribution().getArchive() - return cls.getMe().canUploadPackage(archive, package, None) + return PersonTeam.getMe().canUploadPackage(archive, package, None) class MetaWrapper(type): @@ -429,6 +417,8 @@ class PersonTeam(BaseWrapper): ''' resource_type = ('https://api.edge.launchpad.net/beta/#person', 'https://api.edge.launchpad.net/beta/#team') + _me = None # the PersonTeam object of the currently authenticated LP user + def __init__(self, *args): # Don't share _upload_{pkg,comp} between different PersonTeams if '_upload_pkg' not in self.__dict__: @@ -454,6 +444,15 @@ class PersonTeam(BaseWrapper): cached = PersonTeam(Launchpad.people[person_or_team]) return cached + @classmethod + def getMe(cls): + ''' + Returns a PersonTeam object of the currently authenticated LP user. + ''' + if not cls._me: + cls._me = PersonTeam(Launchpad.me) + return cls._me + def isLpTeamMember(self, team): ''' Checks if the user is a member of a certain team on Launchpad.