mirror of
https://github.com/odoo/runbot.git
synced 2025-03-15 23:45:44 +07:00
[IMP] runbot: add has_pr filter
This commit is contained in:
parent
cdae8dc438
commit
57827e5c6f
@ -42,6 +42,7 @@ def route(routes, **kw):
|
||||
search = cookie_search
|
||||
else:
|
||||
search = kwargs.get('search', '')
|
||||
has_pr = kwargs.get('has_pr', None)
|
||||
if keep_search and cookie_search != search:
|
||||
response.set_cookie('search', search)
|
||||
|
||||
@ -56,7 +57,7 @@ def route(routes, **kw):
|
||||
response.qcontext['filter_mode'] = filter_mode
|
||||
response.qcontext['default_category'] = request.env['ir.model.data']._xmlid_to_res_id('runbot.default_category')
|
||||
|
||||
response.qcontext['qu'] = QueryURL('/runbot/%s' % (slug(project) if project else ''), path_args=['search'], search=search, refresh=refresh)
|
||||
response.qcontext['qu'] = QueryURL('/runbot/%s' % (slug(project) if project else ''), search=search, refresh=refresh, has_pr=has_pr)
|
||||
if 'title' not in response.qcontext:
|
||||
response.qcontext['title'] = 'Runbot %s' % project.name or ''
|
||||
response.qcontext['nb_build_errors'] = nb_build_errors
|
||||
@ -107,7 +108,7 @@ class Runbot(Controller):
|
||||
'/runbot',
|
||||
'/runbot/<model("runbot.project"):project>',
|
||||
'/runbot/<model("runbot.project"):project>/search/<search>'], website=True, auth='public', type='http')
|
||||
def bundles(self, project=None, search='', projects=False, refresh=False, for_next_freeze=False, limit=40, **kwargs):
|
||||
def bundles(self, project=None, search='', projects=False, refresh=False, for_next_freeze=False, limit=40, has_pr=None, **kwargs):
|
||||
search = search if len(search) < 60 else search[:60]
|
||||
env = request.env
|
||||
categories = env['runbot.category'].search([])
|
||||
@ -128,6 +129,9 @@ class Runbot(Controller):
|
||||
if project:
|
||||
domain = [('last_batch', '!=', False), ('project_id', '=', project.id), ('no_build', '=', False)]
|
||||
|
||||
if has_pr is not None:
|
||||
domain.append(('has_pr', '=', bool(has_pr)))
|
||||
|
||||
filter_mode = request.httprequest.cookies.get('filter_mode', False)
|
||||
if filter_mode == 'sticky':
|
||||
domain.append(('sticky', '=', True))
|
||||
@ -176,6 +180,8 @@ class Runbot(Controller):
|
||||
'project': project,
|
||||
'triggers': triggers,
|
||||
'trigger_display': trigger_display,
|
||||
'has_pr': has_pr,
|
||||
'search': search,
|
||||
})
|
||||
|
||||
context.update({'message': request.env['ir.config_parameter'].sudo().get_param('runbot.runbot_message')})
|
||||
|
@ -35,6 +35,8 @@ class Bundle(models.Model):
|
||||
base_id = fields.Many2one('runbot.bundle', 'Base bundle', compute='_compute_base_id', store=True)
|
||||
to_upgrade = fields.Boolean('To upgrade', compute='_compute_to_upgrade', store=True, index=False)
|
||||
|
||||
has_pr = fields.Boolean('Has PR', compute='_compute_has_pr', store=True)
|
||||
|
||||
version_id = fields.Many2one('runbot.version', 'Version', compute='_compute_version_id', store=True, recursive=True)
|
||||
version_number = fields.Char(related='version_id.number', store=True, index=True)
|
||||
|
||||
@ -110,6 +112,11 @@ class Bundle(models.Model):
|
||||
else:
|
||||
bundle.base_id = master_base or fallback
|
||||
|
||||
@api.depends('branch_ids.is_pr', 'branch_ids.alive')
|
||||
def _compute_has_pr(self):
|
||||
for bundle in self:
|
||||
bundle.has_pr = any(branch.is_pr and branch.alive for branch in bundle.branch_ids)
|
||||
|
||||
@tools.ormcache('project_id')
|
||||
def _get_base_ids(self, project_id):
|
||||
return [(b.id, b.name) for b in self.search([('is_base', '=', True), ('project_id', '=', project_id)])]
|
||||
|
@ -8,7 +8,13 @@
|
||||
<div class="input-group md-form form-sm form-2 pl-0">
|
||||
<input class="form-control my-0 py-1" type="text" placeholder="Search" aria-label="Search" name="search" t-att-value="search"/>
|
||||
<div class="input-group-append">
|
||||
<button type='submit' class="input-group-text red lighten-3" id="basic-text1">
|
||||
<a t-if="has_pr" class="btn btn-primary active input-group-text" title="All" t-att-href="qu(has_pr=None)">
|
||||
<i class="fa fa-github text-grey"/>
|
||||
</a>
|
||||
<a t-else="" class="btn input-group-text" title="Open pull requests" t-att-href="qu(has_pr=1)">
|
||||
<i class="fa fa-github text-grey"/>
|
||||
</a>
|
||||
<button type='submit' class="input-group-text">
|
||||
<i class="fa fa-search text-grey"/>
|
||||
</button>
|
||||
</div>
|
||||
|
@ -53,6 +53,7 @@
|
||||
<field name="defined_base_id"/>
|
||||
<field name="version_id"/>
|
||||
<field name="for_next_freeze"/>
|
||||
<field name="has_pr"/>
|
||||
</group>
|
||||
<group string="Testing options">
|
||||
<field name="no_build"/>
|
||||
@ -154,6 +155,22 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="runbot_bundle_search_view" model="ir.ui.view">
|
||||
<field name="name">runbot.bundle.filter</field>
|
||||
<field name="model">runbot.bundle</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search bundle">
|
||||
<field name="name"/>
|
||||
<field name="version_id"/>
|
||||
<separator/>
|
||||
<filter string="For next freeze" name="for_next_freeze" domain="[('for_next_freeze', '=', True)]"/>
|
||||
<filter string="Has open pr" name="has_pr" domain="[('has_pr', '=', True)]"/>
|
||||
<filter string="No pr" name="no_pr" domain="[('branch_ids', '!=', []), '!', ('branch_ids', 'any', [('is_pr', '=', True)])]"/>
|
||||
<separator/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_runbot_batch" model="ir.ui.view">
|
||||
<field name="model">runbot.batch</field>
|
||||
<field name="arch" type="xml">
|
||||
|
Loading…
Reference in New Issue
Block a user