mirror of
https://github.com/odoo/runbot.git
synced 2025-04-08 03:10:54 +07:00
400 lines
20 KiB
XML
400 lines
20 KiB
XML
<odoo>
|
|
<data>
|
|
<record id="runbot_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>
|
|
<sheet>
|
|
<widget name="web_ribbon" title="Test-tags" bg_color="bg-danger" invisible="not test_tags"/>
|
|
<button name="action_view_errors" string="See all linked errors" type="object" class="oe_highlight"/>
|
|
<group string="Base info">
|
|
<field name="name"/>
|
|
<field name="error_content_ids" readonly="1">
|
|
<tree>
|
|
<field name="content" readonly="1"/>
|
|
<!--field name="module_name" readonly="1"/-->
|
|
<!--field name="function" readonly="1"/-->
|
|
<!--field name="file_path" readonly="1"/-->
|
|
<field name="version_ids" widget="many2many_tags" optional="hide"/>
|
|
<field name="trigger_ids" widget="many2many_tags" optional="hide"/>
|
|
<field name="tag_ids" widget="many2many_tags" readonly="1" optional="hide"/>
|
|
<field name="random" optional="hide"/>
|
|
<field name="first_seen_date" widget="frontend_url" options="{'link_field': 'first_seen_build_id'}"/>
|
|
<field name="last_seen_date" widget="frontend_url" options="{'link_field': 'last_seen_build_id'}"/>
|
|
<field name="first_seen_build_id" column_invisible="True"/>
|
|
<field name="last_seen_build_id" column_invisible="True"/>
|
|
</tree>
|
|
</field>
|
|
</group>
|
|
<group name="fixer_info" string="Fixing" col="2">
|
|
<group>
|
|
<field name="responsible"/>
|
|
<field name="customer"/>
|
|
<field name="team_id"/>
|
|
<field name="fixing_pr_id"/>
|
|
<field name="fixing_pr_url" widget="url"/>
|
|
<field name="active"/>
|
|
<field name="test_tags" decoration-danger="True" readonly="1" groups="!runbot.group_runbot_admin"/>
|
|
<field name="test_tags" decoration-danger="True" groups="runbot.group_runbot_admin"/>
|
|
<field name="tags_min_version_id" invisible="not test_tags"/>
|
|
<field name="tags_max_version_id" invisible="not test_tags"/>
|
|
</group>
|
|
<group>
|
|
<field name="version_ids" widget="many2many_tags"/>
|
|
<field name="trigger_ids" widget="many2many_tags"/>
|
|
<field name="tag_ids" widget="many2many_tags"/>
|
|
<field name="random"/>
|
|
<field name="first_seen_date" widget="frontend_url" options="{'link_field': 'first_seen_build_id'}"/>
|
|
<field name="last_seen_date" widget="frontend_url" options="{'link_field': 'last_seen_build_id'}"/>
|
|
<field name="first_seen_build_id" invisible="True"/>
|
|
<field name="last_seen_build_id" invisible="True"/>
|
|
</group>
|
|
</group>
|
|
<group>
|
|
<field name="previous_error_id" readonly="1" invisible="not previous_error_id" text-decoration-danger="True"/>
|
|
</group>
|
|
<notebook>
|
|
<page string="Builds">
|
|
<field name="unique_build_error_link_ids" widget="one2many" options="{'not_delete': True, 'no_create': True}" readonly="1">
|
|
<tree default_order="log_date desc,id desc">
|
|
<field name="log_date"/>
|
|
<field name="host" groups="base.group_no_one" optional="hide"/>
|
|
<field name="dest" optional="hide"/>
|
|
<field name="version_id"/>
|
|
<field name="trigger_id"/>
|
|
<field name="description"/>
|
|
<field name="build_url" widget="url" readonly="1" text="View build"/>
|
|
</tree>
|
|
</field>
|
|
</page>
|
|
<page string="All links">
|
|
<field name="build_error_link_ids" widget="one2many" options="{'not_delete': True, 'no_create': True}" readonly="1">
|
|
<tree default_order="log_date desc,id desc">
|
|
<field name="log_date"/>
|
|
<field name="host" groups="base.group_no_one" optional="hide"/>
|
|
<field name="dest" optional="hide"/>
|
|
<field name="version_id"/>
|
|
<field name="trigger_id"/>
|
|
<field name="description"/>
|
|
<field name="error_content_id" widget="many2one" string="Linked Error log"/>
|
|
<field name="build_url" widget="url" readonly="1" text="View build"/>
|
|
</tree>
|
|
</field>
|
|
</page>
|
|
</notebook>
|
|
</sheet>
|
|
<div class="oe_chatter">
|
|
<field name="message_follower_ids"/>
|
|
<field name="message_ids"/>
|
|
<field name="activity_ids"/>
|
|
</div>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="build_error_form" model="ir.ui.view">
|
|
<field name="name">runbot.build.error.content.form</field>
|
|
<field name="model">runbot.build.error.content</field>
|
|
<field name="arch" type="xml">
|
|
<form>
|
|
<sheet>
|
|
<group>
|
|
<field name="error_id"/>
|
|
</group>
|
|
<group name="build_error_group" string="Base info" col="2">
|
|
<field name="content" readonly="1"/>
|
|
<field name="module_name" readonly="1"/>
|
|
<field name="function" readonly="1"/>
|
|
<field name="file_path" readonly="1"/>
|
|
</group>
|
|
<group name="infos" string="" col="2">
|
|
<group>
|
|
<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="last_seen_date"/>
|
|
<field name="last_seen_build_id" widget="frontend_url"/>
|
|
</group>
|
|
</group>
|
|
<notebook>
|
|
<page string="Builds">
|
|
<field name="build_error_link_ids" widget="one2many" options="{'not_delete': True, 'no_create': True}" readonly="1">
|
|
<tree>
|
|
<field name="log_date"/>
|
|
<field name="host" groups="base.group_no_one"/>
|
|
<field name="dest"/>
|
|
<field name="version_id"/>
|
|
<field name="trigger_id"/>
|
|
<field name="description"/>
|
|
<field name="error_content_id" widget="many2one" string="Linked Error"/>
|
|
<field name="build_url" widget="url" readonly="1" text="View build"/>
|
|
</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" readonly="1"/>
|
|
<field name="bundle_ids" widget="many2many_tags"/>
|
|
</group>
|
|
</page>
|
|
</notebook>
|
|
</sheet>
|
|
<div class="oe_chatter">
|
|
<field name="message_follower_ids"/>
|
|
<field name="message_ids"/>
|
|
<field name="activity_ids"/>
|
|
</div>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="runbot_error_bulk_wizard_form">
|
|
<field name="name">runbot_error_bulk_wizard</field>
|
|
<field name="model">runbot.error.bulk.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"/>
|
|
</group>
|
|
<group>
|
|
<field name="chatter_comment"/>
|
|
</group>
|
|
<group name="Close">
|
|
<field name="archive"/>
|
|
</group>
|
|
<footer>
|
|
<button string="Submit" name="action_submit" type="object" class="btn-primary"/>
|
|
<button string="Cancel" class="btn-secondary" special="cancel"/>
|
|
</footer>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="runbot_open_bulk_wizard" model="ir.actions.act_window">
|
|
<field name="name">Bulk Update Wizard</field>
|
|
<field name="res_model">runbot.error.bulk.wizard</field>
|
|
<field name="view_mode">form</field>
|
|
<field name="target">new</field>
|
|
<field name="view_id" ref="runbot_error_bulk_wizard_form"/>
|
|
<field name="binding_model_id" ref="runbot.model_runbot_build_error"/>
|
|
<field name="binding_view_types">list</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"
|
|
>
|
|
<header>
|
|
<button name="%(runbot.runbot_open_bulk_wizard)d" string="Bulk Update" type="action" groups="runbot.group_runbot_admin,runbot.group_runbot_error_manager"/>
|
|
</header>
|
|
<field name="name" optional="show" readonly="1"/>
|
|
<field name="description" optional="hide" readonly="1"/>
|
|
<field name="random" string="Random"/>
|
|
<field name="first_seen_date" string="First Seen" optional="hide" readonly="1"/>
|
|
<field name="last_seen_date" string="Last Seen" readonly="1" options="{'link_field': 'last_seen_build_id'}"/>
|
|
<field name="last_seen_build_id" column_invisible="True"/>
|
|
<field name="error_count" readonly="1"/>
|
|
<field name="build_count" readonly="1"/>
|
|
<field name="team_id"/>
|
|
<field name="test_tags" optional="hide"/>
|
|
<field name="tags_min_version_id" string="Tags Min" optional="hide"/>
|
|
<field name="tags_max_version_id" string="Tags Max" optional="hide"/>
|
|
<field name="fixing_pr_id" optional="hide"/>
|
|
<field name="fixing_pr_alive" optional="hide"/>
|
|
<field name="fixing_pr_url" widget="url" text="view PR" readonly="1" invisible="not fixing_pr_url"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="build_error_content_view_tree" model="ir.ui.view">
|
|
<field name="name">runbot.build.error.content.tree</field>
|
|
<field name="model">runbot.build.error.content</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"
|
|
create="false"
|
|
>
|
|
<header>
|
|
</header>
|
|
<field name="error_display_id" optional="show"/>
|
|
<field name="module_name" optional="show" readonly="1"/>
|
|
<field name="summary" optional="show" readonly="1"/>
|
|
<field name="random" string="Random"/>
|
|
<field name="first_seen_date" string="First Seen" optional="hide" readonly="1"/>
|
|
<field name="last_seen_date" string="Last Seen" readonly="1"/>
|
|
<field name="build_count" readonly="1"/>
|
|
<field name="team_id"/>
|
|
<field name="test_tags" optional="hide"/>
|
|
<field name="tags_min_version_id" string="Tags Min" optional="hide"/>
|
|
<field name="tags_max_version_id" string="Tags Max" optional="hide"/>
|
|
<field name="fixing_pr_id" optional="hide"/>
|
|
<field name="fixing_pr_alive" optional="hide"/>
|
|
<field name="fixing_pr_url" widget="url" text="view PR" readonly="1" invisible="not fixing_pr_url"/>
|
|
<field name="fingerprint" optional="hide"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="build_error_search_view" model="ir.ui.view">
|
|
<field name="name">runbot.build.error.filter</field>
|
|
<field name="model">runbot.build.error</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Search errors">
|
|
<field name="content"/>
|
|
<field name="description"/>
|
|
<field name="version_ids"/>
|
|
<field name="responsible"/>
|
|
<field name="team_id"/>
|
|
<filter string="Assigned to me" name="my_errors" domain="[('responsible', '=', uid)]"/>
|
|
<separator/>
|
|
<filter string="Customer is me" name="my_errors_customer" domain="[('customer', '=', uid)]"/>
|
|
<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)]"/>
|
|
<separator/>
|
|
<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)]"/>
|
|
<separator/>
|
|
<filter string="Not seen in one month" name="not_seen_one_month" domain="[('last_seen_date','<', (context_today() - datetime.timedelta(days=30)).strftime('%Y-%m-%d'))]"/>
|
|
<searchpanel>
|
|
<field name="team_id" select="multi" string="Assigned Team" icon="fa-users" enable_counters="1"/>
|
|
<field name="customer" select="multi" string="Customer" icon="fa-address-card" enable_counters="1"/>
|
|
<field name="trigger_ids" select="multi" string="Triggers" icon="fa-bullseye" enable_counters="1"/>
|
|
</searchpanel>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="build_error_content_search_view" model="ir.ui.view">
|
|
<field name="name">runbot.build.error.content.log.filter</field>
|
|
<field name="model">runbot.build.error.content</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="fingerprint"/>
|
|
<filter name="group_error" string="By error" context="{'group_by':'error_id'}"/>
|
|
<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="[('error_id.active', '=', False)]"/>
|
|
<filter string="Not Fixed" name="not_fixed_errors" domain="[('error_id.active', '=', True)]"/>
|
|
<separator/>
|
|
<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)]"/>
|
|
<separator/>
|
|
<filter string="Not seen in one month" name="not_seen_one_month" domain="[('last_seen_date','<', (context_today() - datetime.timedelta(days=30)).strftime('%Y-%m-%d'))]"/>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="open_view_build_error_tree" model="ir.actions.act_window">
|
|
<field name="name">Errors</field>
|
|
<field name="res_model">runbot.build.error</field>
|
|
<field name="view_mode">tree,form</field>
|
|
<field name="context">{'search_default_not_fixed_errors': True, 'active_test': False}</field>
|
|
</record>
|
|
|
|
<record id="open_view_build_error_content_tree" model="ir.actions.act_window">
|
|
<field name="name">Build errors contents</field>
|
|
<field name="res_model">runbot.build.error.content</field>
|
|
<field name="view_mode">tree,form</field>
|
|
<field name="context">{'search_default_not_fixed_errors': True, 'active_test': False}</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"/>
|
|
<field name="replacement" invisible="re_type != 'cleaning'"/>
|
|
</group>
|
|
</sheet>
|
|
<div class="oe_chatter">
|
|
<field name="message_follower_ids"/>
|
|
<field name="message_ids"/>
|
|
</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"/>
|
|
<field name="replacement"/>
|
|
</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>
|
|
|
|
|
|
|
|
</data>
|
|
</odoo>
|