runbot/runbot/views/build_error_views.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>
<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="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','&lt;', (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"/>
<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','&lt;', (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>