Merge lp:~adiroiban/launchpad/bug-496352-series-status-refactor into lp:launchpad

Proposed by Adi Roiban
Status: Merged
Approved by: Aaron Bentley
Approved revision: not available
Merged at revision: not available
Proposed branch: lp:~adiroiban/launchpad/bug-496352-series-status-refactor
Merge into: lp:launchpad
Diff against target: 2059 lines (+333/-322)
58 files modified
lib/canonical/launchpad/doc/security-proxies.txt (+3/-3)
lib/canonical/launchpad/interfaces/__init__.py (+1/-0)
lib/canonical/launchpad/vocabularies/dbobjects.py (+3/-3)
lib/lp/archivepublisher/tests/test_dominator.py (+2/-2)
lib/lp/archivepublisher/tests/test_publisher.py (+4/-4)
lib/lp/archivepublisher/tests/util.py (+2/-2)
lib/lp/archiveuploader/tests/test_permission.py (+2/-2)
lib/lp/archiveuploader/tests/test_uploadprocessor.py (+10/-10)
lib/lp/archiveuploader/uploadpolicy.py (+2/-3)
lib/lp/bugs/doc/bug-nomination.txt (+2/-2)
lib/lp/bugs/model/bug.py (+3/-3)
lib/lp/code/browser/branchlisting.py (+2/-2)
lib/lp/code/tests/helpers.py (+9/-9)
lib/lp/code/tests/test_branch.py (+3/-3)
lib/lp/registry/browser/distribution.py (+3/-3)
lib/lp/registry/browser/distroseries.py (+11/-11)
lib/lp/registry/browser/product.py (+3/-3)
lib/lp/registry/browser/productseries.py (+2/-2)
lib/lp/registry/browser/tests/browser-views.txt (+4/-4)
lib/lp/registry/browser/tests/distributionsourcepackage-views.txt (+2/-2)
lib/lp/registry/browser/tests/packaging-views.txt (+3/-3)
lib/lp/registry/browser/tests/productseries-views.txt (+2/-2)
lib/lp/registry/doc/distroseries.txt (+27/-27)
lib/lp/registry/doc/product.txt (+3/-4)
lib/lp/registry/interfaces/distroseries.py (+3/-70)
lib/lp/registry/interfaces/productseries.py (+3/-3)
lib/lp/registry/interfaces/series.py (+78/-0)
lib/lp/registry/model/distribution.py (+11/-10)
lib/lp/registry/model/distroseries.py (+25/-24)
lib/lp/registry/model/productseries.py (+3/-3)
lib/lp/registry/stories/distribution/xx-distribution-packages.txt (+3/-3)
lib/lp/registry/stories/productseries/xx-productseries-series.txt (+2/-2)
lib/lp/registry/tests/test_distribution.py (+2/-2)
lib/lp/registry/tests/test_sourcepackage.py (+3/-3)
lib/lp/soyuz/browser/archive.py (+2/-2)
lib/lp/soyuz/doc/build.txt (+3/-3)
lib/lp/soyuz/doc/buildd-slavescanner.txt (+2/-2)
lib/lp/soyuz/doc/nascentupload-announcements.txt (+8/-8)
lib/lp/soyuz/doc/nascentupload.txt (+4/-4)
lib/lp/soyuz/doc/package-diff.txt (+2/-2)
lib/lp/soyuz/doc/soyuz-set-of-uploads.txt (+3/-3)
lib/lp/soyuz/doc/uploadpolicy.txt (+2/-2)
lib/lp/soyuz/scripts/buildd.py (+2/-2)
lib/lp/soyuz/scripts/ftpmaster.py (+7/-7)
lib/lp/soyuz/scripts/tests/test_copypackage.py (+2/-2)
lib/lp/soyuz/scripts/tests/test_lpquerydistro.py (+2/-2)
lib/lp/soyuz/scripts/tests/test_obsoletedistroseries.py (+3/-3)
lib/lp/soyuz/scripts/tests/test_queue.py (+3/-3)
lib/lp/soyuz/tests/test_packageset.py (+4/-4)
lib/lp/soyuz/tests/test_packageupload.py (+3/-3)
lib/lp/soyuz/tests/test_publishing_top_level_api.py (+10/-10)
lib/lp/testing/factory.py (+10/-9)
lib/lp/translations/browser/distribution.py (+2/-2)
lib/lp/translations/browser/tests/distroseries-views.txt (+2/-2)
lib/lp/translations/model/translationimportqueue.py (+3/-3)
lib/lp/translations/scripts/remove_obsolete_translations.py (+7/-7)
lib/lp/translations/templates/pofile-details.pt (+4/-6)
lib/lp/translations/tests/test_autoapproval.py (+2/-2)
To merge this branch: bzr merge lp:~adiroiban/launchpad/bug-496352-series-status-refactor
Reviewer Review Type Date Requested Status
Aaron Bentley (community) Approve
Review via email: mp+16108@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Adi Roiban (adiroiban) wrote :
Download full text (3.3 KiB)

= Bug 496352 =
Since DistroSeriesStatus is also used for ProductSeries, it should be renamed and moved to a dedicated file.

This is the note from Salgado
# XXX: salgado, 2008-06-02: We should use a more generic name here as this
# enum is used in ProductSeries.status as well.

== Proposed fix ==

Just rename the class DistroSeriesStatus to SeriesStatus and create a new module Series to host it (in the future it can contain any other common classes (interfaces).

== Implementation details ==

After touching those files, now lint complain about them.
My changes should have not affect any of the reported problems.

Any hint in fixing them is much appreciated.

== Tests ==
A full test should be ran

== Demo and Q/A ==

After these changes nothings has to be changed from the users point of view.

= Lint =

I think there is a problem with pylint setup as it does not pick up lazr modules.

Also I don't know why this interface is not accepted lib/lp/registry/interfaces/distroseries.py

= Launchpad lint =

Checking for conflicts. and issues in doctests and templates.
Running jslint, xmllint, pyflakes, and pylint.
Using normal rules.

Linting changed files:
  lib/lp/archiveuploader/uploadpolicy.py
  lib/lp/code/tests/test_branch.py
  lib/lp/registry/interfaces/distroseries.py
  lib/lp/registry/model/distribution.py
  lib/lp/testing/factory.py
  lib/lp/translations/browser/product.py
  lib/lp/translations/stories/standalone/xx-productseries-translations.txt

== Pylint notices ==

lib/lp/registry/interfaces/distroseries.py
    22: [F0401] Unable to import 'lazr.enum' (No module named enum)
    49: [F0401] Unable to import 'lazr.restful.fields' (No module named restful)
    50: [F0401] Unable to import 'lazr.restful.declarations' (No module named restful)
    115: [E1002, DistroSeriesVersionField._validate] Use super on an old style class
    426: [C0322, IDistroSeriesPublic.getPackageUploads] Operator not preceded by a space
    description=_("Return items that are more recent than this "
    ^
    "timestamp."),
    required=False),
    status=Choice(

    vocabulary=DBEnumeratedType,
    title=_("Package Upload Status"),
    description=_("Return only items that have this status."),
    required=False),
    archive=Reference(

    schema=Interface,
    title=_("Archive"),
    description=_("Return only items for this archive."),
    required=False),
    pocket=Choice(

    vocabulary=DBEnumeratedType,
    title=_("Pocket"),
    description=_("Return only items targeted to this pocket"),
    required=False),
    custom_type=Choice(

    vocabulary=DBEnumeratedType,
    title=_("Custom Type"),
    description=_("Return only items with custom files of this "
    "type."),
    required=False),
    )

    @operation_returns_collection_of(Interface)
    @export_read_operation()
    def getPackageUploads(created_since_date, status, archive, pocket,
    custom_type):

