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