Merge ~cjwatson/launchpad:stormify-archivedependency into launchpad:master

Proposed by Colin Watson
Status: Merged
Approved by: Colin Watson
Approved revision: 73a16a61ca94c3e9381e0802bf7488cbb4918b4c
Merge reported by: Otto Co-Pilot
Merged at revision: not available
Proposed branch: ~cjwatson/launchpad:stormify-archivedependency
Merge into: launchpad:master
Diff against target: 149 lines (+46/-32)
4 files modified
lib/lp/soyuz/browser/archive.py (+1/-1)
lib/lp/soyuz/doc/archive.txt (+1/-1)
lib/lp/soyuz/model/archive.py (+9/-12)
lib/lp/soyuz/model/archivedependency.py (+35/-18)
Reviewer Review Type Date Requested Status
Ioana Lasc (community) Approve
Review via email: mp+392161@code.launchpad.net

Commit message

Convert ArchiveDependency to Storm

To post a comment you must log in.
Revision history for this message
Ioana Lasc (ilasc) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/lib/lp/soyuz/browser/archive.py b/lib/lp/soyuz/browser/archive.py
2index 3170ea0..5b80a58 100644
3--- a/lib/lp/soyuz/browser/archive.py
4+++ b/lib/lp/soyuz/browser/archive.py
5@@ -1798,7 +1798,7 @@ class ArchiveEditDependenciesView(ArchiveViewBase, LaunchpadFormView):
6 @cachedproperty
7 def has_dependencies(self):
8 """Whether or not the PPA has recorded dependencies."""
9- return bool(self.context.dependencies)
10+ return not self.context.dependencies.is_empty()
11
12 @property
13 def messages(self):
14diff --git a/lib/lp/soyuz/doc/archive.txt b/lib/lp/soyuz/doc/archive.txt
15index ad7f3d7..f03223a 100644
16--- a/lib/lp/soyuz/doc/archive.txt
17+++ b/lib/lp/soyuz/doc/archive.txt
18@@ -746,7 +746,7 @@ required dependencies when building.
19
20 >>> def print_dependencies(archive):
21 ... dependencies = archive.dependencies
22- ... if not dependencies:
23+ ... if dependencies.is_empty():
24 ... print("No dependencies recorded.")
25 ... return
26 ... for dep in dependencies:
27diff --git a/lib/lp/soyuz/model/archive.py b/lib/lp/soyuz/model/archive.py
28index 529dc7a..38ce6af 100644
29--- a/lib/lp/soyuz/model/archive.py
30+++ b/lib/lp/soyuz/model/archive.py
31@@ -499,16 +499,13 @@ class Archive(SQLBase):
32
33 @property
34 def dependencies(self):
35- query = """
36- ArchiveDependency.dependency = Archive.id AND
37- Archive.owner = Person.id AND
38- ArchiveDependency.archive = %s
39- """ % sqlvalues(self)
40- clauseTables = ["Archive", "Person"]
41- orderBy = ['Person.displayname']
42- dependencies = ArchiveDependency.select(
43- query, clauseTables=clauseTables, orderBy=orderBy)
44- return dependencies
45+ # Circular import.
46+ from lp.registry.model.person import Person
47+ return IStore(ArchiveDependency).find(
48+ ArchiveDependency,
49+ ArchiveDependency.dependency == Archive.id,
50+ Archive.owner == Person.id,
51+ ArchiveDependency.archive == self).order_by(Person.display_name)
52
53 @cachedproperty
54 def default_component(self):
55@@ -1127,8 +1124,8 @@ class Archive(SQLBase):
56
57 def getArchiveDependency(self, dependency):
58 """See `IArchive`."""
59- return ArchiveDependency.selectOneBy(
60- archive=self, dependency=dependency)
61+ return IStore(ArchiveDependency).find(
62+ ArchiveDependency, archive=self, dependency=dependency).one()
63
64 def removeArchiveDependency(self, dependency):
65 """See `IArchive`."""
66diff --git a/lib/lp/soyuz/model/archivedependency.py b/lib/lp/soyuz/model/archivedependency.py
67index 737c167..8fcd899 100644
68--- a/lib/lp/soyuz/model/archivedependency.py
69+++ b/lib/lp/soyuz/model/archivedependency.py
70@@ -7,40 +7,54 @@ __metaclass__ = type
71
72 __all__ = ['ArchiveDependency']
73
74-
75-from sqlobject import ForeignKey
76+import pytz
77+from storm.locals import (
78+ DateTime,
79+ Int,
80+ Reference,
81+ Store,
82+ )
83 from zope.interface import implementer
84
85 from lp.registry.interfaces.pocket import PackagePublishingPocket
86 from lp.services.database.constants import UTC_NOW
87-from lp.services.database.datetimecol import UtcDateTimeCol
88-from lp.services.database.enumcol import EnumCol
89-from lp.services.database.sqlbase import SQLBase
90+from lp.services.database.enumcol import DBEnum
91+from lp.services.database.stormbase import StormBase
92 from lp.soyuz.adapters.archivedependencies import get_components_for_context
93 from lp.soyuz.interfaces.archivedependency import IArchiveDependency
94
95
96 @implementer(IArchiveDependency)
97-class ArchiveDependency(SQLBase):
98+class ArchiveDependency(StormBase):
99 """See `IArchiveDependency`."""
100
101- _table = 'ArchiveDependency'
102- _defaultOrder = 'id'
103+ __storm_table__ = 'ArchiveDependency'
104+ __storm_order__ = 'id'
105+
106+ id = Int(primary=True)
107
108- date_created = UtcDateTimeCol(
109- dbName='date_created', notNull=True, default=UTC_NOW)
110+ date_created = DateTime(
111+ name='date_created', tzinfo=pytz.UTC, allow_none=False,
112+ default=UTC_NOW)
113
114- archive = ForeignKey(
115- foreignKey='Archive', dbName='archive', notNull=True)
116+ archive_id = Int(name='archive', allow_none=False)
117+ archive = Reference(archive_id, 'Archive.id')
118
119- dependency = ForeignKey(
120- foreignKey='Archive', dbName='dependency', notNull=True)
121+ dependency_id = Int(name='dependency', allow_none=False)
122+ dependency = Reference(dependency_id, 'Archive.id')
123
124- pocket = EnumCol(
125- dbName='pocket', notNull=True, schema=PackagePublishingPocket)
126+ pocket = DBEnum(
127+ name='pocket', allow_none=False, enum=PackagePublishingPocket)
128
129- component = ForeignKey(
130- foreignKey='Component', dbName='component')
131+ component_id = Int(name='component', allow_none=True)
132+ component = Reference(component_id, 'Component.id')
133+
134+ def __init__(self, archive, dependency, pocket, component=None):
135+ super(ArchiveDependency, self).__init__()
136+ self.archive = archive
137+ self.dependency = dependency
138+ self.pocket = pocket
139+ self.component = component
140
141 @property
142 def component_name(self):
143@@ -72,3 +86,6 @@ class ArchiveDependency(SQLBase):
144 self.component, distroseries, self.pocket))
145
146 return "%s (%s)" % (pocket_title, component_part)
147+
148+ def destroySelf(self):
149+ Store.of(self).remove(self)

Subscribers

People subscribed via source and target branches

to status/vote changes: