runbot/runbot/views/build_error_views.xml
Christophe Monniez 2e002c2dd7 [IMP] runbot: improve the build errors wizard
With this commit, the wizard now allows to set a fixing PR and/or a
commit text to multiple errors.
2023-06-01 15:03:13 +02:00

287 lines
13 KiB
XML

<odoo>
<data>
<record id="build_error_form" model="ir.ui.view">
<field name="name">runbot.build.error.form</field>
<field name="model">runbot.build.error</field>
<field name="arch" type="xml">
<form>
<widget name="web_ribbon" title="Test-tags" bg_color="bg-warning" attrs="{'invisible': [('test_tags', '=', False)]}"/>
<header>
</header>
<group>
<group name="build_error_group" string="Base info">
<field name="content" readonly="1"/>
<field name="module_name" readonly="1"/>
<field name="function" readonly="1"/>
<field name="file_path" readonly="1"/>
</group>
</group>
<group col="2">
<group name="fixer_info" string="Fixing">
<field name="responsible" attrs="{'readonly': [('parent_id','!=', False), ('responsible','=', False)]}"/>
<field name="team_id" attrs="{'readonly': [('parent_id','!=', False), ('team_id','=', False)]}"/>
<field name="fixing_pr_id"/>
<field name="fixing_pr_url" widget="url"/>
<field name="active"/>
<field name="test_tags" readonly="1" groups="!runbot.group_runbot_admin"/>
<field name="test_tags" groups="runbot.group_runbot_admin" attrs="{'readonly': [('parent_id','!=', False), ('test_tags','=', False)]}"/>
</group>
<group name="fixer_info" string="Fixing">
<field name="version_ids" widget="many2many_tags"/>
<field name="trigger_ids" widget="many2many_tags"/>
<field name="tag_ids" widget="many2many_tags" readonly="1"/>
</group>
</group>
<group name="fixer_info" string="More info" col="2">
<group>
<field name="random"/>
<field name="first_seen_date"/>
<field name="first_seen_build_id" widget="frontend_url"/>
</group>
<group>
<field name="parent_id"/>
<field name="last_seen_date"/>
<field name="last_seen_build_id" widget="frontend_url"/>
</group>
</group>
<notebook>
<page string="Builds">
<field name="build_ids" nolabel="1" widget="many2many" options="{'not_delete': True, 'no_create': True}">
<tree>
<field name="create_date"/>
<field name="host" groups="base.group_no_one"/>
<field name="dest"/>
<field name="trigger_id"/>
<field name="description"/>
<field name="build_url" widget="url" readonly="1" text="View build"/>
</tree>
</field>
</page>
<page string="All Errors Builds">
<field name="children_build_ids" widget="many2many" options="{'not_delete': True, 'no_create': True}">
<tree>
<field name="create_date"/>
<field name="id"/>
<field name="host" groups="base.group_no_one"/>
<field name="dest"/>
<field name="build_url" widget="url" readonly="1" text="View build"/>
</tree>
</field>
</page>
<page string="Linked Errors">
<field name="child_ids" widget="many2many" options="{'not_delete': True, 'no_create': True}">
<tree>
<field name="create_date"/>
<field name="module_name"/>
<field name="summary"/>
<field name="build_count"/>
</tree>
</field>
</page>
<page string="Error history">
<field name="error_history_ids" widget="one2many" options="{'not_delete': True, 'no_create': True}">
<tree>
<field name="create_date"/>
<field name="module_name"/>
<field name="summary"/>
<field name="random"/>
<field name="build_count"/>
<field name="responsible"/>
<field name="fixing_commit"/>
</tree>
</field>
</page>
<page string="Debug" groups="base.group_no_one">
<group name="build_error_group">
<field name="fingerprint" readonly="1"/>
<field name="cleaned_content"/>
<field name="fixing_commit"/>
<field name="bundle_ids" widget="many2many_tags"/>
</group>
</page>
</notebook>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/>
<field name="message_ids" widget="mail_thread"/>
</div>
</form>
</field>
</record>
<record id="build_error_view_tree" model="ir.ui.view">
<field name="name">runbot.build.error.tree</field>
<field name="model">runbot.build.error</field>
<field name="arch" type="xml">
<tree string="Errors"
decoration-danger="test_tags and (fixing_pr_alive or not fixing_pr_id)"
decoration-success="fixing_pr_id and not test_tags and not fixing_pr_alive"
decoration-warning="test_tags and fixing_pr_id and not fixing_pr_alive"
multi_edit="1">
<field name="module_name" readonly="1"/>
<field name="summary" readonly="1"/>
<field name="random" string="Random"/>
<field name="last_seen_date" string="Last Seen" readonly="1"/>
<field name="build_count" readonly="1"/>
<field name="responsible"/>
<field name="team_id"/>
<field name="test_tags"/>
<field name="fixing_pr_id"/>
<field name="fixing_pr_alive" invisible="1"/>
<field name="fixing_pr_url" widget="url" text="view PR" readonly="1"/>
</tree>
</field>
</record>
<record id="build_error_search_view" model="ir.ui.view">
<field name="name">runbot.build.error.log.filter</field>
<field name="model">runbot.build.error</field>
<field name="arch" type="xml">
<search string="Search errors">
<field name="content"/>
<field name="module_name"/>
<field name="function"/>
<field name="version_ids"/>
<field name="responsible"/>
<field name="team_id"/>
<field name="fixing_commit"/>
<filter string="Assigned to me" name="my_errors" domain="[('responsible', '=', uid)]"/>
<separator/>
<filter string="No Parent" name="no_parent_error" domain="[('parent_id', '=', False)]"/>
<separator/>
<filter string="Undeterministic" name="random_error" domain="[('random', '=', True)]"/>
<filter string="Deterministic" name="random_error" domain="[('random', '=', False)]"/>
<separator/>
<filter string="Fixed" name="fixed_errors" domain="[('active', '=', False)]"/>
<filter string="Not Fixed" name="not_fixed_errors" domain="[('active', '=', True)]"/>
<separator/>
<filter string="Not Assigned" name="not_assigned_errors" domain="[('responsible', '=', False)]"/>
<filter string="Assigned" name="assigned_errors" domain="[('responsible', '!=', False)]"/>
<filter string="Having a PR" name="pr_set_errors" domain="[('fixing_pr_id', '!=', False)]"/>
<filter string="Fixing PR is closed" name="pr_closed_errors" domain="[('fixing_pr_id', '!=', False), ('fixing_pr_id.alive', '=', False)]"/>
<filter string="Fixing PR is open" name="pr_open_errors" domain="[('fixing_pr_id', '!=', False), ('fixing_pr_id.alive', '=', True)]"/>
<separator/>
<filter string="Test Tags" name="test_tagged_errors" domain="[('test_tags', '!=', False)]"/>
</search>
</field>
</record>
<record id="open_view_build_error_tree" model="ir.actions.act_window">
<field name="name">Build errors</field>
<field name="res_model">runbot.build.error</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_no_parent_error': True, 'search_default_random_error': True}</field>
</record>
<record id="build_error_regex_form" model="ir.ui.view">
<field name="name">runbot.error.regex.form</field>
<field name="model">runbot.error.regex</field>
<field name="arch" type="xml">
<form>
<sheet>
<group name="build_regex_group">
<field name="regex"/>
<field name="re_type"/>
</group>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/>
<field name="message_ids" widget="mail_thread"/>
</div>
</form>
</field>
</record>
<record id="build_error_regex_tree" model="ir.ui.view">
<field name="name">runbot.error.regex.tree</field>
<field name="model">runbot.error.regex</field>
<field name="arch" type="xml">
<tree string="Errors Regexes">
<field name="sequence" widget="handle"/>
<field name="regex"/>
<field name="re_type"/>
</tree>
</field>
</record>
<record id="runbot_regex_search_view" model="ir.ui.view">
<field name="name">runbot.error.regex.filter</field>
<field name="model">runbot.error.regex</field>
<field name="arch" type="xml">
<search string="Search regex">
<field name="regex"/>
<filter string="Filtering regex's" name="filtering_regex" domain="[(['re_type', '=', 'filter'])]"/>
<filter string="Cleaning regex's" name="clening_regex" domain="[(['re_type', '=', 'cleaning'])]"/>
</search>
</field>
</record>
<record id="open_view_error_regex" model="ir.actions.act_window">
<field name="name">Errors regex</field>
<field name="res_model">runbot.error.regex</field>
<field name="view_mode">tree,form</field>
</record>
<record model="ir.ui.view" id="runbot_error_closing_wizard_form">
<field name="name">runbot_error_closing_wizard</field>
<field name="model">runbot.error.closing.wizard</field>
<field name="arch" type="xml">
<form>
<sheet>
<group name="closing_group">
<field name="reason"/>
</group>
<footer>
<button string="Submit" name="submit" type="object" class="btn-primary"/>
<button string="Cancel" class="btn-secondary" special="cancel"/>
</footer>
</sheet>
</form>
</field>
</record>
<record id="runbot_open_error_closing_wizard" model="ir.actions.act_window">
<field name="name">Close Errors With A Reason</field>
<field name="res_model">runbot.error.closing.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="view_id" ref="runbot_error_closing_wizard_form"/>
<field name="binding_model_id" ref="runbot.model_runbot_build_error"/>
<field name="binding_view_types">form,list</field>
</record>
<record model="ir.ui.view" id="runbot_error_reassign_wizard_form">
<field name="name">runbot_error_reassign_wizard</field>
<field name="model">runbot.error.reassign.wizard</field>
<field name="arch" type="xml">
<form>
<sheet>
<group name="team_group">
<field name="team_id"/>
<field name="responsible_id"/>
</group>
<group name="Fix">
<field name="fixing_pr_id"/>
<field name="fixing_commit"/>
</group>
<footer>
<button string="Submit" name="submit" type="object" class="btn-primary"/>
<button string="Cancel" class="btn-secondary" special="cancel"/>
</footer>
</sheet>
</form>
</field>
</record>
<record id="runbot_open_reassign_wizard" model="ir.actions.act_window">
<field name="name">Assign Team/User/PR Wizard</field>
<field name="res_model">runbot.error.reassign.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="view_id" ref="runbot_error_reassign_wizard_form"/>
<field name="binding_model_id" ref="runbot.model_runbot_build_error"/>
<field name="binding_view_types">list</field>
</record>
</data>
</odoo>