diff --git a/runbot_merge/__manifest__.py b/runbot_merge/__manifest__.py
index 13bed3dc..b005c5a9 100644
--- a/runbot_merge/__manifest__.py
+++ b/runbot_merge/__manifest__.py
@@ -1,6 +1,6 @@
{
'name': 'merge bot',
- 'version': '1.12',
+ 'version': '1.13',
'depends': ['contacts', 'mail', 'website'],
'data': [
'security/security.xml',
diff --git a/runbot_merge/migrations/15.0.1.13/pre-migration.py b/runbot_merge/migrations/15.0.1.13/pre-migration.py
new file mode 100644
index 00000000..ed9ba615
--- /dev/null
+++ b/runbot_merge/migrations/15.0.1.13/pre-migration.py
@@ -0,0 +1,4 @@
+def migrate(cr, version):
+ cr.execute("ALTER TABLE runbot_merge_stagings "
+ "ADD COLUMN staging_end timestamp without time zone")
+ cr.execute("UPDATE runbot_merge_stagings SET staging_end = write_date")
diff --git a/runbot_merge/models/pull_requests.py b/runbot_merge/models/pull_requests.py
index 1a174aef..f5cf0235 100644
--- a/runbot_merge/models/pull_requests.py
+++ b/runbot_merge/models/pull_requests.py
@@ -1796,6 +1796,8 @@ class Stagings(models.Model):
active = fields.Boolean(default=True)
staged_at = fields.Datetime(default=fields.Datetime.now, index=True)
+ staging_end = fields.Datetime()
+ staging_duration = fields.Float(compute='_compute_duration')
timeout_limit = fields.Datetime(store=True, compute='_compute_timeout_limit')
reason = fields.Text("Reason for final state (if any)")
@@ -1819,11 +1821,17 @@ class Stagings(models.Model):
for staging in previously_pending:
if staging.state != 'pending':
super(Stagings, staging).write({
- 'statuses_cache': json.dumps(staging.statuses)
+ 'staging_end': fields.Datetime.now(),
+ 'statuses_cache': json.dumps(staging.statuses),
})
return True
+ @api.depends('staged_at', 'staging_end')
+ def _compute_duration(self):
+ for s in self:
+ s.staging_duration = ((s.staging_end or fields.Datetime.now()) - s.staged_at).total_seconds()
+
def name_get(self):
return [
(staging.id, "%d (%s, %s%s)" % (
diff --git a/runbot_merge/views/mergebot.xml b/runbot_merge/views/mergebot.xml
index c1cea06b..c1d7418a 100644
--- a/runbot_merge/views/mergebot.xml
+++ b/runbot_merge/views/mergebot.xml
@@ -311,6 +311,8 @@
+
diff --git a/runbot_merge/views/templates.xml b/runbot_merge/views/templates.xml
index ef3cbe81..3b8d4d14 100644
--- a/runbot_merge/views/templates.xml
+++ b/runbot_merge/views/templates.xml
@@ -24,7 +24,7 @@
data-toggle="dropdown"
aria-haspopup="true"
aria-expanded="true"
- t-attf-title="Staged at {{staging.staged_at}}Z"
+ t-attf-title="Staged at {{staging.staged_at}}Z for {{round(staging.staging_duration)}}s"
>
@@ -187,6 +187,11 @@
Staged
+ (duration )
@@ -248,6 +253,11 @@
+ in
|