Merge lp:~luistp13/addons-vauxoo/luis_sprint_kanban into lp:addons-vauxoo

Proposed by Luis Torres
Status: Superseded
Proposed branch: lp:~luistp13/addons-vauxoo/luis_sprint_kanban
Merge into: lp:addons-vauxoo
Diff against target: 527 lines (+476/-0)
8 files modified
sprint_kanban/__init__.py (+3/-0)
sprint_kanban/__openerp__.py (+33/-0)
sprint_kanban/model/__init__.py (+2/-0)
sprint_kanban/model/sprint_kanban.py (+94/-0)
sprint_kanban/security/ir.model.access.csv (+7/-0)
sprint_kanban/security/security_sprint_kanban.xml (+13/-0)
sprint_kanban/view/sprint_kanban_view.xml (+200/-0)
sprint_kanban/workflow/workflow_sprint_kanban.xml (+124/-0)
To merge this branch: bzr merge lp:~luistp13/addons-vauxoo/luis_sprint_kanban
Reviewer Review Type Date Requested Status
Gabriela Quilarque Needs Fixing
Jose Antonio Morales Ponce(vauxoo) - - http://www.vauxoo.com Pending
Review via email: mp+133122@code.launchpad.net

This proposal supersedes a proposal from 2012-10-29.

This proposal has been superseded by a proposal from 2012-11-07.

Description of the change

[ADD] added sprint_kanban module To add funtionality in kanban view

To post a comment you must log in.
Revision history for this message
Gabriela Quilarque (gabrielaquilarque97) wrote :

Al intentar instalar el módulo sprint_kanban, explota.

review: Needs Fixing
512. By luistp13

[IMP] modified view in kanban

513. By luistp13

[ADD] methods added in the model sprint_kanban

514. By luistp13

[IMP] modifiead openerp__.py file

Unmerged revisions

514. By luistp13

