From 03732638f3f8d6a9fe3830ec99e88339752d3399 Mon Sep 17 00:00:00 2001 From: Xavier-Do Date: Fri, 1 Jul 2022 10:29:12 +0200 Subject: [PATCH] [IMP] runbot: add an automatic generated message for upgrade exceptions --- runbot/data/runbot_data.xml | 7 ++++++ runbot/models/res_config_settings.py | 3 +++ runbot/models/upgrade.py | 12 +++++++--- runbot/static/src/js/json_field.js | 22 +++++++++++++++++- runbot/views/build_error_views.xml | 4 ++-- runbot/views/res_config_settings_views.xml | 2 ++ runbot/views/upgrade.xml | 26 +++++++++++++++++++++- 7 files changed, 69 insertions(+), 7 deletions(-) diff --git a/runbot/data/runbot_data.xml b/runbot/data/runbot_data.xml index c43885b8..2c5e3ca4 100644 --- a/runbot/data/runbot_data.xml +++ b/runbot/data/runbot_data.xml @@ -29,6 +29,13 @@ + + runbot.runbot_upgrade_exception_message + Upgrade exception [#{exception.id}]({base_url}/web/#id={exception.id}&view_type=form&model=runbot.upgrade.exception) added\ +{exception.elements} + + + runbot.runbot_is_base_regex ^((master)|(saas-)?\d+\.\d+)$ diff --git a/runbot/models/res_config_settings.py b/runbot/models/res_config_settings.py index 9dedc602..b029c0db 100644 --- a/runbot/models/res_config_settings.py +++ b/runbot/models/res_config_settings.py @@ -20,6 +20,7 @@ class ResConfigSettings(models.TransientModel): runbot_update_frequency = fields.Integer('Update frequency (in seconds)') runbot_template = fields.Char('Postgresql template', help="Postgresql template to use when creating DB's") runbot_message = fields.Text('Frontend warning message') + runbot_upgrade_exception_message = fields.Text('Upgrade exception message') runbot_do_fetch = fields.Boolean('Discover new commits') runbot_do_schedule = fields.Boolean('Schedule builds') runbot_is_base_regex = fields.Char('Regex is_base') @@ -51,6 +52,7 @@ class ResConfigSettings(models.TransientModel): runbot_update_frequency=int(get_param('runbot.runbot_update_frequency', default=10)), runbot_template=get_param('runbot.runbot_db_template'), runbot_message=get_param('runbot.runbot_message', default=''), + runbot_upgrade_exception_message=get_param('runbot.runbot_upgrade_exception_message'), runbot_do_fetch=get_param('runbot.runbot_do_fetch', default=False), runbot_do_schedule=get_param('runbot.runbot_do_schedule', default=False), runbot_is_base_regex=get_param('runbot.runbot_is_base_regex', default='') @@ -70,6 +72,7 @@ class ResConfigSettings(models.TransientModel): set_param('runbot.runbot_update_frequency', self.runbot_update_frequency) set_param('runbot.runbot_db_template', self.runbot_template) set_param('runbot.runbot_message', self.runbot_message) + set_param('runbot.runbot_upgrade_exception_message', self.runbot_upgrade_exception_message) set_param('runbot.runbot_do_fetch', self.runbot_do_fetch) set_param('runbot.runbot_do_schedule', self.runbot_do_schedule) set_param('runbot.runbot_is_base_regex', self.runbot_is_base_regex) diff --git a/runbot/models/upgrade.py b/runbot/models/upgrade.py index 537774fa..d8918ccd 100644 --- a/runbot/models/upgrade.py +++ b/runbot/models/upgrade.py @@ -12,6 +12,12 @@ class UpgradeExceptions(models.Model): bundle_id = fields.Many2one('runbot.bundle', index=True) info = fields.Text('Info') team_id = fields.Many2one('runbot.team', 'Assigned team', index=True) + message = fields.Text('Upgrade exception message', compute="_compute_message") + + def _compute_message(self): + message_layout = self.env['ir.config_parameter'].sudo().get_param('runbot.runbot_upgrade_exception_message') + for exception in self: + exception.message = message_layout.format(exception=exception, base_url=exception.get_base_url()) def _generate(self): exceptions = self.search([]) @@ -36,13 +42,13 @@ class BuildResult(models.Model): ir_logs = self.env['ir.logging'].search([('level', 'in', ('ERROR', 'WARNING', 'CRITICAL')), ('type', '=', 'server'), ('build_id', 'in', self.ids)]) upgrade_regexes = self.env['runbot.upgrade.regex'].search([]) - exception = [] + exception = {} for log in ir_logs: for upgrade_regex in upgrade_regexes: m = re.search(upgrade_regex.regex, log.message) if m: - exception.append('%s:%s' % (upgrade_regex.prefix, m.groups()[0])) - + exception['%s:%s' % (upgrade_regex.prefix, m.groups()[0])] = None + exception = list(exception) if exception: bundle = False batches = self.top_parent.slot_ids.mapped('batch_id') diff --git a/runbot/static/src/js/json_field.js b/runbot/static/src/js/json_field.js index 8d1d1af5..41cb8b44 100644 --- a/runbot/static/src/js/json_field.js +++ b/runbot/static/src/js/json_field.js @@ -2,6 +2,7 @@ odoo.define('runbot.json_field', function (require) { "use strict"; var basic_fields = require('web.basic_fields'); +var relational_fields = require('web.relational_fields'); var registry = require('web.field_registry'); var field_utils = require('web.field_utils'); var dom = require('web.dom'); @@ -34,7 +35,26 @@ var FieldJson = basic_fields.FieldChar.extend({ }); registry.add('jsonb', FieldJson) -console.log(field_utils); + + +var FrontendUrl = relational_fields.FieldMany2One.extend({ + isQuickEditable: false, + events: _.extend({'click .external_link': '_stopPropagation'}, relational_fields.FieldMany2One.prototype.events), + init() { + this._super.apply(this, arguments); + const model = this.value.model.split('.').slice(1).join('_') + const res_id = this.value.res_id + this.route = '/runbot/' + model+ '/' + res_id + }, + _renderReadonly: function () { + this._super.apply(this, arguments); + this.$el.html('' + this.$el.html() + ' ') + }, + _stopPropagation: function(event) { + event.stopPropagation() + } +}); +registry.add('frontend_url', FrontendUrl) function stringify(obj) { return JSON.stringify(obj, null, '\t') diff --git a/runbot/views/build_error_views.xml b/runbot/views/build_error_views.xml index cfd0e644..61057b49 100644 --- a/runbot/views/build_error_views.xml +++ b/runbot/views/build_error_views.xml @@ -25,9 +25,9 @@ - + - + diff --git a/runbot/views/res_config_settings_views.xml b/runbot/views/res_config_settings_views.xml index 7196edd5..0942654d 100644 --- a/runbot/views/res_config_settings_views.xml +++ b/runbot/views/res_config_settings_views.xml @@ -70,6 +70,8 @@ + + + runbot.upgrade.exception + runbot.upgrade.exception + +
+ + + + + + + + + + + + +
+
+
+ + + runbot.upgrade.regex runbot.upgrade.regex