diff --git a/runbot_merge/models/pull_requests.py b/runbot_merge/models/pull_requests.py index b3762710..62c01aa5 100644 --- a/runbot_merge/models/pull_requests.py +++ b/runbot_merge/models/pull_requests.py @@ -440,6 +440,24 @@ class PullRequests(models.Model): " PR is linked to an other non-ready PR" ) + @property + def blocked(self): + if self.state not in ('ready', 'merged', 'closed'): + return True + if not (self.squash or self.merge_method): + return True + + # can't be blocked on a co-dependent PR if it's a patch-* + if re.search(r':patch-\d+$', self.label): + return False + + return bool(self.search_count([ + ('id', '!=', self.id), + ('label', '=', self.label), + ('state', '!=', 'ready'), + ('priority', '!=', 0), + ])) + @api.depends('head') def _compute_statuses(self): Commits = self.env['runbot_merge.commit'] diff --git a/runbot_merge/views/templates.xml b/runbot_merge/views/templates.xml index fa60fef4..4a085ce6 100644 --- a/runbot_merge/views/templates.xml +++ b/runbot_merge/views/templates.xml @@ -53,7 +53,16 @@
Awaiting
+
Blocked
+