diff --git a/forwardport/data/views.xml b/forwardport/data/views.xml index 78499457..e0da455e 100644 --- a/forwardport/data/views.xml +++ b/forwardport/data/views.xml @@ -157,9 +157,6 @@ - diff --git a/forwardport/models/project.py b/forwardport/models/project.py index f9389b5d..bb2f3d78 100644 --- a/forwardport/models/project.py +++ b/forwardport/models/project.py @@ -34,6 +34,7 @@ from odoo import _, models, fields, api from odoo.osv import expression from odoo.exceptions import UserError from odoo.tools import topological_sort, groupby +from odoo.tools.sql import reverse_order from odoo.tools.appdirs import user_cache_dir from odoo.addons.runbot_merge import utils from odoo.addons.runbot_merge.models.pull_requests import RPLUS @@ -199,17 +200,10 @@ class Project(models.Model): def _forward_port_ordered(self, domain=()): Branches = self.env['runbot_merge.branch'] - ordering_items = re.split(r',\s*', 'fp_sequence,' + Branches._order) - ordering = ','.join( - # reverse order (desc -> asc, asc -> desc) as we want the "lower" - # branches to be first in the ordering - f[:-5] if f.lower().endswith(' desc') else f + ' desc' - for f in ordering_items - ) return Branches.search(expression.AND([ [('project_id', '=', self.id)], domain or [], - ]), order=ordering) + ]), order=reverse_order(Branches._order)) class Repository(models.Model): _inherit = 'runbot_merge.repository' @@ -218,7 +212,6 @@ class Repository(models.Model): class Branch(models.Model): _inherit = 'runbot_merge.branch' - fp_sequence = fields.Integer(default=50, group_operator=None) fp_target = fields.Boolean(default=True) fp_enabled = fields.Boolean(compute='_compute_fp_enabled') diff --git a/forwardport/tests/test_conflicts.py b/forwardport/tests/test_conflicts.py index 57cd4558..4e6dd084 100644 --- a/forwardport/tests/test_conflicts.py +++ b/forwardport/tests/test_conflicts.py @@ -16,7 +16,7 @@ def test_conflict(env, config, make_repo, users): project = env['runbot_merge.project'].search([]) project.write({ 'branch_ids': [ - (0, 0, {'name': 'd', 'fp_sequence': 4, 'fp_target': True}) + (0, 0, {'name': 'd', 'sequence': 40, 'fp_target': True}) ] }) diff --git a/forwardport/tests/test_simple.py b/forwardport/tests/test_simple.py index e0d07bfe..a4239d4e 100644 --- a/forwardport/tests/test_simple.py +++ b/forwardport/tests/test_simple.py @@ -750,7 +750,9 @@ More info at https://github.com/odoo/odoo/wiki/Mergebot#forward-port main2.get_pr(pr2c.number).post_comment('%s r+' % project.fp_github_name, config['role_reviewer']['token']) env.run_crons() - stb, stc = env['runbot_merge.stagings'].search([], order='target') + env['runbot_merge.stagings'].search([]).mapped('target.display_name') + env['runbot_merge.stagings'].search([], order='target').mapped('target.display_name') + stc, stb = env['runbot_merge.stagings'].search([], order='target') assert stb.target.name == 'b' assert stc.target.name == 'c' diff --git a/forwardport/tests/test_updates.py b/forwardport/tests/test_updates.py index 491ac240..99471cd7 100644 --- a/forwardport/tests/test_updates.py +++ b/forwardport/tests/test_updates.py @@ -152,7 +152,7 @@ def test_update_merged(env, make_repo, config, users): prod.make_ref('heads/d', prod.commit('c').id) env['runbot_merge.project'].search([]).write({ 'branch_ids': [(0, 0, { - 'name': 'd', 'fp_sequence': -1, 'fp_target': True, + 'name': 'd', 'sequence': 40, 'fp_target': True, })] }) @@ -251,10 +251,10 @@ def test_duplicate_fw(env, make_repo, setreviewers, config, users): 'github_prefix': 'hansen', 'fp_github_token': config['github']['token'], 'branch_ids': [ - (0, 0, {'name': 'master', 'fp_sequence': 0, 'fp_target': True}), - (0, 0, {'name': 'v3', 'fp_sequence': 1, 'fp_target': True}), - (0, 0, {'name': 'v2', 'fp_sequence': 2, 'fp_target': True}), - (0, 0, {'name': 'v1', 'fp_sequence': 3, 'fp_target': True}), + (0, 0, {'name': 'master', 'sequence': 0, 'fp_target': True}), + (0, 0, {'name': 'v3', 'sequence': 1, 'fp_target': True}), + (0, 0, {'name': 'v2', 'sequence': 2, 'fp_target': True}), + (0, 0, {'name': 'v1', 'sequence': 3, 'fp_target': True}), ], 'repo_ids': [ (0, 0, { diff --git a/forwardport/tests/test_weird.py b/forwardport/tests/test_weird.py index ef8038f0..c7b8a686 100644 --- a/forwardport/tests/test_weird.py +++ b/forwardport/tests/test_weird.py @@ -263,9 +263,9 @@ class TestNotAllBranches: 'github_prefix': 'hansen', 'fp_github_token': config['github']['token'], 'branch_ids': [ - (0, 0, {'name': 'a', 'fp_sequence': 2, 'fp_target': True}), - (0, 0, {'name': 'b', 'fp_sequence': 1, 'fp_target': True}), - (0, 0, {'name': 'c', 'fp_sequence': 0, 'fp_target': True}), + (0, 0, {'name': 'a', 'sequence': 2, 'fp_target': True}), + (0, 0, {'name': 'b', 'sequence': 1, 'fp_target': True}), + (0, 0, {'name': 'c', 'sequence': 0, 'fp_target': True}), ] }) repo_a = env['runbot_merge.repository'].create({ @@ -486,15 +486,15 @@ def test_new_intermediate_branch(env, config, make_repo): # insert a branch between "b" and "c" project.write({ 'branch_ids': [ - (1, currents['a'], {'fp_sequence': 3}), - (1, currents['b'], {'fp_sequence': 2, 'active': False}), - (1, currents['c'], {'fp_sequence': 0}) + (1, currents['a'], {'sequence': 3}), + (1, currents['b'], {'sequence': 2, 'active': False}), + (1, currents['c'], {'sequence': 0}) ] }) env.run_crons() project.write({ 'branch_ids': [ - (0, False, {'name': 'new', 'fp_sequence': 1, 'fp_target': True}), + (0, False, {'name': 'new', 'sequence': 1, 'fp_target': True}), ] }) env.run_crons() @@ -707,18 +707,16 @@ def test_retarget_after_freeze(env, config, make_repo, users): assert port_id.source_id == original_pr_id assert port_id.parent_id == original_pr_id - # because the module doesn't update the ordering of `branch_ids` to take - # `fp_sequence` in account so it's misleading - branch_c, branch_b, branch_a = branches_before = project.branch_ids.sorted('fp_sequence') + branch_c, branch_b, branch_a = branches_before = project.branch_ids assert [branch_a.name, branch_b.name, branch_c.name] == ['a', 'b', 'c'] # create branch so cron runs correctly with prod: prod.make_ref('heads/bprime', prod.get_ref('c')) project.write({ 'branch_ids': [ - (1, branch_c.id, {'sequence': 1, 'fp_sequence': 20}), - (0, 0, {'name': 'bprime', 'sequence': 2, 'fp_sequence': 20, 'fp_target': True}), - (1, branch_b.id, {'sequence': 3, 'fp_sequence': 20}), - (1, branch_a.id, {'sequence': 4, 'fp_sequence': 20}), + (1, branch_c.id, {'sequence': 1}), + (0, 0, {'name': 'bprime', 'sequence': 2, 'fp_target': True}), + (1, branch_b.id, {'sequence': 3}), + (1, branch_a.id, {'sequence': 4}), ] }) new_branch = project.branch_ids - branches_before diff --git a/mergebot_test_utils/utils.py b/mergebot_test_utils/utils.py index 092a1241..2df8995d 100644 --- a/mergebot_test_utils/utils.py +++ b/mergebot_test_utils/utils.py @@ -74,9 +74,9 @@ def make_basic(env, config, make_repo, *, reponame='proj', project_name='myproje 'github_prefix': 'hansen', 'fp_github_token': config['github']['token'], 'branch_ids': [ - (0, 0, {'name': 'a', 'fp_sequence': 10, 'fp_target': True}), - (0, 0, {'name': 'b', 'fp_sequence': 8, 'fp_target': True}), - (0, 0, {'name': 'c', 'fp_sequence': 6, 'fp_target': True}), + (0, 0, {'name': 'a', 'sequence': 100, 'fp_target': True}), + (0, 0, {'name': 'b', 'sequence': 80, 'fp_target': True}), + (0, 0, {'name': 'c', 'sequence': 60, 'fp_target': True}), ], })