mirror of
https://github.com/odoo/runbot.git
synced 2025-03-15 15:35:46 +07:00
[ADD] runbot_merge: stagings canceling wizard
- allows providing a canceling reason - allows nuking the splits at the same time (hopefully) Fixes #661
This commit is contained in:
parent
2746a13163
commit
03c9a7e492
@ -14,6 +14,7 @@
|
||||
'views/configuration.xml',
|
||||
'views/templates.xml',
|
||||
'models/project_freeze/views.xml',
|
||||
'models/staging_cancel/views.xml',
|
||||
],
|
||||
'assets': {
|
||||
'web.assets_frontend': [
|
||||
|
@ -2,3 +2,4 @@ from . import res_partner
|
||||
from . import project
|
||||
from . import pull_requests
|
||||
from . import project_freeze
|
||||
from . import staging_cancel
|
||||
|
@ -1831,8 +1831,17 @@ class Stagings(models.Model):
|
||||
s.write(vals)
|
||||
|
||||
def action_cancel(self):
|
||||
self.cancel("explicitly cancelled by %s", self.env.user.display_name)
|
||||
return { 'type': 'ir.actions.act_window_close' }
|
||||
w = self.env['runbot_merge.stagings.cancel'].create({
|
||||
'staging_id': self.id,
|
||||
})
|
||||
return {
|
||||
'type': 'ir.actions.act_window',
|
||||
'target': 'new',
|
||||
'name': f'Cancel staging {self.id} ({self.target.name})',
|
||||
'view_mode': 'form',
|
||||
'res_model': w._name,
|
||||
'res_id': w.id,
|
||||
}
|
||||
|
||||
def cancel(self, reason, *args):
|
||||
self = self.filtered('active')
|
||||
|
27
runbot_merge/models/staging_cancel/__init__.py
Normal file
27
runbot_merge/models/staging_cancel/__init__.py
Normal file
@ -0,0 +1,27 @@
|
||||
import logging
|
||||
|
||||
from odoo import models, fields
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
class CancelWizard(models.TransientModel):
|
||||
_name = 'runbot_merge.stagings.cancel'
|
||||
_description = "Wizard for cancelling a staging"
|
||||
|
||||
staging_id = fields.Many2one('runbot_merge.stagings', required=True)
|
||||
reason = fields.Char()
|
||||
cancel_splits = fields.Boolean(help="\
|
||||
If any split is pending, also cancel them and move the corresponding \
|
||||
pull requests back into the general pool.")
|
||||
|
||||
def action_cancel(self):
|
||||
if self.cancel_splits:
|
||||
self.env['runbot_merge.split'].search([
|
||||
('target', '=', self.staging_id.target.id)
|
||||
]).unlink()
|
||||
|
||||
reason = self.reason.replace('%', '%%').strip() if self.reason else ''
|
||||
if reason:
|
||||
reason = f' because {reason}'
|
||||
self.staging_id.cancel(f'Cancelled by {self.env.user.display_name}{reason}')
|
||||
self.unlink()
|
||||
return { 'type': 'ir.actions.act_window_close' }
|
17
runbot_merge/models/staging_cancel/views.xml
Normal file
17
runbot_merge/models/staging_cancel/views.xml
Normal file
@ -0,0 +1,17 @@
|
||||
<odoo>
|
||||
<record id="runbot_merge_stagings_cancel_form" model="ir.ui.view">
|
||||
<field name="name">Staging Cancel Form</field>
|
||||
<field name="model">runbot_merge.stagings.cancel</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<group>
|
||||
<group colspan="4"><field name="reason"/></group>
|
||||
<group colspan="4"><field name="cancel_splits"/></group>
|
||||
</group>
|
||||
<footer>
|
||||
<button string="Confirm" name="action_cancel" type="object" class="btn btn-primary"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
@ -10,6 +10,7 @@ access_runbot_merge_pull_requests_admin,Admin access to PR,model_runbot_merge_pu
|
||||
access_runbot_merge_pull_requests_tagging_admin,Admin access to tagging,model_runbot_merge_pull_requests_tagging,runbot_merge.group_admin,1,1,1,1
|
||||
access_runbot_merge_commit_admin,Admin access to commits,model_runbot_merge_commit,runbot_merge.group_admin,1,1,1,1
|
||||
access_runbot_merge_stagings_admin,Admin access to stagings,model_runbot_merge_stagings,runbot_merge.group_admin,1,1,1,1
|
||||
access_runbot_merge_stagings_cancel_admin,Admin access to cancelling stagings,model_runbot_merge_stagings_cancel,runbot_merge.group_admin,1,1,1,1
|
||||
access_runbot_merge_split_admin,Admin access to splits,model_runbot_merge_split,runbot_merge.group_admin,1,1,1,1
|
||||
access_runbot_merge_batch_admin,Admin access to batches,model_runbot_merge_batch,runbot_merge.group_admin,1,1,1,1
|
||||
access_runbot_merge_fetch_job_admin,Admin access to fetch jobs,model_runbot_merge_fetch_job,runbot_merge.group_admin,1,1,1,1
|
||||
|
|
Loading…
Reference in New Issue
Block a user