47
44
initialized = Bool(allow_none=False)
49
is_overlay = Bool(allow_none=False, default=False)
52
dbName='pocket', notNull=False,
53
schema=PackagePublishingPocket)
55
component_id = Int(name='component', allow_none=True)
56
component = Reference(component_id, 'Component.id')
59
47
class DistroSeriesParentSet:
60
48
"""See `IDistroSeriesParentSet`."""
61
49
implements(IDistroSeriesParentSet)
62
50
title = "Cross reference of parent and derived distroseries."
64
def new(self, derived_series, parent_series, initialized,
65
is_overlay=False, pocket=None, component=None):
52
def new(self, derived_series, parent_series, initialized):
66
53
"""Make and return a new `DistroSeriesParent`."""
67
54
store = IMasterStore(DistroSeriesParent)
68
55
dsp = DistroSeriesParent()
69
56
dsp.derived_series = derived_series
70
57
dsp.parent_series = parent_series
71
58
dsp.initialized = initialized
72
dsp.is_overlay = is_overlay
74
dsp.component = component
89
73
DistroSeriesParent,
90
74
DistroSeriesParent.parent_series_id == parent_series.id)
92
def getByDerivedAndParentSeries(self, derived_series, parent_series):
93
"""See `IDistroSeriesParentSet`."""
94
store = IStore(DistroSeriesParent)
97
DistroSeriesParent.parent_series_id == parent_series.id,
98
DistroSeriesParent.derived_series_id == derived_series.id).one()
100
def getFlattenedOverlayTree(self, derived_series):
101
"""See `IDistroSeriesParentSet`."""
102
self.getByDerivedSeries(derived_series)
103
rec_overlay_query = '''
104
RECURSIVE t_parents(parent_series) AS (
106
FROM DistroSeriesParent
107
WHERE derived_series=? AND
110
SELECT dsp.parent_series
111
FROM DistroSeriesParent dsp, t_parents p
112
WHERE dsp.derived_series = p.parent_series AND
113
dsp.is_overlay = True
115
store = IStore(DistroSeriesParent)
116
# XXX: rvb 2011-05-20 bug=785733: Order by DSD.id for now.
117
# Once the ordering is specified in the database, it should
118
# be used to sort the results.
120
SQL(rec_overlay_query, (derived_series.id, ))).find(
122
SQL('DistroSeriesParent.parent_series IN '
123
'(SELECT parent_series FROM t_parents)')
124
).order_by(DistroSeriesParent.id)