[IMP] modifiead openerp__.py file

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added directory 'sprint_kanban'
=== added file 'sprint_kanban/__init__.py'
--- sprint_kanban/__init__.py 1970-01-01 00:00:00 +0000
+++ sprint_kanban/__init__.py 2012-11-07 13:40:26 +0000
@@ -0,0 +1,3 @@
1import model
2import wizard
3import report
04
=== added file 'sprint_kanban/__openerp__.py'
--- sprint_kanban/__openerp__.py 1970-01-01 00:00:00 +0000
+++ sprint_kanban/__openerp__.py 2012-11-07 13:40:26 +0000
@@ -0,0 +1,33 @@
1#!/usr/bin/python
2# -*- enconding: utf-8 -*-
3
4
5{
6 "name" : "sprint_kanban",#Module's name
7 "version" : "1.1", #Version's number
8 "depends" : [ 'project',
9 'web_kanban',
10 'base_setup',
11 'base_status',
12 'product',
13 'analytic',
14 'board',
15 'mail',
16 'resource',], #Dependent module
17 "author" : "Luis Torres",#Programmer
18 "description" : """
19 This is a module of the sprint kanban
20 """, #Description of the module
21 "website" : "http://vauxoo.com",#Website
22 "category" : "Test",#Category for general information
23 "init_xml" : [],#Init data
24 "demo_xml" : [],#Demo data
25 "test" : [],#Load, yaml
26 "update_xml" : [
27 'security/security_sprint_kanban.xml','security/ir.model.access.csv',
28 "view/sprint_kanban_view.xml"
29 ],
30 "installable" : True,
31 "active" : False
32
33}
034
=== added directory 'sprint_kanban/data'
=== added directory 'sprint_kanban/demo'
=== added directory 'sprint_kanban/i18n'
=== added directory 'sprint_kanban/model'
=== added file 'sprint_kanban/model/__init__.py'
--- sprint_kanban/model/__init__.py 1970-01-01 00:00:00 +0000
+++ sprint_kanban/model/__init__.py 2012-11-07 13:40:26 +0000
@@ -0,0 +1,2 @@
1import sprint_kanban
2
03
=== added file 'sprint_kanban/model/sprint_kanban.py'
--- sprint_kanban/model/sprint_kanban.py 1970-01-01 00:00:00 +0000
+++ sprint_kanban/model/sprint_kanban.py 2012-11-07 13:40:26 +0000
@@ -0,0 +1,94 @@
1# -*- coding: utf-8 -*-
2
3from osv import fields
4from osv import osv
5from tools.translate import _
6import time
7import random
8from datetime import datetime
9
10
11
12class sprint_kanban(osv.osv):
13
14 def set_done(self, cr, uid, ids, context=None):
15 self.write(cr, uid, ids, {'state':'done'}, context=context)
16 return True
17
18 def set_cancel(self, cr, uid, ids, context=None):
19
20 self.write(cr, uid, ids, {'state':'cancelled'}, context=context)
21 return True
22
23 def set_pending(self, cr, uid, ids, context=None):
24 self.write(cr, uid, ids, {'state':'pending'}, context=context)
25 return True
26
27 def set_open(self, cr, uid, ids, context=None):
28 self.write(cr, uid, ids, {'state':'open'}, context=context)
29 return True
30
31
32 _name = 'sprint.kanban'
33 _inherit = ['mail.thread', 'ir.needaction_mixin','account.analytic.account']
34
35 _columns = {
36 'name': fields.char('Name Sprint',264, required=True),
37 'project_id': fields.many2one('project.project','Project',ondelete="cascade"),
38 'description': fields.text('Description'),
39 'datestart': fields.date('Start Date'),
40 'dateend': fields.date('End Date'),
41 'color': fields.integer('Color Index'),
42 'members': fields.many2many('res.users', 'project_user_rel', 'project_id', 'uid', 'Project Members',states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}),
43 'priority': fields.selection([('4','Very Low'), ('3','Low'), ('2','Medium'), ('1','Important'), ('0','Very important')], 'Priority', select=True),
44 'state': fields.selection([('draft','New'),('open','In Progress'), ('cancelled', 'Cancelled'),('pending','Pending'),('done', 'Done')], 'Status', required=True,),
45 'user_id': fields.many2one('res.users', 'Assigned to'),
46 'kanban_state': fields.selection([('normal', 'Normal'),('blocked', 'Blocked'),('done', 'Ready To Pull')], 'Kanban State',
47 help="A task's kanban state indicates special situations affecting it:\n"
48 " * Normal is the default situation\n"
49 " * Blocked indicates something is preventing the progress of this task\n"
50 " * Ready To Pull indicates the task is ready to be pulled to the next stage",
51 readonly=True, required=False),
52 }
53
54 def set_kanban_state_blocked(self, cr, uid, ids, context=None):
55 self.write(cr, uid, ids, {'kanban_state': 'blocked'}, context=context)
56 return False
57
58 def set_kanban_state_normal(self, cr, uid, ids, context=None):
59 self.write(cr, uid, ids, {'kanban_state': 'normal'}, context=context)
60 return False
61
62 def set_kanban_state_done(self, cr, uid, ids, context=None):
63 self.write(cr, uid, ids, {'kanban_state': 'done'}, context=context)
64 return False
65
66 def set_priority(self, cr, uid, ids, priority, *args):
67 return self.write(cr, uid, ids, {'priority' : priority})
68
69 def set_high_priority(self, cr, uid, ids, *args):
70 return self.set_priority(cr, uid, ids, '1')
71
72 def set_normal_priority(self, cr, uid, ids, *args):
73 return self.set_priority(cr, uid, ids, '2')
74
75 _defaults = {
76
77 'state': 'draft',
78 'priority': '1',
79
80 }
81
82sprint_kanban()
83
84class sprint_kanban_tasks(osv.osv):
85
86 _inherit = 'project.task'
87
88 _columns={
89
90 'sprint_id':fields.many2one('sprint.kanban','Sprint',ondelete="cascade"),
91
92 }
93sprint_kanban_tasks()
94
095
=== added directory 'sprint_kanban/report'
=== added file 'sprint_kanban/report/__init__.py'
=== added directory 'sprint_kanban/security'
=== added file 'sprint_kanban/security/ir.model.access.csv'
--- sprint_kanban/security/ir.model.access.csv 1970-01-01 00:00:00 +0000
+++ sprint_kanban/security/ir.model.access.csv 2012-11-07 13:40:26 +0000
@@ -0,0 +1,7 @@
1"id","name","model_id:id","group_id:id",perm_read,perm_write,perm_create,perm_unlink
2"access_sprint_user","sprint_kanban","model_sprint_kanban","sprint_kanban.group_sprint_kanban_user",1,0,0,0
3"access_sprint_manager","sprint_kanban","model_sprint_kanban","sprint_kanban.group_sprint_kanban_manager",1,1,1,1
4
5
6
7
08
=== added file 'sprint_kanban/security/security_sprint_kanban.xml'
--- sprint_kanban/security/security_sprint_kanban.xml 1970-01-01 00:00:00 +0000
+++ sprint_kanban/security/security_sprint_kanban.xml 2012-11-07 13:40:26 +0000
@@ -0,0 +1,13 @@
1<?xml version="1.0" encoding="utf-8"?>
2<openerp>
3<data noupdate="0">
4 <record id="group_sprint_kanban_user" model="res.groups">
5 <field name="name">Sprint / User</field>
6 </record>
7
8 <record id="group_sprint_kanban_manager" model="res.groups">
9 <field name="name">Sprint / Manager</field>
10 </record>
11
12</data>
13</openerp>
014
=== added directory 'sprint_kanban/view'
=== added file 'sprint_kanban/view/sprint_kanban_view.xml'
--- sprint_kanban/view/sprint_kanban_view.xml 1970-01-01 00:00:00 +0000
+++ sprint_kanban/view/sprint_kanban_view.xml 2012-11-07 13:40:26 +0000
@@ -0,0 +1,200 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<openerp>
3 <data>
4
5 <record id="act_project_project_2_project_task_all" model="ir.actions.act_window">
6 <field name="res_model">project.task</field>
7 <field name="view_type">form</field>
8 <field name="name">Tasks</field>
9 <field name="view_mode">kanban,tree,form</field>
10 <field name="context">{'search_default_project_id': [active_id], 'default_project_id': active_id}</field>
11 </record>
12
13
14 <!-- +++++++++++ view in Tree +++++++++++++++++++++++++++ -->
15 <record model="ir.ui.view" id="sprint_kanban_tree_view">
16 <field name="name">sprint.kanban.tree</field>
17 <field name="model">sprint.kanban</field>
18 <field name="type">tree</field>
19 <field name="arch" type="xml">
20 <tree string="Sprint Kanban Tree">
21 <field name="name" />
22 <field name="project_id" />
23 <field name="description" />
24 <field name="datestart" />
25 <field name="dateend" />
26 </tree>
27 </field>
28 </record>
29
30 <!-- +++++++++++ view in Form +++++++++++++++++++++++++++ -->
31
32 <record model="ir.ui.view" id="sprint_kanban_form_view">
33 <field name="name">sprint.kanban.form</field>
34 <field name="model">sprint.kanban</field>
35 <field name="type">form</field>
36 <field name="arch" type="xml">
37 <form string ="Sprint Kanban Form" version="7.0">
38 <header>
39
40 <button name="set_open" string="Initialize" type="object" states="draft" />
41 <button name="set_done" string="Done" type="object" states="open,pending" />
42 <button name="set_open" string="Re-Open Sprint" type="object" states="cancelled,close" />
43 <button name="set_pending" string="Pending" type="object" states="open" />
44 <button name="set_cancel" string="Cancel" type="object" states="open,pending" />
45 <field name="state" widget="statusbar" statusbar_visible="open,close,cancelled,pending,done" statusbar_colors='{"pending":"blue"}' />
46 </header>
47
48 <sheet string="Project">
49 <label for="name" class="oe_edit_only" />
50 <h1><field name="name" /></h1>
51 <group>
52 <group>
53 <field name="project_id" />
54 </group>
55 <group>
56 <field name="datestart" />
57 <field name="dateend" />
58 </group>
59 </group>
60 <group>
61 <field name="description" />
62 </group>
63 <div class="oe_right oe_button_box" name="buttons">
64
65 <div class="oe_right oe_button_box" name="buttons">
66 <button name="%(act_project_project_2_project_task_all)d" string="Tasks" type="action" />
67 <button name="%(base.action_attachment)d" string="Documents" type="action" />
68 </div>
69 </div>
70 </sheet>
71
72 <div class="oe_chatter">
73 <field name="message_ids" widget="mail_thread" />
74 <field name="message_follower_ids" widget="mail_followers" />
75 </div>
76 </form>
77 </field>
78 </record>
79 <!-- +++++++++++ view in Kanban +++++++++++++++++++++++++++ -->
80
81 <record model="ir.ui.view" id="view_sprint_kanban">
82 <field name="name">sprint.kanban.kanban</field>
83 <field name="model">sprint.kanban</field>
84 <field name="arch" type="xml">
85
86 <kanban version="7.0" class="oe_background_grey">
87
88 <field name="name" />
89 <field name="state" />
90 <field name="project_id" />
91 <field name="color" />
92 <field name="members" />
93 <field name="user_id" />
94 <field name="description" />
95 <field name="priority" />
96 <field name="kanban_state" />
97
98
99 <templates>
100 <t t-name="kanban-box">
101 <div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_project oe_kanban_global_click">
102 <div class="oe_dropdown_toggle oe_dropdown_kanban">
103 <span class="oe_e">í</span>
104 <ul class="oe_dropdown_menu">
105
106 <t t-if="widget.view.is_action_enabled('edit')"><li><a type="edit">Edit...</a> </li></t>
107 <t t-if="widget.view.is_action_enabled('delete')"><li><a type="delete">Delete</a></li></t>
108
109 <li><ul class="oe_kanban_colorpicker" data-field="color" /></li>
110 </ul>
111
112 </div>
113 <div class="oe_kanban_content">
114 <h4> <field name="name" /> </h4>
115 <div class="oe_kanban_project_list">
116 <field name="project_id" />
117 </div>
118 <div class="oe_kanban_project_list">
119 </div>
120
121
122 <div class="oe_kanban_bottom_right">
123 <a t-if="record.kanban_state.raw_value === 'normal'" type="object" string="In Progress" name="set_kanban_state_done" class="oe_kanban_status" />
124 <a t-if="record.kanban_state.raw_value === 'done'" type="object" string="Stage Done" name="set_kanban_state_blocked" class="oe_kanban_status oe_kanban_status_green" />
125 <a t-if="record.kanban_state.raw_value === 'blocked'" type="object" string="Blocked" name="set_kanban_state_normal" class="oe_kanban_status oe_kanban_status_red" />
126 <a t-if="record.priority.raw_value == 1" type="object" string="Priority" name="set_normal_priority" class="oe_e oe_star_on">7</a>
127 <a t-if="record.priority.raw_value != 1" type="object" string="Priority" name="set_high_priority" class="oe_e oe_star_off">7</a>
128 <img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar" />
129 </div>
130
131 <div class="oe_kanban_footer_left">
132
133 <span t-if="record.datestart.raw_value">
134 <span class="oe_e">N</span>
135 <field name="datestart" />
136 </span>
137
138 <span>
139 <span class="oe_e">R</span>
140 <t t-if="record.dateend.raw_value" />
141 <field name="dateend" />
142 </span>
143 </div>
144 </div>
145 </div>
146 </t>
147 </templates>
148
149 </kanban>
150 </field>
151 </record>
152
153
154 <!-- +++++++++++ view in Form Inherit of Tasks Project +++++++++++++++++++++++++++ -->
155
156 <record model="ir.ui.view" id="inherit_tasks_sprint_kanban_form_view">
157 <field name="name">inherit.tasks.sprint.kanban</field>
158 <field name="model">project.task</field>
159 <field name="type">form</field>
160 <field name="inherit_id" ref="project.view_task_form2" />
161 <field name="arch" type="xml">
162 <xpath expr="//field[@name='categ_ids']" position="after">
163 <field name="sprint_id" />
164 </xpath>
165 </field>
166 </record>
167
168 <!--++++++++++++++++++++++++++Actions+++++++++++++++++++++++++++++++++++-->
169
170 <record id="action_view_task" model="ir.actions.act_window">
171 <field name="name">Sprints</field>
172 <field name="res_model">sprint.kanban</field>
173 <field name="view_type">form</field>
174 <field name="domain">[]</field>
175 <field name="view_mode">kanban,tree,form</field>
176 <field name="view_id" ref="view_sprint_kanban" />
177 <field name="context">{}</field>
178 <field name="help" type="html">
179 <p class="oe_view_nocontent_create">Click to start a new Sprint.</p>
180 </field>
181 </record>
182 <record id="open_view_task_list_kanban" model="ir.actions.act_window.view">
183 <field name="sequence" eval="0" />
184 <field name="view_mode">kanban</field>
185 <field name="act_window_id" ref="action_view_task" />
186 </record>
187 <!--+++++++++++++++++++++++++++++ MENUS +++++++++++++++++++++++++++++++++++++++++-->
188 <!-- submenus -->
189 <menuitem id="sprint_kanban_menu" name="Sprint" parent="project.menu_project_management" action="action_view_task" sequence="5" />
190 <record id="action_view_task_overpassed_draft" model="ir.actions.act_window">
191 <field name="name">Overpassed Tasks</field>
192 <field name="res_model">sprint.kanban</field>
193 <field name="view_type">form</field>
194 <field name="view_mode">tree,form,calendar,graph,kanban</field>
195 <field name="domain">[('date_deadline','&lt;',time.strftime('%Y-%m-%d')),('state','in',('draft','pending','open'))]</field>
196 <field name="filter" eval="True" />
197
198 </record>
199 </data>
200</openerp>
0201
=== added directory 'sprint_kanban/wizard'
=== added file 'sprint_kanban/wizard/__init__.py'
=== added directory 'sprint_kanban/workflow'
=== added file 'sprint_kanban/workflow/workflow_sprint_kanban.xml'
--- sprint_kanban/workflow/workflow_sprint_kanban.xml 1970-01-01 00:00:00 +0000
+++ sprint_kanban/workflow/workflow_sprint_kanban.xml 2012-11-07 13:40:26 +0000
@@ -0,0 +1,124 @@
1<?xml version="1.0" ?>
2<openerp>
3 <data>
4
5 <!--*****************define wrokflow**********************-->
6
7 <record id="workflow_sprintsworkflow0" model="workflow">
8 <field eval="1" name="active"/>
9 <field name="model_id" ref="project.model_project_sprint"/>
10 <field eval="&quot;&quot;&quot;sprints&quot;&quot;&quot;" name="name"/>
11 </record>
12
13 <!--*************************** Workflow Activitys *******************************-->
14
15 <record id="workflow_node_sprintbydelegate0" model="workflow.node">
16 <field name="menu_id" ref="project.menu_action_view_sprint"/>
17 <field name="model_id" ref="project.model_project_sprint"/>
18 <field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
19 <field eval="&quot;&quot;&quot;sprint by delegate&quot;&quot;&quot;" name="name"/>
20 <field eval="&quot;&quot;&quot;Delegate your sprint to the other user&quot;&quot;&quot;" name="note"/>
21 <field name="workflow_id" ref="workflow_workflow_sprintsworkflow0"/>
22 <field eval="&quot;&quot;&quot;object.state in ('open', 'pending')&quot;&quot;&quot;" name="model_states"/>
23 <field eval="1" name="flow_start"/>
24 </record>
25
26 <record id="workflow_node_draftsprint0" model="workflow.node">
27 <field name="menu_id" ref="project.menu_action_view_sprint"/>
28 <field name="model_id" ref="project.model_project_sprint"/>
29 <field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
30 <field eval="&quot;&quot;&quot;Draft sprint&quot;&quot;&quot;" name="name"/>
31 <field eval="&quot;&quot;&quot;Define the Requirements and Set Planned Hours.&quot;&quot;&quot;" name="note"/>
32 <field name="workflow_id" ref="workflow_workflow_sprintsworkflow0"/>
33 <field eval="&quot;&quot;&quot;object.state=='draft'&quot;&quot;&quot;" name="model_states"/>
34 <field eval="0" name="flow_start"/>
35 </record>
36
37 <record id="workflow_node_opensprint0" model="workflow.node">
38 <field name="menu_id" ref="project.menu_action_view_sprint"/>
39 <field name="model_id" ref="project.model_project_sprint"/>
40 <field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
41 <field eval="&quot;&quot;&quot;Open sprint&quot;&quot;&quot;" name="name"/>
42 <field eval="&quot;&quot;&quot;Encode your working hours.&quot;&quot;&quot;" name="note"/>
43 <field name="workflow_id" ref="workflow_workflow_sprintsworkflow0"/>
44 <field eval="&quot;&quot;&quot;object.state=='open'&quot;&quot;&quot;" name="model_states"/>
45 <field eval="0" name="flow_start"/>
46 </record>
47
48 <record id="workflow_node_donesprint0" model="workflow.node">
49 <field name="menu_id" ref="project.menu_action_view_sprint"/>
50 <field name="model_id" ref="project.model_project_sprint"/>
51 <field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
52 <field eval="&quot;&quot;&quot;Done sprint&quot;&quot;&quot;" name="name"/>
53 <field eval="&quot;&quot;&quot;sprint is Completed&quot;&quot;&quot;" name="note"/>
54 <field name="workflow_id" ref="workflow_workflow_sprintsworkflow0"/>
55 <field eval="&quot;&quot;&quot;object.state=='done'&quot;&quot;&quot;" name="model_states"/>
56 <field eval="0" name="flow_start"/>
57 </record>
58
59<!--*************************** Workflow Transitions *******************************-->
60
61 <record id="workflow_transition_delegate0" model="workflow.transition">
62 <field eval="[(6,0,[])]" name="transition_ids"/>
63 <field eval="&quot;&quot;&quot;Delegate&quot;&quot;&quot;" name="name"/>
64 <field eval="&quot;&quot;&quot;Delegates sprints to the other user&quot;&quot;&quot;" name="note"/>
65 <field model="workflow.node" name="target_node_id" ref="workflow_node_draftsprint0"/>
66 <field model="workflow.node" name="source_node_id" ref="workflow_node_sprintbydelegate0"/>
67 </record>
68
69 <record id="workflow_transition_draftopensprint0" model="workflow.transition">
70 <field eval="[(6,0,[])]" name="transition_ids"/>
71 <field eval="&quot;&quot;&quot;Draft Open sprint&quot;&quot;&quot;" name="name"/>
72 <field eval="&quot;&quot;&quot;From draft state, it will come into the open state.&quot;&quot;&quot;" name="note"/>
73 <field model="workflow.node" name="target_node_id" ref="workflow_node_opensprint0"/>
74 <field model="workflow.node" name="source_node_id" ref="workflow_node_draftsprint0"/>
75 </record>
76
77 <record id="workflow_transition_opendonesprint0" model="workflow.transition">
78 <field eval="[(6,0,[])]" name="transition_ids"/>
79 <field eval="&quot;&quot;&quot;Open Done sprint&quot;&quot;&quot;" name="name"/>
80 <field eval="&quot;&quot;&quot;When sprint is completed, it will come into the done state.&quot;&quot;&quot;" name="note"/>
81 <field model="workflow.node" name="target_node_id" ref="workflow_node_donesprint0"/>
82 <field model="workflow.node" name="source_node_id" ref="workflow_node_opensprint0"/>
83 </record>
84
85
86<!--*************************** Workflow Actions *******************************-->
87
88 <record id="workflow_transition_action_draftopensprint0" model="workflow.transition.action">
89 <field eval="&quot;&quot;&quot;do_open&quot;&quot;&quot;" name="action"/>
90 <field eval="&quot;&quot;&quot;object&quot;&quot;&quot;" name="state"/>
91 <field eval="&quot;&quot;&quot;Open&quot;&quot;&quot;" name="name"/>
92 <field name="transition_id" ref="workflow_transition_draftopensprint0"/>
93 </record>
94
95 <record id="workflow_transition_action_draftcancelsprint0" model="workflow.transition.action">
96 <field eval="&quot;&quot;&quot;do_cancel&quot;&quot;&quot;" name="action"/>
97 <field eval="&quot;&quot;&quot;object&quot;&quot;&quot;" name="state"/>
98 <field eval="&quot;&quot;&quot;Cancel&quot;&quot;&quot;" name="name"/>
99 <field name="transition_id" ref="workflow_transition_draftopensprint0"/>
100 </record>
101
102 <record id="workflow_transition_action_openpendingsprint0" model="workflow.transition.action">
103 <field eval="&quot;&quot;&quot;do_pending&quot;&quot;&quot;" name="action"/>
104 <field eval="&quot;&quot;&quot;object&quot;&quot;&quot;" name="state"/>
105 <field eval="&quot;&quot;&quot;Set pending&quot;&quot;&quot;" name="name"/>
106 <field name="transition_id" ref="workflow_transition_opendonesprint0"/>
107 </record>
108
109 <record id="workflow_transition_action_opendraftsprint0" model="workflow.transition.action">
110 <field eval="&quot;&quot;&quot;do_draft&quot;&quot;&quot;" name="action"/>
111 <field eval="&quot;&quot;&quot;object&quot;&quot;&quot;" name="state"/>
112 <field eval="&quot;&quot;&quot;Draft&quot;&quot;&quot;" name="name"/>
113 <field name="transition_id" ref="workflow_transition_opendonesprint0"/>
114 </record>
115
116 <record id="workflow_transition_action_opencancelsprint0" model="workflow.transition.action">
117 <field eval="&quot;&quot;&quot;do_cancel&quot;&quot;&quot;" name="action"/>
118 <field eval="&quot;&quot;&quot;object&quot;&quot;&quot;" name="state"/>
119 <field eval="&quot;&quot;&quot;Cancel&quot;&quot;&quot;" name="name"/>
120 <field name="transition_id" ref="workflow_transition_opendonesprint0"/>
121 </record>
122
123 </data>
124</openerp>