~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/testing/factory.py

Merge db-devel.

Show diffs side-by-side

added added

removed removed

Lines of Context:
68
68
    )
69
69
from canonical.database.sqlbase import flush_database_updates
70
70
from canonical.launchpad.database.account import Account
71
 
from canonical.launchpad.database.message import (
 
71
from lp.services.messages.model.message import (
72
72
    Message,
73
73
    MessageChunk,
74
74
    )
2365
2365
        versions=None,
2366
2366
        difference_type=DistroSeriesDifferenceType.DIFFERENT_VERSIONS,
2367
2367
        status=DistroSeriesDifferenceStatus.NEEDS_ATTENTION,
2368
 
        changelogs=None, set_base_version=False):
 
2368
        changelogs=None, set_base_version=False, parent_series=None):
2369
2369
        """Create a new distro series source package difference."""
2370
2370
        if derived_series is None:
2371
 
            parent_series = self.makeDistroSeries()
2372
 
            derived_series = self.makeDistroSeries(
 
2371
            dsp = self.makeDistroSeriesParent(
2373
2372
                parent_series=parent_series)
 
2373
            derived_series = dsp.derived_series
 
2374
            parent_series = dsp.parent_series
 
2375
        else:
 
2376
            if parent_series is None:
 
2377
                dsp = getUtility(IDistroSeriesParentSet).getByDerivedSeries(
 
2378
                    derived_series)
 
2379
                if dsp.count() == 0:
 
2380
                    new_dsp = self.makeDistroSeriesParent(
 
2381
                        derived_series=derived_series,
 
2382
                        parent_series=parent_series)
 
2383
                    parent_series = new_dsp.parent_series
 
2384
                else:
 
2385
                    parent_series = dsp[0].parent_series
2374
2386
 
2375
2387
        if source_package_name_str is None:
2376
2388
            source_package_name_str = self.getUniqueString('src-name')
2385
2397
 
2386
2398
        base_version = versions.get('base')
2387
2399
        if base_version is not None:
2388
 
            for series in [derived_series, derived_series.parent_series]:
 
2400
            for series in [derived_series, parent_series]:
2389
2401
                spr = self.makeSourcePackageRelease(
2390
2402
                    sourcepackagename=source_package_name,
2391
2403
                    version=base_version)
2410
2422
                version=versions.get('parent'),
2411
2423
                changelog=changelogs.get('parent'))
2412
2424
            self.makeSourcePackagePublishingHistory(
2413
 
                distroseries=derived_series.parent_series,
 
2425
                distroseries=parent_series,
2414
2426
                sourcepackagerelease=spr,
2415
2427
                status=PackagePublishingStatus.PUBLISHED)
2416
2428
 
2417
2429
        diff = getUtility(IDistroSeriesDifferenceSource).new(
2418
 
            derived_series, source_package_name)
 
2430
            derived_series, source_package_name, parent_series)
2419
2431
 
2420
2432
        removeSecurityProxy(diff).status = status
2421
2433
 
2442
2454
            distro_series_difference, owner, comment)
2443
2455
 
2444
2456
    def makeDistroSeriesParent(self, derived_series=None, parent_series=None,
2445
 
                               initialized=False):
 
2457
                               initialized=False, is_overlay=False,
 
2458
                               pocket=None, component=None):
2446
2459
        if parent_series is None:
2447
2460
            parent_series = self.makeDistroSeries()
2448
2461
        if derived_series is None:
2449
2462
            derived_series = self.makeDistroSeries()
2450
2463
        return getUtility(IDistroSeriesParentSet).new(
2451
 
            derived_series, parent_series, initialized)
 
2464
            derived_series, parent_series, initialized, is_overlay, pocket,
 
2465
            component)
2452
2466
 
2453
2467
    def makeDistroArchSeries(self, distroseries=None,
2454
2468
                             architecturetag=None, processorfamily=None,