~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/codehosting/inmemory.py

  • Committer: Launchpad Patch Queue Manager
  • Date: 2011-06-25 08:55:37 UTC
  • mfrom: (13287.1.8 bug-800652)
  • Revision ID: launchpad@pqm.canonical.com-20110625085537-moikyoo2pe98zs7r
[r=jcsackett, julian-edwards][bug=800634,
        800652] Enable and display overrides on sync package uploads.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright 2009-2011 Canonical Ltd.  This software is licensed under the
 
1
# Copyright 2009 Canonical Ltd.  This software is licensed under the
2
2
# GNU Affero General Public License version 3 (see the file LICENSE).
3
3
 
4
4
"""In-memory doubles of core codehosting objects."""
23
23
    )
24
24
from zope.interface import implementer
25
25
 
 
26
from canonical.database.constants import UTC_NOW
 
27
from canonical.launchpad.xmlrpc import faults
26
28
from lp.app.validators import LaunchpadValidationError
27
 
from lp.app.validators.name import valid_name
28
29
from lp.code.bzr import (
29
30
    BranchFormat,
30
31
    ControlFormat,
50
51
    ProductBranchTarget,
51
52
    )
52
53
from lp.code.xmlrpc.codehosting import datetime_from_tuple
53
 
from lp.registry.errors import InvalidName
54
54
from lp.registry.interfaces.pocket import PackagePublishingPocket
55
 
from lp.services.database.constants import UTC_NOW
56
55
from lp.services.utils import iter_split
57
56
from lp.services.xmlrpc import LaunchpadFault
58
57
from lp.testing.factory import ObjectFactory
59
 
from lp.xmlrpc import faults
60
58
 
61
59
 
62
60
class FakeStore:
196
194
        self.distroseries._linked_branches[self, pocket] = branch
197
195
 
198
196
 
199
 
class SourcePackageNameSet(ObjectSet):
200
 
 
201
 
    def new(self, name_string):
202
 
        if not valid_name(name_string):
203
 
            raise InvalidName(name_string)
204
 
        return self._add(FakeSourcePackageName(name_string))
205
 
 
206
 
 
207
197
@adapter(FakeSourcePackage)
208
198
@implementer(IBranchTarget)
209
199
def fake_source_package_to_branch_target(fake_package):
269
259
 
270
260
class FakePerson(FakeDatabaseObject):
271
261
    """Fake person object."""
272
 
    is_team = False
273
262
 
274
263
    def __init__(self, name):
275
264
        self.name = self.displayname = name
276
265
 
 
266
    def isTeam(self):
 
267
        return False
 
268
 
277
269
    def inTeam(self, person_or_team):
278
270
        if self is person_or_team:
279
271
            return True
280
 
        if not person_or_team.is_team:
 
272
        if not person_or_team.isTeam():
281
273
            return False
282
274
        return self in person_or_team._members
283
275
 
284
276
 
285
277
class FakeTeam(FakePerson):
286
278
    """Fake team."""
287
 
    is_team = True
288
279
 
289
280
    def __init__(self, name, members=None):
290
281
        super(FakeTeam, self).__init__(name)
293
284
        else:
294
285
            self._members = list(members)
295
286
 
 
287
    def isTeam(self):
 
288
        return True
 
289
 
296
290
 
297
291
class FakeProduct(FakeDatabaseObject):
298
292
    """Fake product."""
452
446
        self._distribution_set._add(distro)
453
447
        return distro
454
448
 
455
 
    def makeDistroSeries(self):
 
449
    def makeDistroRelease(self):
456
450
        distro = self.makeDistribution()
457
451
        distroseries_name = self.getUniqueString()
458
452
        distroseries = FakeDistroSeries(distroseries_name, distro)
459
453
        self._distroseries_set._add(distroseries)
460
454
        return distroseries
461
455
 
 
456
    makeDistroSeries = makeDistroRelease
 
457
 
462
458
    def makeSourcePackageName(self):
463
 
        return self._sourcepackagename_set.new(self.getUniqueString())
 
459
        sourcepackagename = FakeSourcePackageName(self.getUniqueString())
 
460
        self._sourcepackagename_set._add(sourcepackagename)
 
461
        return sourcepackagename
464
462
 
465
463
    def makeSourcePackage(self, distroseries=None, sourcepackagename=None):
466
464
        if distroseries is None:
467
 
            distroseries = self.makeDistroSeries()
 
465
            distroseries = self.makeDistroRelease()
468
466
        if sourcepackagename is None:
469
467
            sourcepackagename = self.makeSourcePackageName()
470
468
        package = FakeSourcePackage(sourcepackagename, distroseries)
663
661
            sourcepackagename = self._sourcepackagename_set.getByName(
664
662
                data['sourcepackagename'])
665
663
            if sourcepackagename is None:
666
 
                try:
667
 
                    sourcepackagename = self._sourcepackagename_set.new(
668
 
                        data['sourcepackagename'])
669
 
                except InvalidName:
670
 
                    raise faults.InvalidSourcePackageName(
671
 
                        data['sourcepackagename'])
 
664
                raise faults.NotFound(
 
665
                    "No such source package: '%s'."
 
666
                    % (data['sourcepackagename'],))
672
667
            sourcepackage = self._factory.makeSourcePackage(
673
668
                distroseries, sourcepackagename)
674
669
        else:
864
859
                if product:
865
860
                    branch = product.development_focus.branch
866
861
                else:
867
 
                    branch = self._branch_set._find(
868
 
                        unique_name=component_name)
 
862
                    branch = self._branch_set._find(unique_name=component_name)
869
863
            else:
870
864
                branch = self._branch_set._find(unique_name=first)
871
865
            if branch is not None:
897
891
        self._product_set = ObjectSet()
898
892
        self._distribution_set = ObjectSet()
899
893
        self._distroseries_set = ObjectSet()
900
 
        self._sourcepackagename_set = SourcePackageNameSet()
 
894
        self._sourcepackagename_set = ObjectSet()
901
895
        self._factory = FakeObjectFactory(
902
896
            self._branch_set, self._person_set, self._product_set,
903
897
            self._distribution_set, self._distroseries_set,