2019-08-23 21:16:30 +07:00
<odoo >
2022-06-30 19:33:18 +07:00
<template id= "alerts" inherit_id= "runbot_merge.alerts" >
2020-02-07 19:47:18 +07:00
<xpath expr= "//div[@id='alerts']" >
<t t-set= "fpcron" t-value= "env(user=1).ref('forwardport.port_forward')" />
<div t-if= "not fpcron.active" class= "alert alert-warning col-12" role= "alert" >
Forward-port is disabled, merged pull requests will not be forward-ported.
</div>
</xpath>
2021-07-28 18:57:58 +07:00
<!-- key block (hopefully) -->
<xpath expr= "//div[@id='alerts']" position= "inside" >
<t t-if= "env['runbot_merge.pull_requests'].check_access_rights('read', False)" >
<t t-set= "outstanding" t-value= "env['runbot_merge.pull_requests'].search_count([
('source_id', '!=', False),
('state', 'not in', ['merged', 'closed']),
2022-06-07 20:49:52 +07:00
('source_id.merge_date', '< ', datetime.datetime.now() - relativedelta(days=3)),
2021-07-28 18:57:58 +07:00
])"/>
2021-10-20 19:28:29 +07:00
<div t-if= "outstanding != 0" class= "alert col-md-12 alert-warning mb-0" >
2021-07-28 18:57:58 +07:00
<a href= "/forwardport/outstanding" >
<t t-esc= "outstanding" /> outstanding forward-ports
</a>
</div>
</t>
</xpath>
</template>
<template id= "pr_background" >
<t t-if= "p.state == 'merged'" > bg-success</t>
<t t-elif= "p.state == 'closed'" > bg-light</t>
<t t-elif= "p.state == 'error'" > bg-danger</t>
<t t-else= "" > bg-warning</t>
</template>
<record id= "forwardport.outstanding_fp" model= "website.page" >
<field name= "name" > Outstanding forward ports</field>
<field name= "type" > qweb</field>
<field name= "url" > /forwardport/outstanding</field>
<field name= "website_indexed" eval= "False" />
<field name= "is_published" > True</field>
<field name= "key" > forwardport.outstanding_fp</field>
<field name= "arch" type= "xml" >
<t name= "Outstanding forward ports" t-name= "forwardport.outstanding_fp" >
<t t-call= "website.layout" >
2021-10-19 19:39:19 +07:00
<t t-set= "hof" t-value= "env['runbot_merge.pull_requests']._hall_of_shame()" />
2021-07-28 18:57:58 +07:00
<div id= "wrap" class= "oe_structure oe_empty" > <div class= "container-fluid" >
2021-10-19 19:39:19 +07:00
<ul class= "alert bg-light list-inline" >
<span t-foreach= "hof.reviewers" t-as= "count" class= "list-inline-item" >
<a t-attf-href= "?reviewer={{count[0].id}}"
t-field="count[0].display_name"
t-att-title="count[1]"
/>
</span>
</ul>
2021-07-28 18:57:58 +07:00
<h1 > List of pull requests with outstanding forward ports</h1>
2021-10-19 19:39:19 +07:00
<t t-set= "reviewer" t-value= "env['res.partner'].browse(int(request.params.get('reviewer') or 0))" />
<form method= "get" action= "" id= "reset-filter" />
<h2 t-if= "reviewer" class= "text-muted" >
merged by <span t-field= "reviewer.display_name" t-attf-title= "@{{reviewer.github_login}}" />
<button form= "reset-filter" type= "submit"
name="reviewer" value=""
title="See All" class="btn fa fa-times"/>
</h2>
<dl > <t t-foreach= "hof.outstanding" t-as= "x" >
2021-07-28 18:57:58 +07:00
<t t-set= "source" t-value= "x[0]" />
2021-10-19 19:39:19 +07:00
<t t-if= "not reviewer or source.reviewed_by == reviewer" >
<dt >
<a t-att-href= "source.url" > <span t-field= "source.display_name" /> </a>
by <span t-field= "source.author.display_name"
t-attf-title="@{{source.author.github_login}}"/>
merged <span t-field= "source.merge_date"
t-options="{'widget': 'relative'}"
t-att-title="source.merge_date"/>
<t t-if= "not reviewer" >
by <span t-field= "source.reviewed_by.display_name"
t-attf-title="@{{source.reviewed_by.github_login}}"/>
</t>
</dt>
<dd >
Outstanding forward-ports:
<ul >
<li t-foreach= "x.prs" t-as= "p" >
<a t-att-href= "p.url" > <span t-field= "p.display_name" /> </a>
(<span t-field= "p.state" /> )
targeting <span t-field= "p.target.name" />
</li>
</ul>
</dd>
</t>
2021-07-28 18:57:58 +07:00
</t> </dl>
</div> </div>
</t>
</t>
</field>
</record>
<template id= "view_pull_request" inherit_id= "runbot_merge.view_pull_request" >
<xpath expr= "//dl[hasclass('runbot-merge-fields')]" position= "inside" >
<t t-if= "pr.state == 'merged'" >
<dt > merged</dt>
<dd >
<span t-field= "pr.merge_date" t-options= "{'widget': 'relative'}"
t-att-title="pr.merge_date"/>
2021-10-19 19:39:19 +07:00
by <span t-field= "pr.reviewed_by.display_name"
t-attf-title="@{{pr.reviewed_by.github_login}}"/>
2021-07-28 18:57:58 +07:00
</dd>
</t>
<t t-if= "pr.source_id" >
<dt > forward-port of</dt>
<dd >
<a t-att-href= "pr.source_id.url" >
<span t-field= "pr.source_id.display_name" />
</a>
2022-06-29 16:09:55 +07:00
<span t-if= "not pr.parent_id"
class="badge badge-danger user-select-none"
title="A detached PR behaves like a non-forward-port, it has to be approved via the mergebot, this is usually caused by the forward-port having been in conflict or updated.">
DETACHED
</span>
2021-07-28 18:57:58 +07:00
</dd>
</t>
<t t-if= "pr.forwardport_ids" >
<dt > forward-ports</dt>
<dd > <ul >
<t t-foreach= "pr.forwardport_ids" t-as= "p" >
<t t-set= "bgsignal" > <t t-call= "forwardport.pr_background" /> </t>
<li t-att-class= "bgsignal" >
<a t-att-href= "p.url" > <span t-field= "p.display_name" /> </a>
targeting <span t-field= "p.target.name" />
</li>
</t>
</ul> </dd>
</t>
</xpath>
2020-02-07 19:47:18 +07:00
</template>
2019-08-23 21:16:30 +07:00
<record model= "ir.ui.view" id= "project" >
<field name= "name" > Show forwardport project fields</field>
<field name= "inherit_id" ref= "runbot_merge.runbot_merge_form_project" />
<field name= "model" > runbot_merge.project</field>
<field name= "arch" type= "xml" >
<xpath expr= "//sheet/group[2]" position= "after" >
<group string= "Forwardport Configuration" >
<group >
<field string= "Token" name= "fp_github_token" />
</group>
<group >
<field string= "Bot Name" name= "fp_github_name" />
<field string= "Bot Email" name= "fp_github_email" />
</group>
</group>
</xpath>
<xpath expr= "//field[@name='repo_ids']/tree" position= "inside" >
<field string= "FP remote" name= "fp_remote_target"
help="Repository where forward port branches will be created"
/>
</xpath>
<xpath expr= "//field[@name='branch_ids']/tree" position= "inside" >
<field name= "fp_target" string= "FP to"
help="This branch will be forward-ported to (from lower ones)"
/>
</xpath>
</field>
</record>
2021-08-03 19:04:38 +07:00
<record model= "ir.ui.view" id= "repository" >
<field name= "name" > Show forwardport repository fields</field>
<field name= "inherit_id" ref= "runbot_merge.form_repository" />
<field name= "model" > runbot_merge.repository</field>
<field name= "arch" type= "xml" >
<field name= "branch_filter" position= "after" >
<field string= "FP remote" name= "fp_remote_target"
help="Repository where forward port branches will be created"/>
</field>
</field>
</record>
2019-08-23 21:16:30 +07:00
<record model= "ir.ui.view" id= "pr" >
<field name= "name" > Show forwardport PR fields</field>
<field name= "inherit_id" ref= "runbot_merge.runbot_merge_form_prs" />
<field name= "model" > runbot_merge.pull_requests</field>
<field name= "arch" type= "xml" >
2022-06-07 20:49:52 +07:00
<xpath expr= "//field[@name='state']" position= "after" >
<field name= "merge_date" attrs= "{'invisible': [('state', '!=', 'merged')]}" />
</xpath>
2019-08-23 21:16:30 +07:00
<xpath expr= "//sheet/group[2]" position= "after" >
2020-07-13 18:15:03 +07:00
<separator string= "Forward Port" attrs= "{'invisible': [('source_id', '=', False)]}" />
<group attrs= "{'invisible': [('source_id', '!=', False)]}" >
<group >
<field string= "Policy" name= "fw_policy" />
</group>
</group>
2019-08-23 21:16:30 +07:00
<group attrs= "{'invisible': [('source_id', '=', False)]}" >
<group >
<field string= "Original PR" name= "source_id" />
</group>
<group attrs= "{'invisible': [('parent_id', '=', False)]}" >
<field name= "parent_id" />
</group>
<group colspan= "4" attrs= "{'invisible': [('parent_id', '!=', False)]}" >
<span >
Detached from forward porting (either conflicting
or explicitly updated).
</span>
</group>
<group >
<field string= "Forward ported up to" name= "limit_id" />
</group>
</group>
</xpath>
</field>
</record>
</odoo>