diff --git a/runbot/models/build_config.py b/runbot/models/build_config.py
index 4fc2b3df..1dd109d6 100644
--- a/runbot/models/build_config.py
+++ b/runbot/models/build_config.py
@@ -740,26 +740,26 @@ class ConfigStep(models.Model):
upgrade_complement_step = trigger.upgrade_dumps_trigger_id.upgrade_step_id
- if next_versions:
+ if next_versions and bundle.to_upgrade:
for next_version in next_versions:
if bundle.version_id in upgrade_complement_step._get_upgrade_source_versions(next_version):
target_versions |= next_version
return target_versions.with_context(
category_id=category_id, project_id=bundle.project_id.id
- ).mapped('base_bundle_id.last_done_batch')
+ ).mapped('base_bundle_id').filtered('to_upgrade').mapped('last_done_batch')
def _reference_batches_upgrade(self, bundle, category_id):
target_refs_bundles = self.env['runbot.bundle']
- sticky_domain = [('sticky', '=', True), ('project_id', '=', bundle.project_id.id)]
+ upgrade_domain = [('to_upgrade', '=', True), ('project_id', '=', bundle.project_id.id)]
if self.upgrade_to_version_ids:
- target_refs_bundles |= self.env['runbot.bundle'].search(sticky_domain + [('version_id', 'in', self.upgrade_to_version_ids.ids)])
+ target_refs_bundles |= self.env['runbot.bundle'].search(upgrade_domain + [('version_id', 'in', self.upgrade_to_version_ids.ids)])
else:
if self.upgrade_to_master:
- target_refs_bundles |= self.env['runbot.bundle'].search(sticky_domain + [('name', '=', 'master')])
+ target_refs_bundles |= self.env['runbot.bundle'].search(upgrade_domain + [('name', '=', 'master')])
if self.upgrade_to_all_versions:
- target_refs_bundles |= self.env['runbot.bundle'].search(sticky_domain + [('name', '!=', 'master')])
+ target_refs_bundles |= self.env['runbot.bundle'].search(upgrade_domain + [('name', '!=', 'master')])
elif self.upgrade_to_major_versions:
- target_refs_bundles |= self.env['runbot.bundle'].search(sticky_domain + [('name', '!=', 'master'), ('version_id.is_major', '=', True)])
+ target_refs_bundles |= self.env['runbot.bundle'].search(upgrade_domain + [('name', '!=', 'master'), ('version_id.is_major', '=', True)])
source_refs_bundles = self.env['runbot.bundle']
@@ -774,13 +774,14 @@ class ConfigStep(models.Model):
source_refs_bundles |= f_bundle.intermediate_version_base_ids[-1]
if self.upgrade_from_version_ids:
- source_refs_bundles |= self.env['runbot.bundle'].search(sticky_domain + [('version_id', 'in', self.upgrade_from_version_ids.ids)])
+ source_refs_bundles |= self.env['runbot.bundle'].search(upgrade_domain + [('version_id', 'in', self.upgrade_from_version_ids.ids)])
# this is subject to discussion. should this be smart and filter 'from_versions' or should it be flexible and do all possibilities
else:
if self.upgrade_to_current:
from_versions(bundle)
for f_bundle in target_refs_bundles:
from_versions(f_bundle)
+ source_refs_bundles = source_refs_bundles.filtered('to_upgrade')
return (target_refs_bundles | source_refs_bundles).with_context(
category_id=category_id
diff --git a/runbot/models/bundle.py b/runbot/models/bundle.py
index 66ecb506..77a2ae50 100644
--- a/runbot/models/bundle.py
+++ b/runbot/models/bundle.py
@@ -33,6 +33,7 @@ class Bundle(models.Model):
is_base = fields.Boolean('Is base', index=True)
defined_base_id = fields.Many2one('runbot.bundle', 'Forced base bundle', domain="[('project_id', '=', project_id), ('is_base', '=', True)]")
base_id = fields.Many2one('runbot.bundle', 'Base bundle', compute='_compute_base_id', store=True)
+ to_upgrade = fields.Boolean('To upgrade', compute='_compute_to_upgrade', store=True, index=False)
version_id = fields.Many2one('runbot.version', 'Version', compute='_compute_version_id', store=True)
version_number = fields.Char(related='version_id.number', store=True, index=True)
@@ -76,6 +77,11 @@ class Bundle(models.Model):
for bundle in self:
bundle.sticky = bundle.is_base
+ @api.depends('is_base')
+ def _compute_to_upgrade(self):
+ for bundle in self:
+ bundle.to_upgrade = bundle.is_base
+
@api.depends('name', 'is_base', 'defined_base_id', 'base_id.is_base', 'project_id')
def _compute_base_id(self):
for bundle in self:
diff --git a/runbot/views/bundle_views.xml b/runbot/views/bundle_views.xml
index e6edbd8a..add1c699 100644
--- a/runbot/views/bundle_views.xml
+++ b/runbot/views/bundle_views.xml
@@ -25,6 +25,7 @@
+
@@ -70,6 +71,7 @@
+