Skip to content

Commit 628a7d4

Browse files
committed
[IMP] vcp_*: get 'draft' state of pull requests. add a new 'status' field on vcp.request, that is based on 'is_draft', 'is_merged' and 'state' field to display the correct ribbon on form view / badge on list view
1 parent decc65a commit 628a7d4

3 files changed

Lines changed: 48 additions & 3 deletions

File tree

vcp_github/models/vcp_repository.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ def _parse_github_pr(self, pr, client):
8585
"name": pr.title,
8686
"is_merged": any(label["name"] == "merged 🎉" for label in pr.labels)
8787
or pr.is_merged(),
88+
"is_draft": pr.draft,
8889
"created_at": self.platform_id._parse_github_date(
8990
origin_data["created_at"]
9091
),

vcp_management/models/vcp_request.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,13 @@
33

44
from odoo import api, fields, models
55

6+
_STATUS_SELECTION = [
7+
("draft", "Draft"),
8+
("open", "Open"),
9+
("merged", "Merged"),
10+
("closed", "Closed"),
11+
]
12+
613

714
class VcpRequest(models.Model):
815
"""
@@ -57,7 +64,11 @@ class VcpRequest(models.Model):
5764
comment_count = fields.Integer(compute="_compute_comment_count", store=True)
5865
url = fields.Char(readonly=True)
5966
state = fields.Char(readonly=True)
67+
status = fields.Selection(
68+
selection=_STATUS_SELECTION, compute="_compute_status", store=True
69+
)
6070
is_merged = fields.Boolean(readonly=True)
71+
is_draft = fields.Boolean(readonly=True)
6172
created_at = fields.Datetime(readonly=True)
6273
updated_at = fields.Datetime(readonly=True)
6374
closed_at = fields.Datetime(readonly=True)
@@ -86,3 +97,15 @@ def _compute_review_count(self):
8697
def _compute_comment_count(self):
8798
for record in self:
8899
record.comment_count = len(record.comment_ids)
100+
101+
@api.depends("is_draft", "is_merged", "state")
102+
def _compute_status(self):
103+
for record in self:
104+
if record.is_merged:
105+
record.status = "merged"
106+
elif record.closed_at:
107+
record.status = "closed"
108+
elif record.is_draft:
109+
record.status = "draft"
110+
else:
111+
record.status = "open"

vcp_management/views/vcp_request.xml

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,18 +48,31 @@
4848
/>
4949
</button>
5050
</div>
51+
<widget
52+
name="web_ribbon"
53+
title="Draft"
54+
bg_color="bg-info"
55+
invisible="status != 'draft'"
56+
/>
57+
<widget
58+
name="web_ribbon"
59+
title="Open"
60+
bg_color="bg-primary"
61+
invisible="status != 'open'"
62+
/>
5163
<widget
5264
name="web_ribbon"
5365
title="Merged"
5466
bg_color="bg-success"
55-
invisible="not is_merged"
67+
invisible="status != 'merged'"
5668
/>
5769
<widget
5870
name="web_ribbon"
5971
title="Closed"
6072
bg_color="bg-danger"
61-
invisible="is_merged or not closed_at"
73+
invisible="status != 'closed'"
6274
/>
75+
<field name="is_draft" invisible="1" />
6376
<field name="is_merged" invisible="1" />
6477
<field name="closed_at" invisible="1" />
6578
<group>
@@ -100,9 +113,17 @@
100113
<field name="branch_id" />
101114
<field name="number" />
102115
<field name="name" />
103-
<field name="url" widget="url" />
116+
<field name="url" widget="url" optional="hide" />
104117
<field name="comment_count" optional="hide" />
105118
<field name="review_count" optional="hide" />
119+
<field
120+
name="status"
121+
decoration-info="status == 'draft'"
122+
decoration-primary="status == 'open'"
123+
decoration-success="status == 'merged'"
124+
decoration-danger="status == 'closed'"
125+
widget="badge"
126+
/>
106127
</list>
107128
</field>
108129
</record>

0 commit comments

Comments
 (0)