lib/lp/testing/factory.py
    17: [F0401] Unable to import 'email.Encoders' (No module named Encoders)
    18: [F0401] Unable to import 'email.Utils' (No module named Utils)
    19: [F0401] Unable to import 'email.Message' (No module named Message)
    20: [F...

Read more...

Revision history for this message
Adi Roiban (adiroiban) wrote :

I forgot one thing.

We also have lp.registry.interfaces.distroseries.SeriesStatusMixin .
This has only internal usage for DistroSeries... maybe we should also move it or renamed it to DistroSeriesStatusMixin

Revision history for this message
Aaron Bentley (abentley) wrote :

This looks like a reasonable, mechanical change.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/canonical/launchpad/doc/security-proxies.txt'
--- lib/canonical/launchpad/doc/security-proxies.txt 2009-08-13 15:12:16 +0000
+++ lib/canonical/launchpad/doc/security-proxies.txt 2010-01-05 16:22:16 +0000
@@ -49,13 +49,13 @@
49DB schema objects should be comparable correctly when proxied...49DB schema objects should be comparable correctly when proxied...
5050
51 >>> from canonical.launchpad.interfaces import (51 >>> from canonical.launchpad.interfaces import (
52 ... DistroSeriesStatus, IDistroSeriesSet)52 ... SeriesStatus, IDistroSeriesSet)
53 >>> hoary = getUtility(IDistroSeriesSet).get(3)53 >>> hoary = getUtility(IDistroSeriesSet).get(3)
54 >>> print hoary.status.name54 >>> print hoary.status.name
55 DEVELOPMENT55 DEVELOPMENT
56 >>> hoary.status == DistroSeriesStatus.DEVELOPMENT56 >>> hoary.status == SeriesStatus.DEVELOPMENT
57 True57 True
58 >>> hoary.status is DistroSeriesStatus.DEVELOPMENT58 >>> hoary.status is SeriesStatus.DEVELOPMENT
59 False59 False
6060
61Finally, tear down the test:61Finally, tear down the test:
6262
=== modified file 'lib/canonical/launchpad/interfaces/__init__.py'
--- lib/canonical/launchpad/interfaces/__init__.py 2009-12-05 18:37:28 +0000
+++ lib/canonical/launchpad/interfaces/__init__.py 2010-01-05 16:22:16 +0000
@@ -57,6 +57,7 @@
57from lp.registry.interfaces.distributionsourcepackage import *57from lp.registry.interfaces.distributionsourcepackage import *
58from lp.soyuz.interfaces.distributionsourcepackagecache import *58from lp.soyuz.interfaces.distributionsourcepackagecache import *
59from lp.soyuz.interfaces.distributionsourcepackagerelease import *59from lp.soyuz.interfaces.distributionsourcepackagerelease import *
60from lp.registry.interfaces.series import *
60from lp.soyuz.interfaces.distroarchseries import *61from lp.soyuz.interfaces.distroarchseries import *
61from lp.soyuz.interfaces.distroarchseriesbinarypackage import *62from lp.soyuz.interfaces.distroarchseriesbinarypackage import *
62from lp.soyuz.interfaces.distroarchseriesbinarypackagerelease\63from lp.soyuz.interfaces.distroarchseriesbinarypackagerelease\
6364
=== modified file 'lib/canonical/launchpad/vocabularies/dbobjects.py'
--- lib/canonical/launchpad/vocabularies/dbobjects.py 2009-10-26 18:40:04 +0000
+++ lib/canonical/launchpad/vocabularies/dbobjects.py 2010-01-05 16:22:16 +0000
@@ -90,8 +90,8 @@
90from lp.code.interfaces.branch import IBranch90from lp.code.interfaces.branch import IBranch
91from lp.code.interfaces.branchcollection import IAllBranches91from lp.code.interfaces.branchcollection import IAllBranches
92from lp.registry.interfaces.distribution import IDistribution92from lp.registry.interfaces.distribution import IDistribution
93from lp.registry.interfaces.distroseries import (93from lp.registry.interfaces.series import SeriesStatus
94 DistroSeriesStatus, IDistroSeries)94from lp.registry.interfaces.distroseries import IDistroSeries
95from lp.registry.interfaces.person import IPerson95from lp.registry.interfaces.person import IPerson
96from lp.registry.interfaces.product import IProduct96from lp.registry.interfaces.product import IProduct
97from lp.registry.interfaces.productseries import IProductSeries97from lp.registry.interfaces.productseries import IProductSeries
@@ -780,7 +780,7 @@
780 """Return all non-obsolete distribution series"""780 """Return all non-obsolete distribution series"""
781 return [781 return [
782 series for series in shortlist(self.distribution.series)782 series for series in shortlist(self.distribution.series)
783 if series.status != DistroSeriesStatus.OBSOLETE]783 if series.status != SeriesStatus.OBSOLETE]
784784
785 def _queryNominatableObjectByName(self, name):785 def _queryNominatableObjectByName(self, name):
786 """See BugNominatableSeriesVocabularyBase."""786 """See BugNominatableSeriesVocabularyBase."""
787787
=== modified file 'lib/lp/archivepublisher/tests/test_dominator.py'
--- lib/lp/archivepublisher/tests/test_dominator.py 2009-08-28 07:34:44 +0000
+++ lib/lp/archivepublisher/tests/test_dominator.py 2010-01-05 16:22:16 +0000
@@ -14,7 +14,7 @@
14from lp.archivepublisher.domination import Dominator14from lp.archivepublisher.domination import Dominator
15from lp.archivepublisher.publishing import Publisher15from lp.archivepublisher.publishing import Publisher
16from canonical.database.sqlbase import flush_database_updates16from canonical.database.sqlbase import flush_database_updates
17from lp.registry.interfaces.distroseries import DistroSeriesStatus17from lp.registry.interfaces.series import SeriesStatus
18from lp.soyuz.interfaces.component import IComponentSet18from lp.soyuz.interfaces.component import IComponentSet
19from lp.registry.interfaces.person import IPersonSet19from lp.registry.interfaces.person import IPersonSet
20from lp.registry.interfaces.pocket import PackagePublishingPocket20from lp.registry.interfaces.pocket import PackagePublishingPocket
@@ -404,7 +404,7 @@
404 def setUp(self):404 def setUp(self):
405 TestDomination.setUp(self)405 TestDomination.setUp(self)
406 self.ubuntutest['breezy-autotest'].status = (406 self.ubuntutest['breezy-autotest'].status = (
407 DistroSeriesStatus.OBSOLETE)407 SeriesStatus.OBSOLETE)
408408
409409
410def test_suite():410def test_suite():
411411
=== modified file 'lib/lp/archivepublisher/tests/test_publisher.py'
--- lib/lp/archivepublisher/tests/test_publisher.py 2009-12-14 17:32:06 +0000
+++ lib/lp/archivepublisher/tests/test_publisher.py 2010-01-05 16:22:16 +0000
@@ -30,7 +30,7 @@
30from lp.soyuz.interfaces.binarypackagerelease import (30from lp.soyuz.interfaces.binarypackagerelease import (
31 BinaryPackageFormat)31 BinaryPackageFormat)
32from lp.registry.interfaces.distribution import IDistributionSet32from lp.registry.interfaces.distribution import IDistributionSet
33from lp.registry.interfaces.distroseries import DistroSeriesStatus33from lp.registry.interfaces.series import SeriesStatus
34from canonical.launchpad.interfaces.gpghandler import IGPGHandler34from canonical.launchpad.interfaces.gpghandler import IGPGHandler
35from lp.registry.interfaces.person import IPersonSet35from lp.registry.interfaces.person import IPersonSet
36from lp.registry.interfaces.pocket import PackagePublishingPocket36from lp.registry.interfaces.pocket import PackagePublishingPocket
@@ -137,7 +137,7 @@
137 distroseries is always allowed, so check for that here.137 distroseries is always allowed, so check for that here.
138 """138 """
139 archive = self.ubuntutest.getArchiveByComponent('partner')139 archive = self.ubuntutest.getArchiveByComponent('partner')
140 self.ubuntutest['breezy-autotest'].status = DistroSeriesStatus.CURRENT140 self.ubuntutest['breezy-autotest'].status = SeriesStatus.CURRENT
141 pub_config = getPubConfig(archive)141 pub_config = getPubConfig(archive)
142 pub_config.setupArchiveDirs()142 pub_config.setupArchiveDirs()
143 disk_pool = DiskPool(143 disk_pool = DiskPool(
@@ -201,7 +201,7 @@
201 PackagePublishingPocket.UPDATES)])201 PackagePublishingPocket.UPDATES)])
202202
203 self.ubuntutest['breezy-autotest'].status = (203 self.ubuntutest['breezy-autotest'].status = (
204 DistroSeriesStatus.CURRENT)204 SeriesStatus.CURRENT)
205205
206 pub_source = self.getPubSource(206 pub_source = self.getPubSource(
207 filecontent='foo',207 filecontent='foo',
@@ -645,7 +645,7 @@
645 # If the distroseries is CURRENT, then the release pocket is not645 # If the distroseries is CURRENT, then the release pocket is not
646 # marked as dirty.646 # marked as dirty.
647 self.ubuntutest['breezy-autotest'].status = (647 self.ubuntutest['breezy-autotest'].status = (
648 DistroSeriesStatus.CURRENT)648 SeriesStatus.CURRENT)
649649
650 publisher.dirty_pockets = set()650 publisher.dirty_pockets = set()
651 publisher.A2_markPocketsWithDeletionsDirty()651 publisher.A2_markPocketsWithDeletionsDirty()
652652
=== modified file 'lib/lp/archivepublisher/tests/util.py'
--- lib/lp/archivepublisher/tests/util.py 2009-10-26 18:40:04 +0000
+++ lib/lp/archivepublisher/tests/util.py 2010-01-05 16:22:16 +0000
@@ -8,7 +8,7 @@
8# Utility functions/classes for testing the archive publisher.8# Utility functions/classes for testing the archive publisher.
99
10from lp.archivepublisher.tests import datadir10from lp.archivepublisher.tests import datadir
11from canonical.launchpad.interfaces import DistroSeriesStatus11from canonical.launchpad.interfaces import SeriesStatus
12from lp.registry.interfaces.pocket import PackagePublishingPocket12from lp.registry.interfaces.pocket import PackagePublishingPocket
1313
14__all__ = ['FakeLogger']14__all__ = ['FakeLogger']
@@ -44,7 +44,7 @@
44 self.distribution = distro44 self.distribution = distro
45 self.architectures = [FakeDistroArchSeries(self, "i386"),45 self.architectures = [FakeDistroArchSeries(self, "i386"),
46 FakeDistroArchSeries(self, "powerpc")]46 FakeDistroArchSeries(self, "powerpc")]
47 self.status = DistroSeriesStatus.DEVELOPMENT47 self.status = SeriesStatus.DEVELOPMENT
48 self.distribution.registerSeries(self)48 self.distribution.registerSeries(self)
4949
5050
5151
=== modified file 'lib/lp/archiveuploader/tests/test_permission.py'
--- lib/lp/archiveuploader/tests/test_permission.py 2009-11-20 22:22:53 +0000
+++ lib/lp/archiveuploader/tests/test_permission.py 2010-01-05 16:22:16 +0000
@@ -14,7 +14,7 @@
1414
15from lp.archiveuploader.permission import (15from lp.archiveuploader.permission import (
16 check_upload_to_archive, components_valid_for)16 check_upload_to_archive, components_valid_for)
17from lp.registry.interfaces.distroseries import DistroSeriesStatus17from lp.registry.interfaces.series import SeriesStatus
18from lp.registry.interfaces.pocket import PackagePublishingPocket18from lp.registry.interfaces.pocket import PackagePublishingPocket
19from lp.soyuz.interfaces.archive import ArchivePurpose19from lp.soyuz.interfaces.archive import ArchivePurpose
20from lp.soyuz.interfaces.archivepermission import IArchivePermissionSet20from lp.soyuz.interfaces.archivepermission import IArchivePermissionSet
@@ -131,7 +131,7 @@
131 purpose=ArchivePurpose.PPA, owner=person)131 purpose=ArchivePurpose.PPA, owner=person)
132 spn = self.factory.makeSourcePackageName()132 spn = self.factory.makeSourcePackageName()
133 distroseries = self.factory.makeDistroSeries(133 distroseries = self.factory.makeDistroSeries(
134 status=DistroSeriesStatus.CURRENT)134 status=SeriesStatus.CURRENT)
135 self.assertCanUpload(135 self.assertCanUpload(
136 person, spn, ppa, None, distroseries=distroseries)136 person, spn, ppa, None, distroseries=distroseries)
137137
138138
=== modified file 'lib/lp/archiveuploader/tests/test_uploadprocessor.py'
--- lib/lp/archiveuploader/tests/test_uploadprocessor.py 2009-11-18 02:58:23 +0000
+++ lib/lp/archiveuploader/tests/test_uploadprocessor.py 2010-01-05 16:22:16 +0000
@@ -38,7 +38,7 @@
38 SourcePackageRelease)38 SourcePackageRelease)
39from canonical.launchpad.ftests import import_public_test_keys39from canonical.launchpad.ftests import import_public_test_keys
40from lp.registry.interfaces.distribution import IDistributionSet40from lp.registry.interfaces.distribution import IDistributionSet
41from lp.registry.interfaces.distroseries import DistroSeriesStatus41from lp.registry.interfaces.series import SeriesStatus
42from lp.registry.interfaces.pocket import PackagePublishingPocket42from lp.registry.interfaces.pocket import PackagePublishingPocket
43from lp.registry.interfaces.sourcepackage import SourcePackageFileType43from lp.registry.interfaces.sourcepackage import SourcePackageFileType
44from lp.soyuz.interfaces.archive import ArchivePurpose, IArchiveSet44from lp.soyuz.interfaces.archive import ArchivePurpose, IArchiveSet
@@ -493,7 +493,7 @@
493493
494 # Make ubuntu/breezy a frozen distro, so a source upload for an494 # Make ubuntu/breezy a frozen distro, so a source upload for an
495 # existing package will be allowed, but unapproved.495 # existing package will be allowed, but unapproved.
496 self.breezy.status = DistroSeriesStatus.FROZEN496 self.breezy.status = SeriesStatus.FROZEN
497 self.layer.txn.commit()497 self.layer.txn.commit()
498498
499 # Upload a newer version of bar.499 # Upload a newer version of bar.
@@ -576,7 +576,7 @@
576 See bug 369512.576 See bug 369512.
577 """577 """
578 self._checkCopyArchiveUploadToDistro(578 self._checkCopyArchiveUploadToDistro(
579 PackagePublishingPocket.RELEASE, DistroSeriesStatus.CURRENT)579 PackagePublishingPocket.RELEASE, SeriesStatus.CURRENT)
580580
581 def testCopyArchiveUploadToSupportedDistro(self):581 def testCopyArchiveUploadToSupportedDistro(self):
582 """Check binary copy archive uploads to RELEASE pockets.582 """Check binary copy archive uploads to RELEASE pockets.
@@ -588,7 +588,7 @@
588 See bug 369512.588 See bug 369512.
589 """589 """
590 self._checkCopyArchiveUploadToDistro(590 self._checkCopyArchiveUploadToDistro(
591 PackagePublishingPocket.RELEASE, DistroSeriesStatus.SUPPORTED)591 PackagePublishingPocket.RELEASE, SeriesStatus.SUPPORTED)
592592
593 def testDuplicatedBinaryUploadGetsRejected(self):593 def testDuplicatedBinaryUploadGetsRejected(self):
594 """The upload processor rejects duplicated binary uploads.594 """The upload processor rejects duplicated binary uploads.
@@ -964,7 +964,7 @@
964 def testPartnerUploadToProposedPocket(self):964 def testPartnerUploadToProposedPocket(self):
965 """Upload a partner package to the proposed pocket."""965 """Upload a partner package to the proposed pocket."""
966 self.setupBreezy()966 self.setupBreezy()
967 self.breezy.status = DistroSeriesStatus.CURRENT967 self.breezy.status = SeriesStatus.CURRENT
968 self.layer.txn.commit()968 self.layer.txn.commit()
969 self.options.context = 'insecure'969 self.options.context = 'insecure'
970 uploadprocessor = UploadProcessor(970 uploadprocessor = UploadProcessor(
@@ -983,7 +983,7 @@
983 distroseries is allowed.983 distroseries is allowed.
984 """984 """
985 self.setupBreezy()985 self.setupBreezy()
986 self.breezy.status = DistroSeriesStatus.CURRENT986 self.breezy.status = SeriesStatus.CURRENT
987 self.layer.txn.commit()987 self.layer.txn.commit()
988 self.options.context = 'insecure'988 self.options.context = 'insecure'
989 uploadprocessor = UploadProcessor(989 uploadprocessor = UploadProcessor(
@@ -1029,21 +1029,21 @@
10291029
1030 # Check unstable states:1030 # Check unstable states:
10311031
1032 self.breezy.status = DistroSeriesStatus.DEVELOPMENT1032 self.breezy.status = SeriesStatus.DEVELOPMENT
1033 self.layer.txn.commit()1033 self.layer.txn.commit()
1034 self._uploadPartnerToNonReleasePocketAndCheckFail()1034 self._uploadPartnerToNonReleasePocketAndCheckFail()
10351035
1036 self.breezy.status = DistroSeriesStatus.EXPERIMENTAL1036 self.breezy.status = SeriesStatus.EXPERIMENTAL
1037 self.layer.txn.commit()1037 self.layer.txn.commit()
1038 self._uploadPartnerToNonReleasePocketAndCheckFail()1038 self._uploadPartnerToNonReleasePocketAndCheckFail()
10391039
1040 # Check stable states:1040 # Check stable states:
10411041
1042 self.breezy.status = DistroSeriesStatus.CURRENT1042 self.breezy.status = SeriesStatus.CURRENT
1043 self.layer.txn.commit()1043 self.layer.txn.commit()
1044 self._uploadPartnerToNonReleasePocketAndCheckFail()1044 self._uploadPartnerToNonReleasePocketAndCheckFail()
10451045
1046 self.breezy.status = DistroSeriesStatus.SUPPORTED1046 self.breezy.status = SeriesStatus.SUPPORTED
1047 self.layer.txn.commit()1047 self.layer.txn.commit()
1048 self._uploadPartnerToNonReleasePocketAndCheckFail()1048 self._uploadPartnerToNonReleasePocketAndCheckFail()
10491049
10501050
=== modified file 'lib/lp/archiveuploader/uploadpolicy.py'
--- lib/lp/archiveuploader/uploadpolicy.py 2009-11-24 23:12:23 +0000
+++ lib/lp/archiveuploader/uploadpolicy.py 2010-01-05 16:22:16 +0000
@@ -11,9 +11,8 @@
1111
12from canonical.launchpad.interfaces import ILaunchpadCelebrities12from canonical.launchpad.interfaces import ILaunchpadCelebrities
13from lp.registry.interfaces.distribution import IDistributionSet13from lp.registry.interfaces.distribution import IDistributionSet
14from lp.registry.interfaces.distroseries import DistroSeriesStatus14from lp.registry.interfaces.series import SeriesStatus
15from lp.registry.interfaces.pocket import PackagePublishingPocket15from lp.registry.interfaces.pocket import PackagePublishingPocket
16from lp.soyuz.interfaces.archive import ArchivePurpose
1716
1817
19# Number of seconds in an hour (used later)18# Number of seconds in an hour (used later)
@@ -295,7 +294,7 @@
295294
296 if self.pocket == PackagePublishingPocket.RELEASE:295 if self.pocket == PackagePublishingPocket.RELEASE:
297 if (self.distroseries.status !=296 if (self.distroseries.status !=
298 DistroSeriesStatus.FROZEN):297 SeriesStatus.FROZEN):
299 return True298 return True
300 return False299 return False
301300
302301
=== modified file 'lib/lp/bugs/doc/bug-nomination.txt'
--- lib/lp/bugs/doc/bug-nomination.txt 2009-10-26 18:40:04 +0000
+++ lib/lp/bugs/doc/bug-nomination.txt 2010-01-05 16:22:16 +0000
@@ -640,12 +640,12 @@
640NominationSeriesObsoleteError. Let's make a new obsolete distroseries640NominationSeriesObsoleteError. Let's make a new obsolete distroseries
641to demonstrate.641to demonstrate.
642642
643 >>> from canonical.launchpad.interfaces import DistroSeriesStatus643 >>> from canonical.launchpad.interfaces import SeriesStatus
644644
645 >>> login("foo.bar@canonical.com")645 >>> login("foo.bar@canonical.com")
646 >>> ubuntu_edgy = factory.makeDistroRelease(646 >>> ubuntu_edgy = factory.makeDistroRelease(
647 ... distribution=ubuntu, version='6.10',647 ... distribution=ubuntu, version='6.10',
648 ... status=DistroSeriesStatus.OBSOLETE)648 ... status=SeriesStatus.OBSOLETE)
649 >>> login("no-priv@canonical.com")649 >>> login("no-priv@canonical.com")
650650
651 >>> bug_one.addNomination(target=ubuntu_edgy, owner=no_privs)651 >>> bug_one.addNomination(target=ubuntu_edgy, owner=no_privs)
652652
=== modified file 'lib/lp/bugs/model/bug.py'
--- lib/lp/bugs/model/bug.py 2009-12-14 15:25:55 +0000
+++ lib/lp/bugs/model/bug.py 2010-01-05 16:22:16 +0000
@@ -90,8 +90,8 @@
90from lp.registry.interfaces.distribution import IDistribution90from lp.registry.interfaces.distribution import IDistribution
91from lp.registry.interfaces.distributionsourcepackage import (91from lp.registry.interfaces.distributionsourcepackage import (
92 IDistributionSourcePackage)92 IDistributionSourcePackage)
93from lp.registry.interfaces.distroseries import (93from lp.registry.interfaces.series import SeriesStatus
94 DistroSeriesStatus, IDistroSeries)94from lp.registry.interfaces.distroseries import IDistroSeries
95from lp.registry.interfaces.person import IPersonSet95from lp.registry.interfaces.person import IPersonSet
96from lp.registry.interfaces.person import validate_public_person96from lp.registry.interfaces.person import validate_public_person
97from lp.registry.interfaces.product import IProduct97from lp.registry.interfaces.product import IProduct
@@ -1086,7 +1086,7 @@
1086 productseries = None1086 productseries = None
1087 if IDistroSeries.providedBy(target):1087 if IDistroSeries.providedBy(target):
1088 distroseries = target1088 distroseries = target
1089 if target.status == DistroSeriesStatus.OBSOLETE:1089 if target.status == SeriesStatus.OBSOLETE:
1090 raise NominationSeriesObsoleteError(1090 raise NominationSeriesObsoleteError(
1091 "%s is an obsolete series." % target.bugtargetdisplayname)1091 "%s is an obsolete series." % target.bugtargetdisplayname)
1092 else:1092 else:
10931093
=== modified file 'lib/lp/code/browser/branchlisting.py'
--- lib/lp/code/browser/branchlisting.py 2009-11-11 01:53:33 +0000
+++ lib/lp/code/browser/branchlisting.py 2010-01-05 16:22:16 +0000
@@ -85,7 +85,7 @@
85 IFindOfficialBranchLinks)85 IFindOfficialBranchLinks)
86from lp.registry.browser.product import (86from lp.registry.browser.product import (
87 ProductDownloadFileMixin, SortSeriesMixin)87 ProductDownloadFileMixin, SortSeriesMixin)
88from lp.registry.interfaces.distroseries import DistroSeriesStatus88from lp.registry.interfaces.series import SeriesStatus
89from lp.registry.interfaces.person import IPerson, IPersonSet89from lp.registry.interfaces.person import IPerson, IPersonSet
90from lp.registry.interfaces.pocket import PackagePublishingPocket90from lp.registry.interfaces.pocket import PackagePublishingPocket
91from lp.registry.interfaces.product import IProduct91from lp.registry.interfaces.product import IProduct
@@ -170,7 +170,7 @@
170 @property170 @property
171 def active_series(self):171 def active_series(self):
172 return [series for series in self.associated_product_series172 return [series for series in self.associated_product_series
173 if series.status != DistroSeriesStatus.OBSOLETE]173 if series.status != SeriesStatus.OBSOLETE]
174174
175 @property175 @property
176 def bzr_identity(self):176 def bzr_identity(self):
177177
=== modified file 'lib/lp/code/tests/helpers.py'
--- lib/lp/code/tests/helpers.py 2009-12-10 01:49:16 +0000
+++ lib/lp/code/tests/helpers.py 2010-01-05 16:22:16 +0000
@@ -21,7 +21,7 @@
2121
22from lp.code.interfaces.seriessourcepackagebranch import (22from lp.code.interfaces.seriessourcepackagebranch import (
23 IMakeOfficialBranchLinks)23 IMakeOfficialBranchLinks)
24from lp.registry.interfaces.distroseries import DistroSeriesStatus24from lp.registry.interfaces.series import SeriesStatus
25from lp.registry.interfaces.pocket import PackagePublishingPocket25from lp.registry.interfaces.pocket import PackagePublishingPocket
26from lp.testing import time_counter26from lp.testing import time_counter
2727
@@ -185,14 +185,14 @@
185 mint = factory.makeDistribution(185 mint = factory.makeDistribution(
186 name='mint', displayname='Mint', owner=albert, members=mint_team)186 name='mint', displayname='Mint', owner=albert, members=mint_team)
187 series = [187 series = [
188 ("wild", "5.5", DistroSeriesStatus.EXPERIMENTAL),188 ("wild", "5.5", SeriesStatus.EXPERIMENTAL),
189 ("dev", "4.0", DistroSeriesStatus.DEVELOPMENT),189 ("dev", "4.0", SeriesStatus.DEVELOPMENT),
190 ("stable", "3.0", DistroSeriesStatus.CURRENT),190 ("stable", "3.0", SeriesStatus.CURRENT),
191 ("old", "2.0", DistroSeriesStatus.SUPPORTED),191 ("old", "2.0", SeriesStatus.SUPPORTED),
192 ("very-old", "1.5", DistroSeriesStatus.SUPPORTED),192 ("very-old", "1.5", SeriesStatus.SUPPORTED),
193 ("ancient", "1.0", DistroSeriesStatus.SUPPORTED),193 ("ancient", "1.0", SeriesStatus.SUPPORTED),
194 ("mouldy", "0.6", DistroSeriesStatus.SUPPORTED),194 ("mouldy", "0.6", SeriesStatus.SUPPORTED),
195 ("dead", "0.1", DistroSeriesStatus.OBSOLETE),195 ("dead", "0.1", SeriesStatus.OBSOLETE),
196 ]196 ]
197 for name, version, status in series:197 for name, version, status in series:
198 factory.makeDistroRelease(198 factory.makeDistroRelease(
199199
=== modified file 'lib/lp/code/tests/test_branch.py'
--- lib/lp/code/tests/test_branch.py 2009-11-13 05:13:07 +0000
+++ lib/lp/code/tests/test_branch.py 2010-01-05 16:22:16 +0000
@@ -15,9 +15,9 @@
15from lp.archiveuploader.permission import verify_upload15from lp.archiveuploader.permission import verify_upload
16from lp.code.enums import (16from lp.code.enums import (
17 BranchSubscriptionDiffSize, BranchSubscriptionNotificationLevel,17 BranchSubscriptionDiffSize, BranchSubscriptionNotificationLevel,
18 BranchType, CodeReviewNotificationLevel)18 CodeReviewNotificationLevel)
19from lp.code.interfaces.linkedbranch import ICanHasLinkedBranch19from lp.code.interfaces.linkedbranch import ICanHasLinkedBranch
20from lp.registry.interfaces.distroseries import DistroSeriesStatus20from lp.registry.interfaces.series import SeriesStatus
21from lp.registry.interfaces.pocket import PackagePublishingPocket21from lp.registry.interfaces.pocket import PackagePublishingPocket
22from lp.soyuz.interfaces.archivepermission import IArchivePermissionSet22from lp.soyuz.interfaces.archivepermission import IArchivePermissionSet
23from lp.testing import run_with_login, TestCaseWithFactory23from lp.testing import run_with_login, TestCaseWithFactory
@@ -247,7 +247,7 @@
247 # Make sure the (distroseries, pocket) combination used allows us to247 # Make sure the (distroseries, pocket) combination used allows us to
248 # upload to it.248 # upload to it.
249 stable_states = (249 stable_states = (
250 DistroSeriesStatus.SUPPORTED, DistroSeriesStatus.CURRENT)250 SeriesStatus.SUPPORTED, SeriesStatus.CURRENT)
251 if branch.distroseries.status in stable_states:251 if branch.distroseries.status in stable_states:
252 pocket = PackagePublishingPocket.BACKPORTS252 pocket = PackagePublishingPocket.BACKPORTS
253 else:253 else:
254254
=== modified file 'lib/lp/registry/browser/distribution.py'
--- lib/lp/registry/browser/distribution.py 2009-12-05 18:37:28 +0000
+++ lib/lp/registry/browser/distribution.py 2010-01-05 16:22:16 +0000
@@ -70,7 +70,7 @@
70 IDistributionSet)70 IDistributionSet)
71from lp.registry.interfaces.distributionmirror import (71from lp.registry.interfaces.distributionmirror import (
72 IDistributionMirrorSet, MirrorContent, MirrorSpeed)72 IDistributionMirrorSet, MirrorContent, MirrorSpeed)
73from lp.registry.interfaces.distroseries import DistroSeriesStatus73from lp.registry.interfaces.series import SeriesStatus
74from lp.registry.interfaces.product import IProduct74from lp.registry.interfaces.product import IProduct
75from lp.soyuz.interfaces.publishedpackage import (75from lp.soyuz.interfaces.publishedpackage import (
76 IPublishedPackageSet)76 IPublishedPackageSet)
@@ -812,9 +812,9 @@
812812
813 def getCssClass(self, series):813 def getCssClass(self, series):
814 """The highlighted, unhighlighted, or dimmed CSS class."""814 """The highlighted, unhighlighted, or dimmed CSS class."""
815 if series.status == DistroSeriesStatus.DEVELOPMENT:815 if series.status == SeriesStatus.DEVELOPMENT:
816 return 'highlighted'816 return 'highlighted'
817 elif series.status == DistroSeriesStatus.OBSOLETE:817 elif series.status == SeriesStatus.OBSOLETE:
818 return 'dimmed'818 return 'dimmed'
819 else:819 else:
820 return 'unhighlighted'820 return 'unhighlighted'
821821
=== modified file 'lib/lp/registry/browser/distroseries.py'
--- lib/lp/registry/browser/distroseries.py 2009-12-18 13:25:19 +0000
+++ lib/lp/registry/browser/distroseries.py 2010-01-05 16:22:16 +0000
@@ -35,8 +35,8 @@
35from canonical.launchpad.browser.packagesearch import PackageSearchViewBase35from canonical.launchpad.browser.packagesearch import PackageSearchViewBase
36from lp.soyuz.browser.queue import QueueItemsView36from lp.soyuz.browser.queue import QueueItemsView
37from lp.services.worlddata.interfaces.country import ICountry37from lp.services.worlddata.interfaces.country import ICountry
38from lp.registry.interfaces.distroseries import (38from lp.registry.interfaces.series import SeriesStatus
39 DistroSeriesStatus, IDistroSeries)39from lp.registry.interfaces.distroseries import IDistroSeries
40from lp.translations.interfaces.distroserieslanguage import (40from lp.translations.interfaces.distroserieslanguage import (
41 IDistroSeriesLanguageSet)41 IDistroSeriesLanguageSet)
42from lp.services.worlddata.interfaces.language import ILanguageSet42from lp.services.worlddata.interfaces.language import ILanguageSet
@@ -244,7 +244,7 @@
244 label = 'Search packages'244 label = 'Search packages'
245245
246246
247class DistroSeriesStatusMixin:247class SeriesStatusMixin:
248 """A mixin that provides status field support."""248 """A mixin that provides status field support."""
249249
250 def createStatusField(self):250 def createStatusField(self):
@@ -256,15 +256,15 @@
256 * unstable -> EXPERIMENTAL, DEVELOPMENT, FROZEN, FUTURE, CURRENT256 * unstable -> EXPERIMENTAL, DEVELOPMENT, FROZEN, FUTURE, CURRENT
257 """257 """
258 stable_status = (258 stable_status = (
259 DistroSeriesStatus.CURRENT,259 SeriesStatus.CURRENT,
260 DistroSeriesStatus.SUPPORTED,260 SeriesStatus.SUPPORTED,
261 DistroSeriesStatus.OBSOLETE,261 SeriesStatus.OBSOLETE,
262 )262 )
263263
264 if self.context.status not in stable_status:264 if self.context.status not in stable_status:
265 terms = [status for status in DistroSeriesStatus.items265 terms = [status for status in SeriesStatus.items
266 if status not in stable_status]266 if status not in stable_status]
267 terms.append(DistroSeriesStatus.CURRENT)267 terms.append(SeriesStatus.CURRENT)
268 else:268 else:
269 terms = stable_status269 terms = stable_status
270270
@@ -282,7 +282,7 @@
282 def updateDateReleased(self, status):282 def updateDateReleased(self, status):
283 """Update the datereleased field if the status is set to CURRENT."""283 """Update the datereleased field if the status is set to CURRENT."""
284 if (self.context.datereleased is None and284 if (self.context.datereleased is None and
285 status == DistroSeriesStatus.CURRENT):285 status == SeriesStatus.CURRENT):
286 self.context.datereleased = UTC_NOW286 self.context.datereleased = UTC_NOW
287287
288288
@@ -328,7 +328,7 @@
328 milestone_can_release = False328 milestone_can_release = False
329329
330330
331class DistroSeriesEditView(LaunchpadEditFormView, DistroSeriesStatusMixin):331class DistroSeriesEditView(LaunchpadEditFormView, SeriesStatusMixin):
332 """View class that lets you edit a DistroSeries object.332 """View class that lets you edit a DistroSeries object.
333333
334 It redirects to the main distroseries page after a successful edit.334 It redirects to the main distroseries page after a successful edit.
@@ -375,7 +375,7 @@
375 self.next_url = canonical_url(self.context)375 self.next_url = canonical_url(self.context)
376376
377377
378class DistroSeriesAdminView(LaunchpadEditFormView, DistroSeriesStatusMixin):378class DistroSeriesAdminView(LaunchpadEditFormView, SeriesStatusMixin):
379 """View class for administering a DistroSeries object.379 """View class for administering a DistroSeries object.
380380
381 It redirects to the main distroseries page after a successful edit.381 It redirects to the main distroseries page after a successful edit.
382382
=== modified file 'lib/lp/registry/browser/product.py'
--- lib/lp/registry/browser/product.py 2009-12-11 19:54:04 +0000
+++ lib/lp/registry/browser/product.py 2010-01-05 16:22:16 +0000
@@ -66,7 +66,7 @@
66 ILaunchBag, NotFoundError, UnsafeFormGetSubmissionError)66 ILaunchBag, NotFoundError, UnsafeFormGetSubmissionError)
67from lp.registry.interfaces.pillar import IPillarNameSet67from lp.registry.interfaces.pillar import IPillarNameSet
68from lp.registry.interfaces.product import IProductReviewSearch, License68from lp.registry.interfaces.product import IProductReviewSearch, License
69from lp.registry.interfaces.distroseries import DistroSeriesStatus69from lp.registry.interfaces.series import SeriesStatus
70from lp.registry.interfaces.product import (70from lp.registry.interfaces.product import (
71 IProduct, IProductSet, LicenseStatus)71 IProduct, IProductSet, LicenseStatus)
72from lp.registry.interfaces.productrelease import (72from lp.registry.interfaces.productrelease import (
@@ -540,7 +540,7 @@
540 # Callback for the filter which only allows series that have not been540 # Callback for the filter which only allows series that have not been
541 # marked obsolete.541 # marked obsolete.
542 def check_active(series):542 def check_active(series):
543 return series.status != DistroSeriesStatus.OBSOLETE543 return series.status != SeriesStatus.OBSOLETE
544 return self._sorted_filtered_list(check_active)544 return self._sorted_filtered_list(check_active)
545545
546546
@@ -618,7 +618,7 @@
618 """The highlighted, unhighlighted, or dimmed CSS class."""618 """The highlighted, unhighlighted, or dimmed CSS class."""
619 if self.is_development_focus:619 if self.is_development_focus:
620 return 'highlighted'620 return 'highlighted'
621 elif self.status == DistroSeriesStatus.OBSOLETE:621 elif self.status == SeriesStatus.OBSOLETE:
622 return 'dimmed'622 return 'dimmed'
623 else:623 else:
624 return 'unhighlighted'624 return 'unhighlighted'
625625
=== modified file 'lib/lp/registry/browser/productseries.py'
--- lib/lp/registry/browser/productseries.py 2009-12-05 18:37:28 +0000
+++ lib/lp/registry/browser/productseries.py 2010-01-05 16:22:16 +0000
@@ -75,7 +75,7 @@
75from lp.registry.browser import (75from lp.registry.browser import (
76 MilestoneOverlayMixin, RegistryDeleteViewMixin)76 MilestoneOverlayMixin, RegistryDeleteViewMixin)
77from lp.registry.browser.packaging import PackagingAddView77from lp.registry.browser.packaging import PackagingAddView
78from lp.registry.interfaces.distroseries import DistroSeriesStatus78from lp.registry.interfaces.series import SeriesStatus
79from lp.registry.interfaces.productseries import IProductSeries79from lp.registry.interfaces.productseries import IProductSeries
8080
8181
@@ -329,7 +329,7 @@
329 them for obsolete series can be a problem if many series are being329 them for obsolete series can be a problem if many series are being
330 displayed.330 displayed.
331 """331 """
332 return self.context.status == DistroSeriesStatus.OBSOLETE332 return self.context.status == SeriesStatus.OBSOLETE
333333
334 @cachedproperty334 @cachedproperty
335 def bugtask_status_counts(self):335 def bugtask_status_counts(self):
336336
=== modified file 'lib/lp/registry/browser/tests/browser-views.txt'
--- lib/lp/registry/browser/tests/browser-views.txt 2009-09-10 22:09:44 +0000
+++ lib/lp/registry/browser/tests/browser-views.txt 2010-01-05 16:22:16 +0000
@@ -35,7 +35,7 @@
35attribute has the required attribute to sort.35attribute has the required attribute to sort.
3636
37 >>> from lp.registry.browser import get_status_counts37 >>> from lp.registry.browser import get_status_counts
38 >>> from lp.registry.interfaces.distroseries import DistroSeriesStatus38 >>> from lp.registry.interfaces.series import SeriesStatus
3939
40 >>> class Concept:40 >>> class Concept:
41 ... def __init__(self, status, person):41 ... def __init__(self, status, person):
@@ -48,9 +48,9 @@
48 >>> a_person = factory.makePerson(name='andy', displayname="Andy")48 >>> a_person = factory.makePerson(name='andy', displayname="Andy")
49 >>> b_person = factory.makePerson(name='bob', displayname="Bob")49 >>> b_person = factory.makePerson(name='bob', displayname="Bob")
5050
51 >>> concept_1 = Concept(DistroSeriesStatus.EXPERIMENTAL, a_person)51 >>> concept_1 = Concept(SeriesStatus.EXPERIMENTAL, a_person)
52 >>> artefact_2 = Artefact(DistroSeriesStatus.EXPERIMENTAL, b_person)52 >>> artefact_2 = Artefact(SeriesStatus.EXPERIMENTAL, b_person)
53 >>> artefact_3 = Artefact(DistroSeriesStatus.CURRENT, b_person)53 >>> artefact_3 = Artefact(SeriesStatus.CURRENT, b_person)
5454
55The common example is for counting the status enums for an object. The default55The common example is for counting the status enums for an object. The default
56rule is to sort on the 'sortkey' attribute of the object being counted.56rule is to sort on the 'sortkey' attribute of the object being counted.
5757
=== modified file 'lib/lp/registry/browser/tests/distributionsourcepackage-views.txt'
--- lib/lp/registry/browser/tests/distributionsourcepackage-views.txt 2009-11-10 21:33:20 +0000
+++ lib/lp/registry/browser/tests/distributionsourcepackage-views.txt 2010-01-05 16:22:16 +0000
@@ -10,8 +10,8 @@
10 >>> publisher = SoyuzTestPublisher()10 >>> publisher = SoyuzTestPublisher()
11 >>> publisher.prepareBreezyAutotest()11 >>> publisher.prepareBreezyAutotest()
12 >>> ubuntutest = publisher.ubuntutest12 >>> ubuntutest = publisher.ubuntutest
13 >>> from lp.registry.interfaces.distroseries import DistroSeriesStatus13 >>> from lp.registry.interfaces.series import SeriesStatus
14 >>> publisher.distroseries.status = DistroSeriesStatus.DEVELOPMENT14 >>> publisher.distroseries.status = SeriesStatus.DEVELOPMENT
1515
16 # Publish the source 'gedit' in the ubuntutest main archive.16 # Publish the source 'gedit' in the ubuntutest main archive.
17 >>> from datetime import datetime17 >>> from datetime import datetime
1818
=== modified file 'lib/lp/registry/browser/tests/packaging-views.txt'
--- lib/lp/registry/browser/tests/packaging-views.txt 2009-12-10 20:03:11 +0000
+++ lib/lp/registry/browser/tests/packaging-views.txt 2010-01-05 16:22:16 +0000
@@ -206,12 +206,12 @@
206When the current Ubuntu series changes, the sourcepackagename is not known,206When the current Ubuntu series changes, the sourcepackagename is not known,
207and a new entry can be added to the packaging history.207and a new entry can be added to the packaging history.
208208
209 >>> from lp.registry.interfaces.distroseries import DistroSeriesStatus209 >>> from lp.registry.interfaces.series import SeriesStatus
210210
211 >>> login('admin@canonical.com')211 >>> login('admin@canonical.com')
212 >>> hoary.status = DistroSeriesStatus.CURRENT212 >>> hoary.status = SeriesStatus.CURRENT
213 >>> grumpy_series = ubuntu.getSeries('grumpy')213 >>> grumpy_series = ubuntu.getSeries('grumpy')
214 >>> grumpy_series.status = DistroSeriesStatus.FROZEN214 >>> grumpy_series.status = SeriesStatus.FROZEN
215215
216 >>> a_user = factory.makePerson(name="hedgehog")216 >>> a_user = factory.makePerson(name="hedgehog")
217 >>> login_person(a_user)217 >>> login_person(a_user)
218218
=== modified file 'lib/lp/registry/browser/tests/productseries-views.txt'
--- lib/lp/registry/browser/tests/productseries-views.txt 2009-12-05 02:53:07 +0000
+++ lib/lp/registry/browser/tests/productseries-views.txt 2010-01-05 16:22:16 +0000
@@ -81,14 +81,14 @@
81has an is_obsolete property that templates can check when choosing the content81has an is_obsolete property that templates can check when choosing the content
82to display.82to display.
8383
84 >>> from lp.registry.interfaces.distroseries import DistroSeriesStatus84 >>> from lp.registry.interfaces.series import SeriesStatus
8585
86 >>> print series.status86 >>> print series.status
87 Active Development87 Active Development
88 >>> view.is_obsolete88 >>> view.is_obsolete
89 False89 False
9090
91 >>> series.status = DistroSeriesStatus.OBSOLETE91 >>> series.status = SeriesStatus.OBSOLETE
92 >>> view = create_view(series, '+index')92 >>> view = create_view(series, '+index')
93 >>> view.is_obsolete93 >>> view.is_obsolete
94 True94 True
9595
=== modified file 'lib/lp/registry/doc/distroseries.txt'
--- lib/lp/registry/doc/distroseries.txt 2009-12-10 20:28:03 +0000
+++ lib/lp/registry/doc/distroseries.txt 2010-01-05 16:22:16 +0000
@@ -170,7 +170,7 @@
170 >>> hoary = ubuntu['hoary']170 >>> hoary = ubuntu['hoary']
171171
172 >>> from lp.registry.interfaces.pocket import PackagePublishingPocket172 >>> from lp.registry.interfaces.pocket import PackagePublishingPocket
173 >>> from canonical.launchpad.interfaces import DistroSeriesStatus173 >>> from canonical.launchpad.interfaces import SeriesStatus
174174
175 >>> warty.status.name175 >>> warty.status.name
176 'CURRENT'176 'CURRENT'
@@ -190,7 +190,7 @@
190the upload will have to wait for manual approval anyway:190the upload will have to wait for manual approval anyway:
191191
192 >>> from zope.security.proxy import removeSecurityProxy192 >>> from zope.security.proxy import removeSecurityProxy
193 >>> removeSecurityProxy(hoary).status = DistroSeriesStatus.FROZEN193 >>> removeSecurityProxy(hoary).status = SeriesStatus.FROZEN
194194
195 >>> hoary.status.name195 >>> hoary.status.name
196 'FROZEN'196 'FROZEN'
@@ -430,35 +430,35 @@
430430
431Exactly what message is displayed depends on the series' status.431Exactly what message is displayed depends on the series' status.
432432
433 >>> untranslatable_series.status = DistroSeriesStatus.EXPERIMENTAL433 >>> untranslatable_series.status = SeriesStatus.EXPERIMENTAL
434 >>> print get_visibility_notice(untranslatable_series)434 >>> print get_visibility_notice(untranslatable_series)
435 Translations for this release series are not available yet.435 Translations for this release series are not available yet.
436436
437 >>> untranslatable_series.status = DistroSeriesStatus.DEVELOPMENT437 >>> untranslatable_series.status = SeriesStatus.DEVELOPMENT
438 >>> print get_visibility_notice(untranslatable_series)438 >>> print get_visibility_notice(untranslatable_series)
439 Translations for this release series are not available yet.439 Translations for this release series are not available yet.
440440
441 >>> untranslatable_series.status = DistroSeriesStatus.FROZEN441 >>> untranslatable_series.status = SeriesStatus.FROZEN
442 >>> print get_visibility_notice(untranslatable_series)442 >>> print get_visibility_notice(untranslatable_series)
443 Translations for this release series are not currently available.443 Translations for this release series are not currently available.
444 Please come back soon.444 Please come back soon.
445445
446 >>> untranslatable_series.status = DistroSeriesStatus.CURRENT446 >>> untranslatable_series.status = SeriesStatus.CURRENT
447 >>> print get_visibility_notice(untranslatable_series)447 >>> print get_visibility_notice(untranslatable_series)
448 Translations for this release series are not currently available.448 Translations for this release series are not currently available.
449 Please come back soon.449 Please come back soon.
450450
451 >>> untranslatable_series.status = DistroSeriesStatus.SUPPORTED451 >>> untranslatable_series.status = SeriesStatus.SUPPORTED
452 >>> print get_visibility_notice(untranslatable_series)452 >>> print get_visibility_notice(untranslatable_series)
453 Translations for this release series are not currently available.453 Translations for this release series are not currently available.
454 Please come back soon.454 Please come back soon.
455455
456 >>> untranslatable_series.status = DistroSeriesStatus.OBSOLETE456 >>> untranslatable_series.status = SeriesStatus.OBSOLETE
457 >>> print get_visibility_notice(untranslatable_series)457 >>> print get_visibility_notice(untranslatable_series)
458 This release series is obsolete. Its translations are no longer458 This release series is obsolete. Its translations are no longer
459 available.459 available.
460460
461 >>> untranslatable_series.status = DistroSeriesStatus.FUTURE461 >>> untranslatable_series.status = SeriesStatus.FUTURE
462 >>> print get_visibility_notice(untranslatable_series)462 >>> print get_visibility_notice(untranslatable_series)
463 Translations for this release series are not available yet.463 Translations for this release series are not available yet.
464464
465465
=== modified file 'lib/lp/registry/doc/product.txt'
--- lib/lp/registry/doc/product.txt 2009-10-26 18:40:04 +0000
+++ lib/lp/registry/doc/product.txt 2010-01-05 16:22:16 +0000
@@ -636,11 +636,10 @@
636Once the 1.0 series is made obsolete, it no longer shows up in the set of636Once the 1.0 series is made obsolete, it no longer shows up in the set of
637sorted active series.637sorted active series.
638638
639 >>> from lp.registry.interfaces.distroseries import (639 >>> from lp.registry.interfaces.series import SeriesStatus
640 ... DistroSeriesStatus)
641 >>> sorted_series = firefox_view.sorted_active_series_list640 >>> sorted_series = firefox_view.sorted_active_series_list
642 >>> last_series = firefox.getSeries(sorted_series[-1].name)641 >>> last_series = firefox.getSeries(sorted_series[-1].name)
643 >>> last_series.status = DistroSeriesStatus.OBSOLETE642 >>> last_series.status = SeriesStatus.OBSOLETE
644 >>> firefox_view = create_initialized_view(firefox, '+index')643 >>> firefox_view = create_initialized_view(firefox, '+index')
645 >>> for series in firefox_view.sorted_active_series_list:644 >>> for series in firefox_view.sorted_active_series_list:
646 ... print series.name645 ... print series.name
@@ -649,7 +648,7 @@
649It is possible for the development series to be obsolete, and in that case, it648It is possible for the development series to be obsolete, and in that case, it
650still shows up in the list.649still shows up in the list.
651650
652 >>> firefox.development_focus.status = DistroSeriesStatus.OBSOLETE651 >>> firefox.development_focus.status = SeriesStatus.OBSOLETE
653 >>> firefox_view = create_initialized_view(firefox, '+index')652 >>> firefox_view = create_initialized_view(firefox, '+index')
654 >>> for series in firefox_view.sorted_active_series_list:653 >>> for series in firefox_view.sorted_active_series_list:
655 ... print series.name654 ... print series.name
656655
=== modified file 'lib/lp/registry/interfaces/distroseries.py'
--- lib/lp/registry/interfaces/distroseries.py 2009-12-14 13:49:03 +0000
+++ lib/lp/registry/interfaces/distroseries.py 2010-01-05 16:22:16 +0000
@@ -8,7 +8,6 @@
8__metaclass__ = type8__metaclass__ = type
99
10__all__ = [10__all__ = [
11 'DistroSeriesStatus',
12 'IDistroSeries',11 'IDistroSeries',
13 'IDistroSeriesEditRestricted',12 'IDistroSeriesEditRestricted',
14 'IDistroSeriesPublic',13 'IDistroSeriesPublic',
@@ -20,11 +19,12 @@
20from zope.schema import Bool, Datetime, Choice, Object, TextLine19from zope.schema import Bool, Datetime, Choice, Object, TextLine
21from zope.interface import Interface, Attribute20from zope.interface import Interface, Attribute
2221
23from lazr.enum import DBEnumeratedType, DBItem22from lazr.enum import DBEnumeratedType
2423
25from canonical.launchpad.fields import (24from canonical.launchpad.fields import (
26 ContentNameField, Description, PublicPersonChoice, Summary, Title,25 ContentNameField, Description, PublicPersonChoice, Summary, Title,
27 UniqueField)26 UniqueField)
27from lp.registry.interfaces.series import SeriesStatus
28from lp.registry.interfaces.structuralsubscription import (28from lp.registry.interfaces.structuralsubscription import (
29 IStructuralSubscriptionTarget)29 IStructuralSubscriptionTarget)
30from lp.bugs.interfaces.bugtarget import IBugTarget, IHasBugs30from lp.bugs.interfaces.bugtarget import IBugTarget, IHasBugs
@@ -54,73 +54,6 @@
54 operation_returns_collection_of, operation_returns_entry,54 operation_returns_collection_of, operation_returns_entry,
55 rename_parameters_as, webservice_error)55 rename_parameters_as, webservice_error)
5656
57
58# XXX: salgado, 2008-06-02: We should use a more generic name here as this
59# enum is used in ProductSeries.status as well.
60class DistroSeriesStatus(DBEnumeratedType):
61 """Distro/Product Series Status
62
63 A Distro or Product series (warty, hoary, 1.4 for example) changes state
64 throughout its development. This schema describes the level of
65 development of the series.
66 """
67
68 EXPERIMENTAL = DBItem(1, """
69 Experimental
70
71 This series contains code that is far from active release planning or
72 management.
73
74 In the case of Ubuntu, series that are beyond the current
75 "development" release will be marked as "experimental". We create
76 those so that people have a place to upload code which is expected to
77 be part of that distant future release, but which we do not want to
78 interfere with the current development release.
79 """)
80
81 DEVELOPMENT = DBItem(2, """
82 Active Development
83
84 The series that is under active development.
85 """)
86
87 FROZEN = DBItem(3, """
88 Pre-release Freeze
89
90 When a series is near to release the administrators will freeze it,
91 which typically means all changes require significant review before
92 being accepted.
93 """)
94
95 CURRENT = DBItem(4, """
96 Current Stable Release
97
98 This is the latest stable release. Normally there will only
99 be one of these for a given distribution.
100 """)
101
102 SUPPORTED = DBItem(5, """
103 Supported
104
105 This series is still supported, but it is no longer the current stable
106 release.
107 """)
108
109 OBSOLETE = DBItem(6, """
110 Obsolete
111
112 This series is no longer supported, it is considered obsolete and
113 should not be used on production systems.
114 """)
115
116 FUTURE = DBItem(7, """
117 Future
118
119 This is a future series of this product/distro in which the developers
120 haven't started working yet.
121 """)
122
123
124class DistroSeriesNameField(ContentNameField):57class DistroSeriesNameField(ContentNameField):
125 """A class to ensure `IDistroSeries` has unique names."""58 """A class to ensure `IDistroSeries` has unique names."""
126 errormessage = _("%s is already in use by another series.")59 errormessage = _("%s is already in use by another series.")
@@ -273,7 +206,7 @@
273 status = exported(206 status = exported(
274 Choice(207 Choice(
275 title=_("Status"), required=True,208 title=_("Status"), required=True,
276 vocabulary=DistroSeriesStatus))209 vocabulary=SeriesStatus))
277 datereleased = exported(210 datereleased = exported(
278 Datetime(title=_("Date released")))211 Datetime(title=_("Date released")))
279 parent_series = exported(212 parent_series = exported(
280213
=== modified file 'lib/lp/registry/interfaces/productseries.py'
--- lib/lp/registry/interfaces/productseries.py 2009-12-05 18:37:28 +0000
+++ lib/lp/registry/interfaces/productseries.py 2010-01-05 16:22:16 +0000
@@ -25,7 +25,7 @@
25 IStructuralSubscriptionTarget)25 IStructuralSubscriptionTarget)
26from lp.code.interfaces.branch import IBranch26from lp.code.interfaces.branch import IBranch
27from lp.bugs.interfaces.bugtarget import IBugTarget27from lp.bugs.interfaces.bugtarget import IBugTarget
28from lp.registry.interfaces.distroseries import DistroSeriesStatus28from lp.registry.interfaces.series import SeriesStatus
29from canonical.launchpad.interfaces.launchpad import (29from canonical.launchpad.interfaces.launchpad import (
30 IHasAppointedDriver, IHasDrivers)30 IHasAppointedDriver, IHasDrivers)
31from lp.registry.interfaces.role import IHasOwner31from lp.registry.interfaces.role import IHasOwner
@@ -106,8 +106,8 @@
106106
107 status = exported(107 status = exported(
108 Choice(108 Choice(
109 title=_('Status'), required=True, vocabulary=DistroSeriesStatus,109 title=_('Status'), required=True, vocabulary=SeriesStatus,
110 default=DistroSeriesStatus.DEVELOPMENT))110 default=SeriesStatus.DEVELOPMENT))
111111
112 parent = Attribute('The structural parent of this series - the product')112 parent = Attribute('The structural parent of this series - the product')
113113
114114
=== added file 'lib/lp/registry/interfaces/series.py'
--- lib/lp/registry/interfaces/series.py 1970-01-01 00:00:00 +0000
+++ lib/lp/registry/interfaces/series.py 2010-01-05 16:22:16 +0000
@@ -0,0 +1,78 @@
1# Copyright 2009 Canonical Ltd. This software is licensed under the
2# GNU Affero General Public License version 3 (see the file LICENSE).
3
4# pylint: disable-msg=E0211,E0213
5
6"""Interfaces including common IDistroSeries and IProductSeries classes."""
7
8__metaclass__ = type
9
10__all__ = [
11 'SeriesStatus'
12 ]
13
14from lazr.enum import DBEnumeratedType, DBItem
15
16class SeriesStatus(DBEnumeratedType):
17 """Distro/Product Series Status
18
19 A Distro or Product series (warty, hoary, 1.4 for example) changes state
20 throughout its development. This schema describes the level of
21 development of the series.
22 """
23
24 EXPERIMENTAL = DBItem(1, """
25 Experimental
26
27 This series contains code that is far from active release planning or
28 management.
29
30 In the case of Ubuntu, series that are beyond the current
31 "development" release will be marked as "experimental". We create
32 those so that people have a place to upload code which is expected to
33 be part of that distant future release, but which we do not want to
34 interfere with the current development release.
35 """)
36
37 DEVELOPMENT = DBItem(2, """
38 Active Development
39
40 The series that is under active development.
41 """)
42
43 FROZEN = DBItem(3, """
44 Pre-release Freeze
45
46 When a series is near to release the administrators will freeze it,
47 which typically means all changes require significant review before
48 being accepted.
49 """)
50
51 CURRENT = DBItem(4, """
52 Current Stable Release
53
54 This is the latest stable release. Normally there will only
55 be one of these for a given distribution.
56 """)
57
58 SUPPORTED = DBItem(5, """
59 Supported
60
61 This series is still supported, but it is no longer the current stable
62 release.
63 """)
64
65 OBSOLETE = DBItem(6, """
66 Obsolete
67
68 This series is no longer supported, it is considered obsolete and
69 should not be used on production systems.
70 """)
71
72 FUTURE = DBItem(7, """
73 Future
74
75 This is a future series of this product/distro in which the developers
76 haven't started working yet.
77 """)
78
079
=== modified file 'lib/lp/registry/model/distribution.py'
--- lib/lp/registry/model/distribution.py 2009-12-09 14:55:02 +0000
+++ lib/lp/registry/model/distribution.py 2010-01-05 16:22:16 +0000
@@ -84,8 +84,8 @@
84 IDistributionSet)84 IDistributionSet)
85from lp.registry.interfaces.distributionmirror import (85from lp.registry.interfaces.distributionmirror import (
86 IDistributionMirror, MirrorContent, MirrorStatus)86 IDistributionMirror, MirrorContent, MirrorStatus)
87from lp.registry.interfaces.distroseries import (87from lp.registry.interfaces.series import SeriesStatus
88 DistroSeriesStatus, NoSuchDistroSeries)88from lp.registry.interfaces.distroseries import NoSuchDistroSeries
89from canonical.launchpad.interfaces.launchpad import (89from canonical.launchpad.interfaces.launchpad import (
90 IHasIcon, IHasLogo, IHasMugshot, ILaunchpadCelebrities, ILaunchpadUsage)90 IHasIcon, IHasLogo, IHasMugshot, ILaunchpadCelebrities, ILaunchpadUsage)
91from lp.soyuz.interfaces.queue import PackageUploadStatus91from lp.soyuz.interfaces.queue import PackageUploadStatus
@@ -394,8 +394,9 @@
394394
395 def newMirror(self, owner, speed, country, content, displayname=None,395 def newMirror(self, owner, speed, country, content, displayname=None,
396 description=None, http_base_url=None,396 description=None, http_base_url=None,
397 ftp_base_url=None, rsync_base_url=None, official_candidate=False,397 ftp_base_url=None, rsync_base_url=None,
398 enabled=False, whiteboard=None):398 official_candidate=False, enabled=False,
399 whiteboard=None):
399 """See `IDistribution`."""400 """See `IDistribution`."""
400 # NB this functionality is only available to distributions that have401 # NB this functionality is only available to distributions that have
401 # the full functionality of Launchpad enabled. This is Ubuntu and402 # the full functionality of Launchpad enabled. This is Ubuntu and
@@ -450,15 +451,15 @@
450451
451 # If we have a frozen one, return that.452 # If we have a frozen one, return that.
452 for series in self.series:453 for series in self.series:
453 if series.status == DistroSeriesStatus.FROZEN:454 if series.status == SeriesStatus.FROZEN:
454 return series455 return series
455 # If we have one in development, return that.456 # If we have one in development, return that.
456 for series in self.series:457 for series in self.series:
457 if series.status == DistroSeriesStatus.DEVELOPMENT:458 if series.status == SeriesStatus.DEVELOPMENT:
458 return series459 return series
459 # If we have a stable one, return that.460 # If we have a stable one, return that.
460 for series in self.series:461 for series in self.series:
461 if series.status == DistroSeriesStatus.CURRENT:462 if series.status == SeriesStatus.CURRENT:
462 return series463 return series
463 # If we have ANY, return the first one.464 # If we have ANY, return the first one.
464 if len(self.series) > 0:465 if len(self.series) > 0:
@@ -509,7 +510,7 @@
509 """See `IDistribution`."""510 """See `IDistribution`."""
510 return DistroSeries.selectBy(511 return DistroSeries.selectBy(
511 distribution=self,512 distribution=self,
512 status=DistroSeriesStatus.DEVELOPMENT)513 status=SeriesStatus.DEVELOPMENT)
513514
514 def getMilestone(self, name):515 def getMilestone(self, name):
515 """See `IDistribution`."""516 """See `IDistribution`."""
@@ -1002,7 +1003,7 @@
1002 # we're searching for.1003 # we're searching for.
1003 return (1004 return (
1004 DistroSeries.distribution == self,1005 DistroSeries.distribution == self,
1005 DistroSeries.status != DistroSeriesStatus.OBSOLETE,1006 DistroSeries.status != SeriesStatus.OBSOLETE,
1006 BinaryPackageRelease.binarypackagename == BinaryPackageName.id,1007 BinaryPackageRelease.binarypackagename == BinaryPackageName.id,
1007 DistroArchSeries.distroseries == DistroSeries.id,1008 DistroArchSeries.distroseries == DistroSeries.id,
1008 Build.distroarchseries == DistroArchSeries.id,1009 Build.distroarchseries == DistroArchSeries.id,
@@ -1482,7 +1483,7 @@
1482 summary=summary,1483 summary=summary,
1483 description=description,1484 description=description,
1484 version=version,1485 version=version,
1485 status=DistroSeriesStatus.EXPERIMENTAL,1486 status=SeriesStatus.EXPERIMENTAL,
1486 parent_series=parent_series,1487 parent_series=parent_series,
1487 owner=owner)1488 owner=owner)
1488 if owner.inTeam(self.driver) and not owner.inTeam(self.owner):1489 if owner.inTeam(self.driver) and not owner.inTeam(self.owner):
14891490
=== modified file 'lib/lp/registry/model/distroseries.py'
--- lib/lp/registry/model/distroseries.py 2009-12-22 17:41:46 +0000
+++ lib/lp/registry/model/distroseries.py 2010-01-05 16:22:16 +0000
@@ -95,8 +95,9 @@
95from lp.soyuz.interfaces.buildrecords import IHasBuildRecords95from lp.soyuz.interfaces.buildrecords import IHasBuildRecords
96from lp.soyuz.interfaces.binarypackagename import (96from lp.soyuz.interfaces.binarypackagename import (
97 IBinaryPackageName)97 IBinaryPackageName)
98from lp.registry.interfaces.series import SeriesStatus
98from lp.registry.interfaces.distroseries import (99from lp.registry.interfaces.distroseries import (
99 DistroSeriesStatus, IDistroSeries, IDistroSeriesSet, ISeriesMixin)100 IDistroSeries, IDistroSeriesSet, ISeriesMixin)
100from lp.translations.interfaces.languagepack import LanguagePackType101from lp.translations.interfaces.languagepack import LanguagePackType
101from canonical.launchpad.interfaces.librarian import ILibraryFileAliasSet102from canonical.launchpad.interfaces.librarian import ILibraryFileAliasSet
102from lp.soyuz.interfaces.queue import PackageUploadStatus103from lp.soyuz.interfaces.queue import PackageUploadStatus
@@ -129,10 +130,10 @@
129 @property130 @property
130 def active(self):131 def active(self):
131 return self.status in [132 return self.status in [
132 DistroSeriesStatus.DEVELOPMENT,133 SeriesStatus.DEVELOPMENT,
133 DistroSeriesStatus.FROZEN,134 SeriesStatus.FROZEN,
134 DistroSeriesStatus.CURRENT,135 SeriesStatus.CURRENT,
135 DistroSeriesStatus.SUPPORTED136 SeriesStatus.SUPPORTED
136 ]137 ]
137138
138139
@@ -157,7 +158,7 @@
157 description = StringCol(notNull=True)158 description = StringCol(notNull=True)
158 version = StringCol(notNull=True)159 version = StringCol(notNull=True)
159 status = EnumCol(160 status = EnumCol(
160 dbName='releasestatus', notNull=True, schema=DistroSeriesStatus)161 dbName='releasestatus', notNull=True, schema=SeriesStatus)
161 date_created = UtcDateTimeCol(notNull=False, default=UTC_NOW)162 date_created = UtcDateTimeCol(notNull=False, default=UTC_NOW)
162 datereleased = UtcDateTimeCol(notNull=False, default=None)163 datereleased = UtcDateTimeCol(notNull=False, default=None)
163 parent_series = ForeignKey(164 parent_series = ForeignKey(
@@ -332,8 +333,8 @@
332 @property333 @property
333 def supported(self):334 def supported(self):
334 return self.status in [335 return self.status in [
335 DistroSeriesStatus.CURRENT,336 SeriesStatus.CURRENT,
336 DistroSeriesStatus.SUPPORTED337 SeriesStatus.SUPPORTED
337 ]338 ]
338339
339 @property340 @property
@@ -377,12 +378,12 @@
377 def canUploadToPocket(self, pocket):378 def canUploadToPocket(self, pocket):
378 """See `IDistroSeries`."""379 """See `IDistroSeries`."""
379 # Allow everything for distroseries in FROZEN state.380 # Allow everything for distroseries in FROZEN state.
380 if self.status == DistroSeriesStatus.FROZEN:381 if self.status == SeriesStatus.FROZEN:
381 return True382 return True
382383
383 # Define stable/released states.384 # Define stable/released states.
384 stable_states = (DistroSeriesStatus.SUPPORTED,385 stable_states = (SeriesStatus.SUPPORTED,
385 DistroSeriesStatus.CURRENT)386 SeriesStatus.CURRENT)
386387
387 # Deny uploads for RELEASE pocket in stable states.388 # Deny uploads for RELEASE pocket in stable states.
388 if (pocket == PackagePublishingPocket.RELEASE and389 if (pocket == PackagePublishingPocket.RELEASE and
@@ -727,14 +728,14 @@
727 return728 return
728729
729 future = [730 future = [
730 DistroSeriesStatus.EXPERIMENTAL,731 SeriesStatus.EXPERIMENTAL,
731 DistroSeriesStatus.DEVELOPMENT,732 SeriesStatus.DEVELOPMENT,
732 DistroSeriesStatus.FUTURE,733 SeriesStatus.FUTURE,
733 ]734 ]
734 if self.status in future:735 if self.status in future:
735 raise TranslationUnavailable(736 raise TranslationUnavailable(
736 "Translations for this release series are not available yet.")737 "Translations for this release series are not available yet.")
737 elif self.status == DistroSeriesStatus.OBSOLETE:738 elif self.status == SeriesStatus.OBSOLETE:
738 raise TranslationUnavailable(739 raise TranslationUnavailable(
739 "This release series is obsolete. Its translations are no "740 "This release series is obsolete. Its translations are no "
740 "longer available.")741 "longer available.")
@@ -830,9 +831,9 @@
830 def isUnstable(self):831 def isUnstable(self):
831 """See `IDistroSeries`."""832 """See `IDistroSeries`."""
832 return self.status in [833 return self.status in [
833 DistroSeriesStatus.FROZEN,834 SeriesStatus.FROZEN,
834 DistroSeriesStatus.DEVELOPMENT,835 SeriesStatus.DEVELOPMENT,
835 DistroSeriesStatus.EXPERIMENTAL,836 SeriesStatus.EXPERIMENTAL,
836 ]837 ]
837838
838 def getAllPublishedSources(self):839 def getAllPublishedSources(self):
@@ -1734,7 +1735,7 @@
1734 return True1735 return True
17351736
1736 # FROZEN state also allow all pockets to be published.1737 # FROZEN state also allow all pockets to be published.
1737 if self.status == DistroSeriesStatus.FROZEN:1738 if self.status == SeriesStatus.FROZEN:
1738 return True1739 return True
17391740
1740 # If we're not republishing, we want to make sure that1741 # If we're not republishing, we want to make sure that
@@ -1875,14 +1876,14 @@
1875 if isreleased:1876 if isreleased:
1876 # The query is filtered on released releases.1877 # The query is filtered on released releases.
1877 where_clause += "releasestatus in (%s, %s)" % sqlvalues(1878 where_clause += "releasestatus in (%s, %s)" % sqlvalues(
1878 DistroSeriesStatus.CURRENT,1879 SeriesStatus.CURRENT,
1879 DistroSeriesStatus.SUPPORTED)1880 SeriesStatus.SUPPORTED)
1880 else:1881 else:
1881 # The query is filtered on unreleased releases.1882 # The query is filtered on unreleased releases.
1882 where_clause += "releasestatus in (%s, %s, %s)" % sqlvalues(1883 where_clause += "releasestatus in (%s, %s, %s)" % sqlvalues(
1883 DistroSeriesStatus.EXPERIMENTAL,1884 SeriesStatus.EXPERIMENTAL,
1884 DistroSeriesStatus.DEVELOPMENT,1885 SeriesStatus.DEVELOPMENT,
1885 DistroSeriesStatus.FROZEN)1886 SeriesStatus.FROZEN)
1886 if orderBy is not None:1887 if orderBy is not None:
1887 return DistroSeries.select(where_clause, orderBy=orderBy)1888 return DistroSeries.select(where_clause, orderBy=orderBy)
1888 else:1889 else:
18891890
=== modified file 'lib/lp/registry/model/productseries.py'
--- lib/lp/registry/model/productseries.py 2009-12-05 18:37:28 +0000
+++ lib/lp/registry/model/productseries.py 2010-01-05 16:22:16 +0000
@@ -50,7 +50,7 @@
50from lp.registry.model.structuralsubscription import (50from lp.registry.model.structuralsubscription import (
51 StructuralSubscriptionTargetMixin)51 StructuralSubscriptionTargetMixin)
52from canonical.launchpad.helpers import shortlist52from canonical.launchpad.helpers import shortlist
53from lp.registry.interfaces.distroseries import DistroSeriesStatus53from lp.registry.interfaces.series import SeriesStatus
54from lp.registry.model.distroseries import SeriesMixin54from lp.registry.model.distroseries import SeriesMixin
55from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities55from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
56from lp.registry.interfaces.packaging import PackagingType56from lp.registry.interfaces.packaging import PackagingType
@@ -89,8 +89,8 @@
8989
90 product = ForeignKey(dbName='product', foreignKey='Product', notNull=True)90 product = ForeignKey(dbName='product', foreignKey='Product', notNull=True)
91 status = EnumCol(91 status = EnumCol(
92 notNull=True, schema=DistroSeriesStatus,92 notNull=True, schema=SeriesStatus,
93 default=DistroSeriesStatus.DEVELOPMENT)93 default=SeriesStatus.DEVELOPMENT)
94 name = StringCol(notNull=True)94 name = StringCol(notNull=True)
95 summary = StringCol(notNull=True)95 summary = StringCol(notNull=True)
96 datecreated = UtcDateTimeCol(notNull=True, default=UTC_NOW)96 datecreated = UtcDateTimeCol(notNull=True, default=UTC_NOW)
9797
=== modified file 'lib/lp/registry/stories/distribution/xx-distribution-packages.txt'
--- lib/lp/registry/stories/distribution/xx-distribution-packages.txt 2009-11-18 02:58:23 +0000
+++ lib/lp/registry/stories/distribution/xx-distribution-packages.txt 2010-01-05 16:22:16 +0000
@@ -124,9 +124,9 @@
124 >>> publisher = SoyuzTestPublisher()124 >>> publisher = SoyuzTestPublisher()
125 >>> publisher.prepareBreezyAutotest()125 >>> publisher.prepareBreezyAutotest()
126 >>> ubuntutest = publisher.ubuntutest126 >>> ubuntutest = publisher.ubuntutest
127 >>> from lp.registry.interfaces.distroseries import DistroSeriesStatus127 >>> from lp.registry.interfaces.series import SeriesStatus
128 >>> ubuntutest['breezy-autotest'].status = DistroSeriesStatus.DEVELOPMENT128 >>> ubuntutest['breezy-autotest'].status = SeriesStatus.DEVELOPMENT
129 >>> ubuntutest['hoary-test'].status = DistroSeriesStatus.DEVELOPMENT129 >>> ubuntutest['hoary-test'].status = SeriesStatus.DEVELOPMENT
130130
131 # Publish the source 'netapplet' in the breezy-autotest and131 # Publish the source 'netapplet' in the breezy-autotest and
132 # main archive.132 # main archive.
133133
=== modified file 'lib/lp/registry/stories/productseries/xx-productseries-series.txt'
--- lib/lp/registry/stories/productseries/xx-productseries-series.txt 2009-09-18 15:24:30 +0000
+++ lib/lp/registry/stories/productseries/xx-productseries-series.txt 2010-01-05 16:22:16 +0000
@@ -4,14 +4,14 @@
4 # There are no obsolete series in the data, create one.4 # There are no obsolete series in the data, create one.
5 >>> from zope.component import getUtility5 >>> from zope.component import getUtility
6 >>> from lp.registry.interfaces.product import IProductSet6 >>> from lp.registry.interfaces.product import IProductSet
7 >>> from lp.registry.interfaces.distroseries import DistroSeriesStatus7 >>> from lp.registry.interfaces.series import SeriesStatus
88
9 >>> login('test@canonical.com')9 >>> login('test@canonical.com')
10 >>> productset = getUtility(IProductSet)10 >>> productset = getUtility(IProductSet)
11 >>> firefox = productset.getByName('firefox')11 >>> firefox = productset.getByName('firefox')
12 >>> series = factory.makeProductSeries(12 >>> series = factory.makeProductSeries(
13 ... name='xxx', product=firefox, summary='Use true GTK UI.')13 ... name='xxx', product=firefox, summary='Use true GTK UI.')
14 >>> series.status = DistroSeriesStatus.OBSOLETE14 >>> series.status = SeriesStatus.OBSOLETE
15 >>> transaction.commit()15 >>> transaction.commit()
16 >>> logout()16 >>> logout()
1717
1818
=== modified file 'lib/lp/registry/tests/test_distribution.py'
--- lib/lp/registry/tests/test_distribution.py 2009-11-07 22:19:06 +0000
+++ lib/lp/registry/tests/test_distribution.py 2010-01-05 16:22:16 +0000
@@ -13,7 +13,7 @@
13 TestDistroSeriesCurrentSourceReleases)13 TestDistroSeriesCurrentSourceReleases)
14from lp.soyuz.interfaces.distributionsourcepackagerelease import (14from lp.soyuz.interfaces.distributionsourcepackagerelease import (
15 IDistributionSourcePackageRelease)15 IDistributionSourcePackageRelease)
16from lp.registry.interfaces.distroseries import DistroSeriesStatus16from lp.registry.interfaces.series import SeriesStatus
1717
1818
19class TestDistributionCurrentSourceReleases(19class TestDistributionCurrentSourceReleases(
@@ -36,7 +36,7 @@
36 # version numbers. We don't care whether the version is36 # version numbers. We don't care whether the version is
37 # published in a earlier or later series.37 # published in a earlier or later series.
38 self.current_series = self.factory.makeDistroRelease(38 self.current_series = self.factory.makeDistroRelease(
39 self.distribution, '1.0', status=DistroSeriesStatus.CURRENT)39 self.distribution, '1.0', status=SeriesStatus.CURRENT)
40 self.publisher.getPubSource(40 self.publisher.getPubSource(
41 version='0.9', distroseries=self.current_series)41 version='0.9', distroseries=self.current_series)
42 self.publisher.getPubSource(42 self.publisher.getPubSource(
4343
=== modified file 'lib/lp/registry/tests/test_sourcepackage.py'
--- lib/lp/registry/tests/test_sourcepackage.py 2009-09-16 05:59:52 +0000
+++ lib/lp/registry/tests/test_sourcepackage.py 2010-01-05 16:22:16 +0000
@@ -13,7 +13,7 @@
1313
14from canonical.launchpad.ftests import login_person, logout14from canonical.launchpad.ftests import login_person, logout
15from lp.registry.interfaces.distribution import NoPartnerArchive15from lp.registry.interfaces.distribution import NoPartnerArchive
16from lp.registry.interfaces.distroseries import DistroSeriesStatus16from lp.registry.interfaces.series import SeriesStatus
17from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities17from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
18from lp.registry.interfaces.pocket import PackagePublishingPocket18from lp.registry.interfaces.pocket import PackagePublishingPocket
19from lp.soyuz.interfaces.archive import ArchivePurpose19from lp.soyuz.interfaces.archive import ArchivePurpose
@@ -145,9 +145,9 @@
145 # the source package.145 # the source package.
146 distribution = self.factory.makeDistribution()146 distribution = self.factory.makeDistribution()
147 dev_series = self.factory.makeDistroRelease(147 dev_series = self.factory.makeDistroRelease(
148 distribution=distribution, status=DistroSeriesStatus.DEVELOPMENT)148 distribution=distribution, status=SeriesStatus.DEVELOPMENT)
149 other_series = self.factory.makeDistroRelease(149 other_series = self.factory.makeDistroRelease(
150 distribution=distribution, status=DistroSeriesStatus.OBSOLETE)150 distribution=distribution, status=SeriesStatus.OBSOLETE)
151 self.assertEqual(dev_series, distribution.currentseries)151 self.assertEqual(dev_series, distribution.currentseries)
152 dev_sourcepackage = self.factory.makeSourcePackage(152 dev_sourcepackage = self.factory.makeSourcePackage(
153 distroseries=dev_series)153 distroseries=dev_series)
154154
=== modified file 'lib/lp/soyuz/browser/archive.py'
--- lib/lp/soyuz/browser/archive.py 2009-12-14 12:47:54 +0000
+++ lib/lp/soyuz/browser/archive.py 2010-01-05 16:22:16 +0000
@@ -66,7 +66,7 @@
66 BuildStatus, BuildSetStatus, IBuildSet)66 BuildStatus, BuildSetStatus, IBuildSet)
67from lp.soyuz.interfaces.buildrecords import IHasBuildRecords67from lp.soyuz.interfaces.buildrecords import IHasBuildRecords
68from lp.soyuz.interfaces.component import IComponentSet68from lp.soyuz.interfaces.component import IComponentSet
69from lp.registry.interfaces.distroseries import DistroSeriesStatus69from lp.registry.interfaces.series import SeriesStatus
70from canonical.launchpad.interfaces.launchpad import (70from canonical.launchpad.interfaces.launchpad import (
71 ILaunchpadCelebrities, NotFoundError)71 ILaunchpadCelebrities, NotFoundError)
72from lp.soyuz.interfaces.packagecopyrequest import (72from lp.soyuz.interfaces.packagecopyrequest import (
@@ -1190,7 +1190,7 @@
1190 # it will be probably simpler to use the DistroSeries vocabulary1190 # it will be probably simpler to use the DistroSeries vocabulary
1191 # and validate the selected value before copying.1191 # and validate the selected value before copying.
1192 for series in self.context.distribution.series:1192 for series in self.context.distribution.series:
1193 if series.status == DistroSeriesStatus.OBSOLETE:1193 if series.status == SeriesStatus.OBSOLETE:
1194 continue1194 continue
1195 terms.append(1195 terms.append(
1196 SimpleTerm(series, str(series.name), series.displayname))1196 SimpleTerm(series, str(series.name), series.displayname))
11971197
=== modified file 'lib/lp/soyuz/doc/build.txt'
--- lib/lp/soyuz/doc/build.txt 2009-11-24 07:02:21 +0000
+++ lib/lp/soyuz/doc/build.txt 2010-01-05 16:22:16 +0000
@@ -261,12 +261,12 @@
261We will reactivate ubuntu/warty allowing the pmount build to be261We will reactivate ubuntu/warty allowing the pmount build to be
262retried.262retried.
263263
264 >>> from canonical.launchpad.interfaces import DistroSeriesStatus264 >>> from canonical.launchpad.interfaces import SeriesStatus
265 >>> from lp.registry.interfaces.distribution import IDistributionSet265 >>> from lp.registry.interfaces.distribution import IDistributionSet
266 >>> login('foo.bar@canonical.com')266 >>> login('foo.bar@canonical.com')
267 >>> ubuntu = getUtility(IDistributionSet)['ubuntu']267 >>> ubuntu = getUtility(IDistributionSet)['ubuntu']
268 >>> warty = ubuntu.getSeries('warty')268 >>> warty = ubuntu.getSeries('warty')
269 >>> warty.status = DistroSeriesStatus.DEVELOPMENT269 >>> warty.status = SeriesStatus.DEVELOPMENT
270 >>> flush_database_updates()270 >>> flush_database_updates()
271 >>> login(ANONYMOUS)271 >>> login(ANONYMOUS)
272272
@@ -333,7 +333,7 @@
333it won't interfere in the next tests.333it won't interfere in the next tests.
334334
335 >>> login('foo.bar@canonical.com')335 >>> login('foo.bar@canonical.com')
336 >>> warty.status = DistroSeriesStatus.SUPPORTED336 >>> warty.status = SeriesStatus.SUPPORTED
337 >>> flush_database_updates()337 >>> flush_database_updates()
338 >>> login(ANONYMOUS)338 >>> login(ANONYMOUS)
339339
340340
=== modified file 'lib/lp/soyuz/doc/buildd-slavescanner.txt'
--- lib/lp/soyuz/doc/buildd-slavescanner.txt 2009-12-14 20:36:19 +0000
+++ lib/lp/soyuz/doc/buildd-slavescanner.txt 2010-01-05 16:22:16 +0000
@@ -1381,8 +1381,8 @@
1381Change the distroseries status for testing. FROZEN allows building in1381Change the distroseries status for testing. FROZEN allows building in
1382all pockets:1382all pockets:
13831383
1384 >>> from canonical.launchpad.interfaces import DistroSeriesStatus1384 >>> from canonical.launchpad.interfaces import SeriesStatus
1385 >>> hoary_i386.distroseries.status = DistroSeriesStatus.FROZEN1385 >>> hoary_i386.distroseries.status = SeriesStatus.FROZEN
13861386
1387Now we can start a build in other pockets, and see what archives are1387Now we can start a build in other pockets, and see what archives are
1388passed to the slave.1388passed to the slave.
13891389
=== modified file 'lib/lp/soyuz/doc/nascentupload-announcements.txt'
--- lib/lp/soyuz/doc/nascentupload-announcements.txt 2009-05-13 14:05:27 +0000
+++ lib/lp/soyuz/doc/nascentupload-announcements.txt 2010-01-05 16:22:16 +0000
@@ -58,11 +58,11 @@
58address and allow uploads to universe:58address and allow uploads to universe:
5959
60 >>> from canonical.launchpad.interfaces import (60 >>> from canonical.launchpad.interfaces import (
61 ... DistroSeriesStatus, IComponentSet, IDistributionSet,61 ... SeriesStatus, IComponentSet, IDistributionSet,
62 ... ILibraryFileAliasSet)62 ... ILibraryFileAliasSet)
63 >>> ubuntu = getUtility(IDistributionSet)['ubuntu']63 >>> ubuntu = getUtility(IDistributionSet)['ubuntu']
64 >>> hoary = ubuntu['hoary']64 >>> hoary = ubuntu['hoary']
65 >>> hoary.status = DistroSeriesStatus.DEVELOPMENT65 >>> hoary.status = SeriesStatus.DEVELOPMENT
66 >>> hoary.changeslist = "hoary-announce@lists.ubuntu.com"66 >>> hoary.changeslist = "hoary-announce@lists.ubuntu.com"
67 >>> from canonical.launchpad.database import ComponentSelection67 >>> from canonical.launchpad.database import ComponentSelection
68 >>> universe = getUtility(IComponentSet)['universe']68 >>> universe = getUtility(IComponentSet)['universe']
@@ -393,7 +393,7 @@
393393
394Release hoary, enable uploads to post-release pockets:394Release hoary, enable uploads to post-release pockets:
395395
396 >>> hoary.status = DistroSeriesStatus.CURRENT396 >>> hoary.status = SeriesStatus.CURRENT
397397
398UNAPPROVED source uploads for 'translations' section via insecure:398UNAPPROVED source uploads for 'translations' section via insecure:
399399
@@ -730,7 +730,7 @@
730Make hoary developmental again, as syncs only happen at that stage of a730Make hoary developmental again, as syncs only happen at that stage of a
731distroseries.731distroseries.
732732
733 >>> hoary.status = DistroSeriesStatus.DEVELOPMENT733 >>> hoary.status = SeriesStatus.DEVELOPMENT
734734
735 >>> bar_src = NascentUpload(735 >>> bar_src = NascentUpload(
736 ... datadir(736 ... datadir(
@@ -779,7 +779,7 @@
779779
780Reset hoary back to released and remove disk files created during processing:780Reset hoary back to released and remove disk files created during processing:
781781
782 >>> hoary.status = DistroSeriesStatus.CURRENT782 >>> hoary.status = SeriesStatus.CURRENT
783 >>> os.remove(os.path.join(datadir('suite/bar_1.0-5_debian_auto_sync'),783 >>> os.remove(os.path.join(datadir('suite/bar_1.0-5_debian_auto_sync'),
784 ... 'bar_1.0.orig.tar.gz'))784 ... 'bar_1.0.orig.tar.gz'))
785 >>> os.remove(os.path.join(datadir('suite/bar_1.0-6'),785 >>> os.remove(os.path.join(datadir('suite/bar_1.0-6'),
@@ -846,7 +846,7 @@
846and binary known in hoary, then our operations in post-release846and binary known in hoary, then our operations in post-release
847pockets can work:847pockets can work:
848848
849 >>> hoary.status = DistroSeriesStatus.DEVELOPMENT849 >>> hoary.status = SeriesStatus.DEVELOPMENT
850 >>> modified_sync_policy = getPolicy(850 >>> modified_sync_policy = getPolicy(
851 ... name='sync', distro='ubuntu', distroseries='hoary')851 ... name='sync', distro='ubuntu', distroseries='hoary')
852 >>> modified_sync_policy.can_upload_mixed = True852 >>> modified_sync_policy.can_upload_mixed = True
@@ -859,7 +859,7 @@
859 >>> result = foo_v1.do_accept()859 >>> result = foo_v1.do_accept()
860 >>> foo_v1.queue_root.setAccepted()860 >>> foo_v1.queue_root.setAccepted()
861 >>> pub_records = foo_v1.queue_root.realiseUpload()861 >>> pub_records = foo_v1.queue_root.realiseUpload()
862 >>> hoary.status = DistroSeriesStatus.CURRENT862 >>> hoary.status = SeriesStatus.CURRENT
863863
864Get rid of any emails generated:864Get rid of any emails generated:
865865
@@ -975,7 +975,7 @@
975permitted, but converted to ASCII, which is a limitation of the mailer.975permitted, but converted to ASCII, which is a limitation of the mailer.
976However, UTF-8 in the mail content is preserved.976However, UTF-8 in the mail content is preserved.
977977
978 >>> hoary.status = DistroSeriesStatus.DEVELOPMENT978 >>> hoary.status = SeriesStatus.DEVELOPMENT
979 >>> anything_policy = getPolicy(979 >>> anything_policy = getPolicy(
980 ... name='anything', distro='ubuntu', distroseries='hoary')980 ... name='anything', distro='ubuntu', distroseries='hoary')
981 >>> bar_upload = NascentUpload(981 >>> bar_upload = NascentUpload(
982982
=== modified file 'lib/lp/soyuz/doc/nascentupload.txt'
--- lib/lp/soyuz/doc/nascentupload.txt 2009-08-28 06:41:25 +0000
+++ lib/lp/soyuz/doc/nascentupload.txt 2010-01-05 16:22:16 +0000
@@ -18,11 +18,11 @@
18"launchpad" to handle this.18"launchpad" to handle this.
1919
20 >>> from canonical.launchpad.interfaces import (20 >>> from canonical.launchpad.interfaces import (
21 ... DistroSeriesStatus, IComponentSet, IDistributionSet)21 ... SeriesStatus, IComponentSet, IDistributionSet)
22 >>> from canonical.launchpad.database import ComponentSelection22 >>> from canonical.launchpad.database import ComponentSelection
23 >>> ubuntu = getUtility(IDistributionSet)['ubuntu']23 >>> ubuntu = getUtility(IDistributionSet)['ubuntu']
24 >>> hoary = ubuntu['hoary']24 >>> hoary = ubuntu['hoary']
25 >>> hoary.status = DistroSeriesStatus.DEVELOPMENT25 >>> hoary.status = SeriesStatus.DEVELOPMENT
26 >>> universe = getUtility(IComponentSet)['universe']26 >>> universe = getUtility(IComponentSet)['universe']
27 >>> from canonical.testing import LaunchpadZopelessLayer27 >>> from canonical.testing import LaunchpadZopelessLayer
28 >>> from canonical.database.sqlbase import commit28 >>> from canonical.database.sqlbase import commit
@@ -717,7 +717,7 @@
717to upload to -UPDATES in a DEVELOPMENT series.717to upload to -UPDATES in a DEVELOPMENT series.
718718
719 >>> LaunchpadZopelessLayer.switchDbUser('launchpad')719 >>> LaunchpadZopelessLayer.switchDbUser('launchpad')
720 >>> hoary.status = DistroSeriesStatus.CURRENT720 >>> hoary.status = SeriesStatus.CURRENT
721 >>> commit()721 >>> commit()
722 >>> LaunchpadZopelessLayer.switchDbUser('uploader')722 >>> LaunchpadZopelessLayer.switchDbUser('uploader')
723723
@@ -749,7 +749,7 @@
749And pop it back to development now that we're done749And pop it back to development now that we're done
750750
751 >>> LaunchpadZopelessLayer.switchDbUser('launchpad')751 >>> LaunchpadZopelessLayer.switchDbUser('launchpad')
752 >>> hoary.status = DistroSeriesStatus.DEVELOPMENT752 >>> hoary.status = SeriesStatus.DEVELOPMENT
753 >>> commit()753 >>> commit()
754 >>> LaunchpadZopelessLayer.switchDbUser('uploader')754 >>> LaunchpadZopelessLayer.switchDbUser('uploader')
755755
756756
=== modified file 'lib/lp/soyuz/doc/package-diff.txt'
--- lib/lp/soyuz/doc/package-diff.txt 2009-09-23 12:02:35 +0000
+++ lib/lp/soyuz/doc/package-diff.txt 2010-01-05 16:22:16 +0000
@@ -172,8 +172,8 @@
172We will release ubuntu/hoary so we can upload to post-RELEASE pockets172We will release ubuntu/hoary so we can upload to post-RELEASE pockets
173and ubuntu/breezy-autotest.173and ubuntu/breezy-autotest.
174174
175 >>> from canonical.launchpad.interfaces import DistroSeriesStatus175 >>> from canonical.launchpad.interfaces import SeriesStatus
176 >>> hoary.status = DistroSeriesStatus.CURRENT176 >>> hoary.status = SeriesStatus.CURRENT
177177
178We upload version '1.0-9' to hoary-updates and get the diff against178We upload version '1.0-9' to hoary-updates and get the diff against
179the last published version in the RELEASE pocket.179the last published version in the RELEASE pocket.
180180
=== modified file 'lib/lp/soyuz/doc/soyuz-set-of-uploads.txt'
--- lib/lp/soyuz/doc/soyuz-set-of-uploads.txt 2009-10-26 18:40:04 +0000
+++ lib/lp/soyuz/doc/soyuz-set-of-uploads.txt 2010-01-05 16:22:16 +0000
@@ -502,8 +502,8 @@
502Set ubuntutest/breezy as the "current series" to activate post-release502Set ubuntutest/breezy as the "current series" to activate post-release
503pockets.503pockets.
504504
505 >>> from canonical.launchpad.interfaces import DistroSeriesStatus505 >>> from canonical.launchpad.interfaces import SeriesStatus
506 >>> breezy.status = DistroSeriesStatus.CURRENT506 >>> breezy.status = SeriesStatus.CURRENT
507 >>> LaunchpadZopelessLayer.txn.commit()507 >>> LaunchpadZopelessLayer.txn.commit()
508508
509Since we are using 'sync' policy in the following tests the packages509Since we are using 'sync' policy in the following tests the packages
@@ -599,7 +599,7 @@
599Set ubuntutest/breezy to 'experimental' state again to not affect the599Set ubuntutest/breezy to 'experimental' state again to not affect the
600rest of the test:600rest of the test:
601601
602 >>> breezy.status = DistroSeriesStatus.EXPERIMENTAL602 >>> breezy.status = SeriesStatus.EXPERIMENTAL
603 >>> breezy.syncUpdate()603 >>> breezy.syncUpdate()
604604
605605
606606
=== modified file 'lib/lp/soyuz/doc/uploadpolicy.txt'
--- lib/lp/soyuz/doc/uploadpolicy.txt 2009-05-13 14:05:27 +0000
+++ lib/lp/soyuz/doc/uploadpolicy.txt 2010-01-05 16:22:16 +0000
@@ -78,7 +78,7 @@
78instead of UNAPPROVED)78instead of UNAPPROVED)
7979
80 >>> from canonical.launchpad.interfaces import (80 >>> from canonical.launchpad.interfaces import (
81 ... DistroSeriesStatus, IDistributionSet)81 ... SeriesStatus, IDistributionSet)
82 >>> ubuntu = getUtility(IDistributionSet)['ubuntu']82 >>> ubuntu = getUtility(IDistributionSet)['ubuntu']
83 >>> hoary = ubuntu['hoary']83 >>> hoary = ubuntu['hoary']
8484
@@ -102,7 +102,7 @@
102When the distroseries is FROZEN the uploads should wait in UNAPPROVED queue:102When the distroseries is FROZEN the uploads should wait in UNAPPROVED queue:
103103
104 >>> login('foo.bar@canonical.com')104 >>> login('foo.bar@canonical.com')
105 >>> hoary.status = DistroSeriesStatus.FROZEN105 >>> hoary.status = SeriesStatus.FROZEN
106 >>> from canonical.database.sqlbase import flush_database_updates106 >>> from canonical.database.sqlbase import flush_database_updates
107 >>> flush_database_updates()107 >>> flush_database_updates()
108108
109109
=== modified file 'lib/lp/soyuz/scripts/buildd.py'
--- lib/lp/soyuz/scripts/buildd.py 2009-10-26 18:40:04 +0000
+++ lib/lp/soyuz/scripts/buildd.py 2010-01-05 16:22:16 +0000
@@ -21,7 +21,7 @@
21from lp.services.scripts.base import (21from lp.services.scripts.base import (
22 LaunchpadCronScript, LaunchpadScriptFailure)22 LaunchpadCronScript, LaunchpadScriptFailure)
23from lp.registry.interfaces.distribution import IDistributionSet23from lp.registry.interfaces.distribution import IDistributionSet
24from lp.registry.interfaces.distroseries import DistroSeriesStatus24from lp.registry.interfaces.series import SeriesStatus
2525
26# XXX cprov 2009-04-16: This function should live in26# XXX cprov 2009-04-16: This function should live in
27# lp.registry.interfaces.distroseries. It cannot be done right now27# lp.registry.interfaces.distroseries. It cannot be done right now
@@ -159,7 +159,7 @@
159 # Iterate over all supported distroarchseries with available chroot.159 # Iterate over all supported distroarchseries with available chroot.
160 build_set = getUtility(IBuildSet)160 build_set = getUtility(IBuildSet)
161 for distroseries in distribution:161 for distroseries in distribution:
162 if distroseries.status == DistroSeriesStatus.OBSOLETE:162 if distroseries.status == SeriesStatus.OBSOLETE:
163 self.logger.debug(163 self.logger.debug(
164 "Skipping obsolete distroseries: %s" % distroseries.title)164 "Skipping obsolete distroseries: %s" % distroseries.title)
165 continue165 continue
166166
=== modified file 'lib/lp/soyuz/scripts/ftpmaster.py'
--- lib/lp/soyuz/scripts/ftpmaster.py 2009-12-10 11:42:07 +0000
+++ lib/lp/soyuz/scripts/ftpmaster.py 2010-01-05 16:22:16 +0000
@@ -37,7 +37,7 @@
37from canonical.launchpad.interfaces.librarian import ILibraryFileAliasSet37from canonical.launchpad.interfaces.librarian import ILibraryFileAliasSet
38from canonical.launchpad.webapp.interfaces import NotFoundError38from canonical.launchpad.webapp.interfaces import NotFoundError
39from lp.registry.interfaces.distribution import IDistributionSet39from lp.registry.interfaces.distribution import IDistributionSet
40from lp.registry.interfaces.distroseries import DistroSeriesStatus40from lp.registry.interfaces.series import SeriesStatus
41from lp.registry.interfaces.person import IPersonSet41from lp.registry.interfaces.person import IPersonSet
42from lp.registry.interfaces.pocket import (42from lp.registry.interfaces.pocket import (
43 PackagePublishingPocket, pocketsuffix)43 PackagePublishingPocket, pocketsuffix)
@@ -1064,7 +1064,7 @@
1064 """1064 """
1065 self.checkNoSuiteDefined()1065 self.checkNoSuiteDefined()
1066 try:1066 try:
1067 series = self.getSeriesByStatus(DistroSeriesStatus.CURRENT)1067 series = self.getSeriesByStatus(SeriesStatus.CURRENT)
1068 except NotFoundError, err:1068 except NotFoundError, err:
1069 raise LaunchpadScriptFailure(err)1069 raise LaunchpadScriptFailure(err)
10701070
@@ -1087,8 +1087,8 @@
1087 """1087 """
1088 self.checkNoSuiteDefined()1088 self.checkNoSuiteDefined()
1089 series = None1089 series = None
1090 wanted_status = (DistroSeriesStatus.DEVELOPMENT,1090 wanted_status = (SeriesStatus.DEVELOPMENT,
1091 DistroSeriesStatus.FROZEN)1091 SeriesStatus.FROZEN)
1092 for status in wanted_status:1092 for status in wanted_status:
1093 try:1093 try:
1094 series = self.getSeriesByStatus(status)1094 series = self.getSeriesByStatus(status)
@@ -1118,8 +1118,8 @@
1118 """1118 """
1119 self.checkNoSuiteDefined()1119 self.checkNoSuiteDefined()
1120 supported_series = []1120 supported_series = []
1121 unsupported_status = (DistroSeriesStatus.EXPERIMENTAL,1121 unsupported_status = (SeriesStatus.EXPERIMENTAL,
1122 DistroSeriesStatus.OBSOLETE)1122 SeriesStatus.OBSOLETE)
1123 for distroseries in self.location.distribution:1123 for distroseries in self.location.distribution:
1124 if distroseries.status not in unsupported_status:1124 if distroseries.status not in unsupported_status:
1125 supported_series.append(distroseries.name)1125 supported_series.append(distroseries.name)
@@ -1361,7 +1361,7 @@
1361 "and which is not the most recent distroseries.")1361 "and which is not the most recent distroseries.")
13621362
1363 # Is the distroseries in an obsolete state? Bail out now if not.1363 # Is the distroseries in an obsolete state? Bail out now if not.
1364 if distroseries.status != DistroSeriesStatus.OBSOLETE:1364 if distroseries.status != SeriesStatus.OBSOLETE:
1365 raise SoyuzScriptError(1365 raise SoyuzScriptError(
1366 "%s is not at status OBSOLETE." % distroseries.name)1366 "%s is not at status OBSOLETE." % distroseries.name)
13671367
13681368
=== modified file 'lib/lp/soyuz/scripts/tests/test_copypackage.py'
--- lib/lp/soyuz/scripts/tests/test_copypackage.py 2009-12-21 12:54:47 +0000
+++ lib/lp/soyuz/scripts/tests/test_copypackage.py 2010-01-05 16:22:16 +0000
@@ -23,7 +23,7 @@
23 CreateBugParams, IBugSet)23 CreateBugParams, IBugSet)
24from lp.bugs.interfaces.bugtask import BugTaskStatus24from lp.bugs.interfaces.bugtask import BugTaskStatus
25from lp.registry.interfaces.distribution import IDistributionSet25from lp.registry.interfaces.distribution import IDistributionSet
26from lp.registry.interfaces.distroseries import DistroSeriesStatus26from lp.registry.interfaces.series import SeriesStatus
27from lp.registry.interfaces.person import IPersonSet27from lp.registry.interfaces.person import IPersonSet
28from lp.registry.interfaces.pocket import PackagePublishingPocket28from lp.registry.interfaces.pocket import PackagePublishingPocket
29from lp.soyuz.adapters.packagelocation import PackageLocationError29from lp.soyuz.adapters.packagelocation import PackageLocationError
@@ -947,7 +947,7 @@
947 # Make ubuntutest/breezy-autotest CURRENT so uploads to SECURITY947 # Make ubuntutest/breezy-autotest CURRENT so uploads to SECURITY
948 # pocket can be accepted.948 # pocket can be accepted.
949 self.test_publisher.breezy_autotest.status = (949 self.test_publisher.breezy_autotest.status = (
950 DistroSeriesStatus.CURRENT)950 SeriesStatus.CURRENT)
951951
952 def createDelayedCopyContext(self):952 def createDelayedCopyContext(self):
953 """Create a context to allow delayed-copies test.953 """Create a context to allow delayed-copies test.
954954
=== modified file 'lib/lp/soyuz/scripts/tests/test_lpquerydistro.py'
--- lib/lp/soyuz/scripts/tests/test_lpquerydistro.py 2009-06-25 04:06:00 +0000
+++ lib/lp/soyuz/scripts/tests/test_lpquerydistro.py 2010-01-05 16:22:16 +0000
@@ -15,7 +15,7 @@
15from canonical.database.sqlbase import flush_database_updates15from canonical.database.sqlbase import flush_database_updates
16from canonical.testing import LaunchpadLayer16from canonical.testing import LaunchpadLayer
17from lp.registry.interfaces.distribution import IDistributionSet17from lp.registry.interfaces.distribution import IDistributionSet
18from lp.registry.interfaces.distroseries import DistroSeriesStatus18from lp.registry.interfaces.series import SeriesStatus
19from lp.services.scripts.base import LaunchpadScriptFailure19from lp.services.scripts.base import LaunchpadScriptFailure
20from lp.soyuz.scripts.ftpmaster import LpQueryDistro20from lp.soyuz.scripts.ftpmaster import LpQueryDistro
21from canonical.testing import LaunchpadZopelessLayer21from canonical.testing import LaunchpadZopelessLayer
@@ -156,7 +156,7 @@
156 self.assertEqual(helper.location.distribution.name, u'ubuntu')156 self.assertEqual(helper.location.distribution.name, u'ubuntu')
157 self.assertEqual(self.test_output, u'hoary')157 self.assertEqual(self.test_output, u'hoary')
158158
159 hoary.status = DistroSeriesStatus.FROZEN159 hoary.status = SeriesStatus.FROZEN
160 flush_database_updates()160 flush_database_updates()
161161
162 helper = self.getLpQueryDistro(test_args=['development'])162 helper = self.getLpQueryDistro(test_args=['development'])
163163
=== modified file 'lib/lp/soyuz/scripts/tests/test_obsoletedistroseries.py'
--- lib/lp/soyuz/scripts/tests/test_obsoletedistroseries.py 2009-06-25 04:06:00 +0000
+++ lib/lp/soyuz/scripts/tests/test_obsoletedistroseries.py 2010-01-05 16:22:16 +0000
@@ -21,7 +21,7 @@
21 SecureSourcePackagePublishingHistory,21 SecureSourcePackagePublishingHistory,
22 SourcePackagePublishingHistory)22 SourcePackagePublishingHistory)
23from lp.registry.interfaces.distribution import IDistributionSet23from lp.registry.interfaces.distribution import IDistributionSet
24from lp.registry.interfaces.distroseries import DistroSeriesStatus24from lp.registry.interfaces.series import SeriesStatus
25from lp.soyuz.interfaces.publishing import PackagePublishingStatus25from lp.soyuz.interfaces.publishing import PackagePublishingStatus
26from canonical.testing import LaunchpadZopelessLayer26from canonical.testing import LaunchpadZopelessLayer
2727
@@ -132,7 +132,7 @@
132 def testNothingToDoCase(self):132 def testNothingToDoCase(self):
133 """When there is nothing to do, we expect an exception."""133 """When there is nothing to do, we expect an exception."""
134 obsoleter = self.getObsoleter()134 obsoleter = self.getObsoleter()
135 self.warty.status = DistroSeriesStatus.OBSOLETE135 self.warty.status = SeriesStatus.OBSOLETE
136136
137 # Get all the published sources in warty.137 # Get all the published sources in warty.
138 published_sources, published_binaries = (138 published_sources, published_binaries = (
@@ -151,7 +151,7 @@
151 def testObsoleteDistroseriesWorks(self):151 def testObsoleteDistroseriesWorks(self):
152 """Make sure the required publications are obsoleted."""152 """Make sure the required publications are obsoleted."""
153 obsoleter = self.getObsoleter()153 obsoleter = self.getObsoleter()
154 self.warty.status = DistroSeriesStatus.OBSOLETE154 self.warty.status = SeriesStatus.OBSOLETE
155155
156 # Get all the published sources in warty.156 # Get all the published sources in warty.
157 published_sources, published_binaries = (157 published_sources, published_binaries = (
158158
=== modified file 'lib/lp/soyuz/scripts/tests/test_queue.py'
--- lib/lp/soyuz/scripts/tests/test_queue.py 2009-08-28 07:34:44 +0000
+++ lib/lp/soyuz/scripts/tests/test_queue.py 2010-01-05 16:22:16 +0000
@@ -28,7 +28,7 @@
28from lp.bugs.interfaces.bugtask import IBugTaskSet28from lp.bugs.interfaces.bugtask import IBugTaskSet
29from canonical.launchpad.interfaces.librarian import ILibraryFileAliasSet29from canonical.launchpad.interfaces.librarian import ILibraryFileAliasSet
30from lp.registry.interfaces.distribution import IDistributionSet30from lp.registry.interfaces.distribution import IDistributionSet
31from lp.registry.interfaces.distroseries import DistroSeriesStatus31from lp.registry.interfaces.series import SeriesStatus
32from lp.registry.interfaces.person import IPersonSet32from lp.registry.interfaces.person import IPersonSet
33from lp.registry.interfaces.pocket import PackagePublishingPocket33from lp.registry.interfaces.pocket import PackagePublishingPocket
34from lp.soyuz.interfaces.archive import ArchivePurpose, IArchiveSet34from lp.soyuz.interfaces.archive import ArchivePurpose, IArchiveSet
@@ -474,7 +474,7 @@
474 # to BACKPORTS.474 # to BACKPORTS.
475 breezy_autotest = getUtility(475 breezy_autotest = getUtility(
476 IDistributionSet)['ubuntu']['breezy-autotest']476 IDistributionSet)['ubuntu']['breezy-autotest']
477 breezy_autotest.status = DistroSeriesStatus.CURRENT477 breezy_autotest.status = SeriesStatus.CURRENT
478478
479 LaunchpadZopelessLayer.txn.commit()479 LaunchpadZopelessLayer.txn.commit()
480 LaunchpadZopelessLayer.switchDbUser(self.dbuser)480 LaunchpadZopelessLayer.switchDbUser(self.dbuser)
@@ -522,7 +522,7 @@
522 # to PROPOSED.522 # to PROPOSED.
523 breezy_autotest = getUtility(523 breezy_autotest = getUtility(
524 IDistributionSet)['ubuntu']['breezy-autotest']524 IDistributionSet)['ubuntu']['breezy-autotest']
525 breezy_autotest.status = DistroSeriesStatus.CURRENT525 breezy_autotest.status = SeriesStatus.CURRENT
526526
527 LaunchpadZopelessLayer.txn.commit()527 LaunchpadZopelessLayer.txn.commit()
528 LaunchpadZopelessLayer.switchDbUser(self.dbuser)528 LaunchpadZopelessLayer.switchDbUser(self.dbuser)
529529
=== modified file 'lib/lp/soyuz/tests/test_packageset.py'
--- lib/lp/soyuz/tests/test_packageset.py 2009-10-29 14:12:58 +0000
+++ lib/lp/soyuz/tests/test_packageset.py 2010-01-05 16:22:16 +0000
@@ -9,7 +9,7 @@
99
10from lp.testing import TestCaseWithFactory10from lp.testing import TestCaseWithFactory
11from lp.registry.interfaces.distribution import IDistributionSet11from lp.registry.interfaces.distribution import IDistributionSet
12from lp.registry.interfaces.distroseries import DistroSeriesStatus12from lp.registry.interfaces.series import SeriesStatus
13from lp.soyuz.interfaces.packageset import (13from lp.soyuz.interfaces.packageset import (
14 DuplicatePackagesetName, IPackagesetSet)14 DuplicatePackagesetName, IPackagesetSet)
1515
@@ -26,7 +26,7 @@
26 self.distroseries_current = self.distribution.currentseries26 self.distroseries_current = self.distribution.currentseries
27 self.distroseries_experimental = self.factory.makeDistroRelease(27 self.distroseries_experimental = self.factory.makeDistroRelease(
28 distribution = self.distribution, name="experimental",28 distribution = self.distribution, name="experimental",
29 status=DistroSeriesStatus.EXPERIMENTAL)29 status=SeriesStatus.EXPERIMENTAL)
3030
31 self.person1 = self.factory.makePerson(31 self.person1 = self.factory.makePerson(
32 name='hacker', displayname=u'Happy Hacker')32 name='hacker', displayname=u'Happy Hacker')
@@ -133,10 +133,10 @@
133 self.distroseries_current = self.distribution.currentseries133 self.distroseries_current = self.distribution.currentseries
134 self.distroseries_experimental = self.factory.makeDistroRelease(134 self.distroseries_experimental = self.factory.makeDistroRelease(
135 distribution = self.distribution, name="experimental",135 distribution = self.distribution, name="experimental",
136 status=DistroSeriesStatus.EXPERIMENTAL)136 status=SeriesStatus.EXPERIMENTAL)
137 self.distroseries_experimental2 = self.factory.makeDistroRelease(137 self.distroseries_experimental2 = self.factory.makeDistroRelease(
138 distribution = self.distribution, name="experimental2",138 distribution = self.distribution, name="experimental2",
139 status=DistroSeriesStatus.EXPERIMENTAL)139 status=SeriesStatus.EXPERIMENTAL)
140140
141 self.person1 = self.factory.makePerson(141 self.person1 = self.factory.makePerson(
142 name='hacker', displayname=u'Happy Hacker')142 name='hacker', displayname=u'Happy Hacker')
143143
=== modified file 'lib/lp/soyuz/tests/test_packageupload.py'
--- lib/lp/soyuz/tests/test_packageupload.py 2009-12-07 13:45:31 +0000
+++ lib/lp/soyuz/tests/test_packageupload.py 2010-01-05 16:22:16 +0000
@@ -15,7 +15,7 @@
15from email import message_from_string15from email import message_from_string
16from lp.archiveuploader.tests import datadir16from lp.archiveuploader.tests import datadir
17from lp.registry.interfaces.distribution import IDistributionSet17from lp.registry.interfaces.distribution import IDistributionSet
18from lp.registry.interfaces.distroseries import DistroSeriesStatus18from lp.registry.interfaces.series import SeriesStatus
19from lp.registry.interfaces.pocket import PackagePublishingPocket19from lp.registry.interfaces.pocket import PackagePublishingPocket
20from lp.services.mail import stub20from lp.services.mail import stub
21from lp.soyuz.interfaces.archive import ArchivePurpose21from lp.soyuz.interfaces.archive import ArchivePurpose
@@ -180,7 +180,7 @@
180 # Release ubuntutest/breezy-autotest, so delayed-copies to180 # Release ubuntutest/breezy-autotest, so delayed-copies to
181 # SECURITY pocket can be accepted.181 # SECURITY pocket can be accepted.
182 self.test_publisher.breezy_autotest.status = (182 self.test_publisher.breezy_autotest.status = (
183 DistroSeriesStatus.CURRENT)183 SeriesStatus.CURRENT)
184184
185 # Create an ancestry publication in 'multiverse'.185 # Create an ancestry publication in 'multiverse'.
186 ancestry_source = self.test_publisher.getPubSource(186 ancestry_source = self.test_publisher.getPubSource(
@@ -281,7 +281,7 @@
281 # Create the default delayed-copy context.281 # Create the default delayed-copy context.
282 delayed_copy = self.createDelayedCopy(source_only=True)282 delayed_copy = self.createDelayedCopy(source_only=True)
283 self.test_publisher.breezy_autotest.status = (283 self.test_publisher.breezy_autotest.status = (
284 DistroSeriesStatus.CURRENT)284 SeriesStatus.CURRENT)
285 self.layer.txn.commit()285 self.layer.txn.commit()
286286
287 # Accept and publish the delayed-copy.287 # Accept and publish the delayed-copy.
288288
=== modified file 'lib/lp/soyuz/tests/test_publishing_top_level_api.py'
--- lib/lp/soyuz/tests/test_publishing_top_level_api.py 2009-08-28 07:34:44 +0000
+++ lib/lp/soyuz/tests/test_publishing_top_level_api.py 2010-01-05 16:22:16 +0000
@@ -7,7 +7,7 @@
77
8from lp.soyuz.tests.test_publishing import TestNativePublishingBase8from lp.soyuz.tests.test_publishing import TestNativePublishingBase
99
10from lp.registry.interfaces.distroseries import DistroSeriesStatus10from lp.registry.interfaces.series import SeriesStatus
11from lp.registry.interfaces.pocket import PackagePublishingPocket11from lp.registry.interfaces.pocket import PackagePublishingPocket
12from lp.soyuz.interfaces.publishing import PackagePublishingStatus12from lp.soyuz.interfaces.publishing import PackagePublishingStatus
1313
@@ -167,7 +167,7 @@
167 Publication to UPDATES pocket (post-release pockets) are ignored167 Publication to UPDATES pocket (post-release pockets) are ignored
168 """168 """
169 self.assertEqual(169 self.assertEqual(
170 self.breezy_autotest.status, DistroSeriesStatus.EXPERIMENTAL)170 self.breezy_autotest.status, SeriesStatus.EXPERIMENTAL)
171 self.assertEqual(self.breezy_autotest.isUnstable(), True)171 self.assertEqual(self.breezy_autotest.isUnstable(), True)
172 self.checkPublicationsAreConsidered(PackagePublishingPocket.RELEASE)172 self.checkPublicationsAreConsidered(PackagePublishingPocket.RELEASE)
173 self.checkPublicationsAreIgnored(PackagePublishingPocket.UPDATES)173 self.checkPublicationsAreIgnored(PackagePublishingPocket.UPDATES)
@@ -179,11 +179,11 @@
179 Publications to UPDATES pocket are considered.179 Publications to UPDATES pocket are considered.
180 """180 """
181 # Release ubuntu/breezy-autotest.181 # Release ubuntu/breezy-autotest.
182 self.breezy_autotest.status = DistroSeriesStatus.CURRENT182 self.breezy_autotest.status = SeriesStatus.CURRENT
183 self.layer.commit()183 self.layer.commit()
184184
185 self.assertEqual(185 self.assertEqual(
186 self.breezy_autotest.status, DistroSeriesStatus.CURRENT)186 self.breezy_autotest.status, SeriesStatus.CURRENT)
187 self.assertEqual(self.breezy_autotest.isUnstable(), False)187 self.assertEqual(self.breezy_autotest.isUnstable(), False)
188 self.checkPublicationsAreConsidered(PackagePublishingPocket.UPDATES)188 self.checkPublicationsAreConsidered(PackagePublishingPocket.UPDATES)
189 self.checkPublicationsAreIgnored(PackagePublishingPocket.RELEASE)189 self.checkPublicationsAreIgnored(PackagePublishingPocket.RELEASE)
@@ -194,11 +194,11 @@
194 Publications to both, RELEASE and UPDATES, pockets are considered.194 Publications to both, RELEASE and UPDATES, pockets are considered.
195 """195 """
196 # Release ubuntu/breezy-autotest.196 # Release ubuntu/breezy-autotest.
197 self.breezy_autotest.status = DistroSeriesStatus.FROZEN197 self.breezy_autotest.status = SeriesStatus.FROZEN
198 self.layer.commit()198 self.layer.commit()
199199
200 self.assertEqual(200 self.assertEqual(
201 self.breezy_autotest.status, DistroSeriesStatus.FROZEN)201 self.breezy_autotest.status, SeriesStatus.FROZEN)
202 self.assertEqual(202 self.assertEqual(
203 self.breezy_autotest.isUnstable(), True)203 self.breezy_autotest.isUnstable(), True)
204 self.checkPublicationsAreConsidered(PackagePublishingPocket.UPDATES)204 self.checkPublicationsAreConsidered(PackagePublishingPocket.UPDATES)
@@ -249,7 +249,7 @@
249 self._createDefaulSourcePublications())249 self._createDefaulSourcePublications())
250250
251 # Release 'breezy-autotest'.251 # Release 'breezy-autotest'.
252 self.breezy_autotest.status = DistroSeriesStatus.CURRENT252 self.breezy_autotest.status = SeriesStatus.CURRENT
253 self.layer.commit()253 self.layer.commit()
254254
255 # Since the distroseries is stable, nothing is returned because255 # Since the distroseries is stable, nothing is returned because
@@ -282,7 +282,7 @@
282 pub_pending_release, pub_published_release, pub_pending_updates = (282 pub_pending_release, pub_published_release, pub_pending_updates = (
283 self._createDefaulSourcePublications())283 self._createDefaulSourcePublications())
284 # Freeze 'breezy-autotest'.284 # Freeze 'breezy-autotest'.
285 self.breezy_autotest.status = DistroSeriesStatus.FROZEN285 self.breezy_autotest.status = SeriesStatus.FROZEN
286 self.layer.commit()286 self.layer.commit()
287287
288 # Usual publication procedure for a distroseries in development288 # Usual publication procedure for a distroseries in development
@@ -361,7 +361,7 @@
361 self._createDefaulBinaryPublications())361 self._createDefaulBinaryPublications())
362362
363 # Release 'breezy-autotest'363 # Release 'breezy-autotest'
364 self.breezy_autotest.status = DistroSeriesStatus.CURRENT364 self.breezy_autotest.status = SeriesStatus.CURRENT
365 self.layer.commit()365 self.layer.commit()
366366
367 # Since the distroseries is stable, nothing is returned because367 # Since the distroseries is stable, nothing is returned because
@@ -394,7 +394,7 @@
394 pub_pending_release, pub_published_release, pub_pending_updates = (394 pub_pending_release, pub_published_release, pub_pending_updates = (
395 self._createDefaulBinaryPublications())395 self._createDefaulBinaryPublications())
396 # Freeze 'breezy-autotest'396 # Freeze 'breezy-autotest'
397 self.breezy_autotest.status = DistroSeriesStatus.FROZEN397 self.breezy_autotest.status = SeriesStatus.FROZEN
398 self.layer.commit()398 self.layer.commit()
399399
400 # Usual publication procedure for a distroseries in development400 # Usual publication procedure for a distroseries in development
401401
=== modified file 'lib/lp/testing/factory.py'
--- lib/lp/testing/factory.py 2010-01-05 00:53:47 +0000
+++ lib/lp/testing/factory.py 2010-01-05 16:22:16 +0000
@@ -14,11 +14,11 @@
14 ]14 ]
1515
16from datetime import datetime, timedelta16from datetime import datetime, timedelta
17from email.Encoders import encode_base6417from email.encoders import encode_base64
18from email.Utils import make_msgid, formatdate18from email.utils import make_msgid, formatdate
19from email.Message import Message as EmailMessage19from email.message import Message as EmailMessage
20from email.MIMEText import MIMEText20from email.mime.text import MIMEText
21from email.MIMEMultipart import MIMEMultipart21from email.mime.multipart import MIMEMultipart
22from itertools import count22from itertools import count
23from StringIO import StringIO23from StringIO import StringIO
24import os.path24import os.path
@@ -100,8 +100,8 @@
100from lp.registry.model.milestone import Milestone100from lp.registry.model.milestone import Milestone
101from lp.registry.model.suitesourcepackage import SuiteSourcePackage101from lp.registry.model.suitesourcepackage import SuiteSourcePackage
102from lp.registry.interfaces.distribution import IDistributionSet102from lp.registry.interfaces.distribution import IDistributionSet
103from lp.registry.interfaces.distroseries import (103from lp.registry.interfaces.series import SeriesStatus
104 DistroSeriesStatus, IDistroSeries)104from lp.registry.interfaces.distroseries import IDistroSeries
105from lp.registry.interfaces.gpg import GPGKeyAlgorithm, IGPGKeySet105from lp.registry.interfaces.gpg import GPGKeyAlgorithm, IGPGKeySet
106from lp.registry.interfaces.mailinglist import (106from lp.registry.interfaces.mailinglist import (
107 IMailingListSet, MailingListStatus)107 IMailingListSet, MailingListStatus)
@@ -511,7 +511,8 @@
511 group = self.makeTranslationGroup()511 group = self.makeTranslationGroup()
512 if person is None:512 if person is None:
513 person = self.makePerson()513 person = self.makePerson()
514 ITranslationsPerson(person).translations_relicensing_agreement = license514 ITranslationsPerson(person).translations_relicensing_agreement = (
515 license)
515 return getUtility(ITranslatorSet).new(group, language, person)516 return getUtility(ITranslatorSet).new(group, language, person)
516517
517 def makeMilestone(518 def makeMilestone(
@@ -1442,7 +1443,7 @@
1442 members, owner)1443 members, owner)
14431444
1444 def makeDistroRelease(self, distribution=None, version=None,1445 def makeDistroRelease(self, distribution=None, version=None,
1445 status=DistroSeriesStatus.DEVELOPMENT,1446 status=SeriesStatus.DEVELOPMENT,
1446 parent_series=None, name=None):1447 parent_series=None, name=None):
1447 """Make a new distro release."""1448 """Make a new distro release."""
1448 if distribution is None:1449 if distribution is None:
14491450
=== modified file 'lib/lp/translations/browser/distribution.py'
--- lib/lp/translations/browser/distribution.py 2009-10-26 18:40:04 +0000
+++ lib/lp/translations/browser/distribution.py 2010-01-05 16:22:16 +0000
@@ -19,7 +19,7 @@
19 LaunchpadView, Link)19 LaunchpadView, Link)
20from canonical.launchpad.webapp.menu import NavigationMenu20from canonical.launchpad.webapp.menu import NavigationMenu
21from lp.registry.interfaces.distribution import IDistribution21from lp.registry.interfaces.distribution import IDistribution
22from lp.registry.interfaces.distroseries import DistroSeriesStatus22from lp.registry.interfaces.series import SeriesStatus
23from lp.registry.browser.distribution import DistributionEditView23from lp.registry.browser.distribution import DistributionEditView
24from lp.translations.browser.translations import TranslationsMixin24from lp.translations.browser.translations import TranslationsMixin
2525
@@ -100,7 +100,7 @@
100 series = [100 series = [
101 series101 series
102 for series in self.context.series102 for series in self.context.series
103 if (series.status != DistroSeriesStatus.OBSOLETE103 if (series.status != SeriesStatus.OBSOLETE
104 and (self.translation_focus is None or104 and (self.translation_focus is None or
105 self.translation_focus.id != series.id))105 self.translation_focus.id != series.id))
106 ]106 ]
107107
=== modified file 'lib/lp/translations/browser/tests/distroseries-views.txt'
--- lib/lp/translations/browser/tests/distroseries-views.txt 2009-07-16 14:40:28 +0000
+++ lib/lp/translations/browser/tests/distroseries-views.txt 2010-01-05 16:22:16 +0000
@@ -5,7 +5,7 @@
5Let's use ubuntu/hoary for these tests.5Let's use ubuntu/hoary for these tests.
66
7 >>> from canonical.launchpad.interfaces import IDistributionSet7 >>> from canonical.launchpad.interfaces import IDistributionSet
8 >>> from lp.registry.interfaces.distroseries import DistroSeriesStatus8 >>> from lp.registry.interfaces.series import SeriesStatus
9 >>> ubuntu = getUtility(IDistributionSet).getByName('ubuntu')9 >>> ubuntu = getUtility(IDistributionSet).getByName('ubuntu')
10 >>> hoary = ubuntu.getSeries('hoary')10 >>> hoary = ubuntu.getSeries('hoary')
1111
@@ -13,7 +13,7 @@
13message.13message.
1414
15 >>> login('foo.bar@canonical.com')15 >>> login('foo.bar@canonical.com')
16 >>> hoary.status = DistroSeriesStatus.CURRENT16 >>> hoary.status = SeriesStatus.CURRENT
1717
18== Hiding translations ==18== Hiding translations ==
1919
2020
=== modified file 'lib/lp/translations/model/translationimportqueue.py'
--- lib/lp/translations/model/translationimportqueue.py 2009-12-24 11:34:12 +0000
+++ lib/lp/translations/model/translationimportqueue.py 2010-01-05 16:22:16 +0000
@@ -36,8 +36,8 @@
36from canonical.launchpad.interfaces.lpstorm import IMasterStore36from canonical.launchpad.interfaces.lpstorm import IMasterStore
37from canonical.launchpad.webapp.interfaces import NotFoundError37from canonical.launchpad.webapp.interfaces import NotFoundError
38from lp.registry.interfaces.distribution import IDistribution38from lp.registry.interfaces.distribution import IDistribution
39from lp.registry.interfaces.distroseries import (39from lp.registry.interfaces.series import SeriesStatus
40 IDistroSeries, DistroSeriesStatus)40from lp.registry.interfaces.distroseries import IDistroSeries
41from lp.registry.interfaces.person import (41from lp.registry.interfaces.person import (
42 IPerson, validate_person_not_private_membership)42 IPerson, validate_person_not_private_membership)
43from lp.registry.interfaces.product import IProduct43from lp.registry.interfaces.product import IProduct
@@ -1284,7 +1284,7 @@
1284 Distribution.id = DistroSeries.distribution1284 Distribution.id = DistroSeries.distribution
1285 WHERE DistroSeries.releasestatus = %s1285 WHERE DistroSeries.releasestatus = %s
1286 LIMIT 100)1286 LIMIT 100)
1287 """ % quote(DistroSeriesStatus.OBSOLETE))1287 """ % quote(SeriesStatus.OBSOLETE))
1288 return cur.rowcount1288 return cur.rowcount
12891289
1290 def cleanUpQueue(self):1290 def cleanUpQueue(self):
12911291
=== modified file 'lib/lp/translations/scripts/remove_obsolete_translations.py'
--- lib/lp/translations/scripts/remove_obsolete_translations.py 2009-07-17 00:26:05 +0000
+++ lib/lp/translations/scripts/remove_obsolete_translations.py 2010-01-05 16:22:16 +0000
@@ -10,7 +10,7 @@
1010
11from canonical.database.sqlbase import quote11from canonical.database.sqlbase import quote
1212
13from lp.registry.interfaces.distroseries import DistroSeriesStatus13from lp.registry.interfaces.series import SeriesStatus
14from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities14from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
15from canonical.launchpad.interfaces.looptuner import ITunableLoop15from canonical.launchpad.interfaces.looptuner import ITunableLoop
1616
@@ -174,7 +174,7 @@
174 ON POTemplate.distroseries=DistroSeries.id174 ON POTemplate.distroseries=DistroSeries.id
175 WHERE DistroSeries.releasestatus=%s AND175 WHERE DistroSeries.releasestatus=%s AND
176 DistroSeries.distribution=%s""" % (176 DistroSeries.distribution=%s""" % (
177 quote(DistroSeriesStatus.OBSOLETE),177 quote(SeriesStatus.OBSOLETE),
178 quote(getUtility(ILaunchpadCelebrities).ubuntu))178 quote(getUtility(ILaunchpadCelebrities).ubuntu))
179 result = self.store.execute(query)179 result = self.store.execute(query)
180 count = result.get_one()180 count = result.get_one()
@@ -200,7 +200,7 @@
200 WHERE DistroSeries.releasestatus != %s200 WHERE DistroSeries.releasestatus != %s
201 GROUP BY DistroSeries.id201 GROUP BY DistroSeries.id
202 ORDER BY DistroSeries.id""" % quote(202 ORDER BY DistroSeries.id""" % quote(
203 DistroSeriesStatus.OBSOLETE)203 SeriesStatus.OBSOLETE)
204 result = self.store.execute(query)204 result = self.store.execute(query)
205 return result.get_all()205 return result.get_all()
206206
@@ -216,7 +216,7 @@
216 productseries IS NOT NULL216 productseries IS NOT NULL
217 GROUP BY POTemplate.id217 GROUP BY POTemplate.id
218 ORDER BY POTemplate.id""" % quote(218 ORDER BY POTemplate.id""" % quote(
219 DistroSeriesStatus.OBSOLETE)219 SeriesStatus.OBSOLETE)
220 result = self.store.execute(query)220 result = self.store.execute(query)
221 return result.get_all()221 return result.get_all()
222222
@@ -232,7 +232,7 @@
232 productseries IS NOT NULL232 productseries IS NOT NULL
233 GROUP BY POTemplate.id233 GROUP BY POTemplate.id
234 ORDER BY POTemplate.id""" % quote(234 ORDER BY POTemplate.id""" % quote(
235 DistroSeriesStatus.OBSOLETE)235 SeriesStatus.OBSOLETE)
236 result = self.store.execute(query)236 result = self.store.execute(query)
237 return result.get_all()237 return result.get_all()
238238
@@ -250,7 +250,7 @@
250 productseries IS NOT NULL250 productseries IS NOT NULL
251 GROUP BY POFile.id251 GROUP BY POFile.id
252 ORDER BY POFile.id""" % quote(252 ORDER BY POFile.id""" % quote(
253 DistroSeriesStatus.OBSOLETE)253 SeriesStatus.OBSOLETE)
254 result = self.store.execute(query)254 result = self.store.execute(query)
255 return result.get_all()255 return result.get_all()
256256
@@ -316,7 +316,7 @@
316 'join_column' : 'distroseries',316 'join_column' : 'distroseries',
317 'distribution' :317 'distribution' :
318 quote(getUtility(ILaunchpadCelebrities).ubuntu),318 quote(getUtility(ILaunchpadCelebrities).ubuntu),
319 'releasestatus' : quote(DistroSeriesStatus.OBSOLETE),319 'releasestatus' : quote(SeriesStatus.OBSOLETE),
320 'collection_sql' : collect_obsolete_potemplates_query,320 'collection_sql' : collect_obsolete_potemplates_query,
321 },321 },
322 }322 }
323323
=== modified file 'lib/lp/translations/templates/pofile-details.pt'
--- lib/lp/translations/templates/pofile-details.pt 2009-12-13 08:28:51 +0000
+++ lib/lp/translations/templates/pofile-details.pt 2010-01-05 16:22:16 +0000
@@ -42,12 +42,10 @@
4242
43 <ul tal:condition="view/contributors">43 <ul tal:condition="view/contributors">
44 <li tal:repeat="contributor view/contributors">44 <li tal:repeat="contributor view/contributors">
45 <tal:not-merged condition="not: contributor/merged">45 <a tal:replace="structure contributor/fmt:link" />
46 <a tal:replace="structure contributor/fmt:link" />46 (<a tal:attributes="
47 (<a tal:attributes="47 href string:${context/fmt:url}/+filter?person=${contributor/name}"
48 href string:${context/fmt:url}/+filter?person=${contributor/name}"48 >filter</a>)
49 >filter</a>)
50 </tal:not-merged>
51 </li>49 </li>
52 </ul>50 </ul>
5351
5452
=== modified file 'lib/lp/translations/tests/test_autoapproval.py'
--- lib/lp/translations/tests/test_autoapproval.py 2009-12-18 09:25:14 +0000
+++ lib/lp/translations/tests/test_autoapproval.py 2010-01-05 16:22:16 +0000
@@ -18,7 +18,7 @@
18from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities18from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
19from canonical.launchpad.interfaces.lpstorm import IMasterStore19from canonical.launchpad.interfaces.lpstorm import IMasterStore
2020
21from lp.registry.interfaces.distroseries import DistroSeriesStatus21from lp.registry.interfaces.series import SeriesStatus
22from lp.registry.model.distribution import Distribution22from lp.registry.model.distribution import Distribution
23from lp.registry.model.sourcepackagename import (23from lp.registry.model.sourcepackagename import (
24 SourcePackageName,24 SourcePackageName,
@@ -820,7 +820,7 @@
820 self.queue._cleanUpObsoleteDistroEntries(self.store)820 self.queue._cleanUpObsoleteDistroEntries(self.store)
821 self.assertTrue(self._exists(entry_id))821 self.assertTrue(self._exists(entry_id))
822822
823 entry.distroseries.status = DistroSeriesStatus.OBSOLETE823 entry.distroseries.status = SeriesStatus.OBSOLETE
824 entry.distroseries.syncUpdate()824 entry.distroseries.syncUpdate()
825825
826 become_the_gardener(self.layer)826 become_the_gardener(self.layer)