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 Pending
Jose Antonio Morales Ponce(vauxoo) - - http://www.vauxoo.com Pending
Review via email: mp+133245@code.launchpad.net

This proposal supersedes a proposal from 2012-11-06.

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 : Posted in a previous version of this proposal

Al intentar instalar el módulo sprint_kanban, explota.

review: Needs Fixing
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
1=== added directory 'sprint_kanban'
2=== added file 'sprint_kanban/__init__.py'
3--- sprint_kanban/__init__.py 1970-01-01 00:00:00 +0000
4+++ sprint_kanban/__init__.py 2012-11-07 13:51:27 +0000
5@@ -0,0 +1,3 @@
6+import model
7+import wizard
8+import report
9
10=== added file 'sprint_kanban/__openerp__.py'
11--- sprint_kanban/__openerp__.py 1970-01-01 00:00:00 +0000
12+++ sprint_kanban/__openerp__.py 2012-11-07 13:51:27 +0000
13@@ -0,0 +1,33 @@
14+#!/usr/bin/python
15+# -*- enconding: utf-8 -*-
16+
17+
18+{
19+ "name" : "sprint_kanban",#Module's name
20+ "version" : "1.1", #Version's number
21+ "depends" : [ 'project',
22+ 'web_kanban',
23+ 'base_setup',
24+ 'base_status',
25+ 'product',
26+ 'analytic',
27+ 'board',
28+ 'mail',
29+ 'resource',], #Dependent module
30+ "author" : "Luis Torres",#Programmer
31+ "description" : """
32+ This is a module of the sprint kanban
33+ """, #Description of the module
34+ "website" : "http://vauxoo.com",#Website
35+ "category" : "Test",#Category for general information
36+ "init_xml" : [],#Init data
37+ "demo_xml" : [],#Demo data
38+ "test" : [],#Load, yaml
39+ "update_xml" : [
40+ 'security/security_sprint_kanban.xml','security/ir.model.access.csv',
41+ "view/sprint_kanban_view.xml"
42+ ],
43+ "installable" : True,
44+ "active" : False
45+
46+}
47
48=== added directory 'sprint_kanban/data'
49=== added directory 'sprint_kanban/demo'
50=== added directory 'sprint_kanban/i18n'
51=== added directory 'sprint_kanban/model'
52=== added file 'sprint_kanban/model/__init__.py'
53--- sprint_kanban/model/__init__.py 1970-01-01 00:00:00 +0000
54+++ sprint_kanban/model/__init__.py 2012-11-07 13:51:27 +0000
55@@ -0,0 +1,2 @@
56+import sprint_kanban
57+
58
59=== added file 'sprint_kanban/model/sprint_kanban.py'
60--- sprint_kanban/model/sprint_kanban.py 1970-01-01 00:00:00 +0000
61+++ sprint_kanban/model/sprint_kanban.py 2012-11-07 13:51:27 +0000
62@@ -0,0 +1,94 @@
63+# -*- coding: utf-8 -*-
64+
65+from osv import fields
66+from osv import osv
67+from tools.translate import _
68+import time
69+import random
70+from datetime import datetime
71+
72+
73+
74+class sprint_kanban(osv.osv):
75+
76+ def set_done(self, cr, uid, ids, context=None):
77+ self.write(cr, uid, ids, {'state':'done'}, context=context)
78+ return True
79+
80+ def set_cancel(self, cr, uid, ids, context=None):
81+
82+ self.write(cr, uid, ids, {'state':'cancelled'}, context=context)
83+ return True
84+
85+ def set_pending(self, cr, uid, ids, context=None):
86+ self.write(cr, uid, ids, {'state':'pending'}, context=context)
87+ return True
88+
89+ def set_open(self, cr, uid, ids, context=None):
90+ self.write(cr, uid, ids, {'state':'open'}, context=context)
91+ return True
92+
93+
94+ _name = 'sprint.kanban'
95+ _inherit = ['mail.thread', 'ir.needaction_mixin','account.analytic.account']
96+
97+ _columns = {
98+ 'name': fields.char('Name Sprint',264, required=True),
99+ 'project_id': fields.many2one('project.project','Project',ondelete="cascade"),
100+ 'description': fields.text('Description'),
101+ 'datestart': fields.date('Start Date'),
102+ 'dateend': fields.date('End Date'),
103+ 'color': fields.integer('Color Index'),
104+ 'members': fields.many2many('res.users', 'project_user_rel', 'project_id', 'uid', 'Project Members',states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}),
105+ 'priority': fields.selection([('4','Very Low'), ('3','Low'), ('2','Medium'), ('1','Important'), ('0','Very important')], 'Priority', select=True),
106+ 'state': fields.selection([('draft','New'),('open','In Progress'), ('cancelled', 'Cancelled'),('pending','Pending'),('done', 'Done')], 'Status', required=True,),
107+ 'user_id': fields.many2one('res.users', 'Assigned to'),
108+ 'kanban_state': fields.selection([('normal', 'Normal'),('blocked', 'Blocked'),('done', 'Ready To Pull')], 'Kanban State',
109+ help="A task's kanban state indicates special situations affecting it:\n"
110+ " * Normal is the default situation\n"
111+ " * Blocked indicates something is preventing the progress of this task\n"
112+ " * Ready To Pull indicates the task is ready to be pulled to the next stage",
113+ readonly=True, required=False),
114+ }
115+
116+ def set_kanban_state_blocked(self, cr, uid, ids, context=None):
117+ self.write(cr, uid, ids, {'kanban_state': 'blocked'}, context=context)
118+ return False
119+
120+ def set_kanban_state_normal(self, cr, uid, ids, context=None):
121+ self.write(cr, uid, ids, {'kanban_state': 'normal'}, context=context)
122+ return False
123+
124+ def set_kanban_state_done(self, cr, uid, ids, context=None):
125+ self.write(cr, uid, ids, {'kanban_state': 'done'}, context=context)
126+ return False
127+
128+ def set_priority(self, cr, uid, ids, priority, *args):
129+ return self.write(cr, uid, ids, {'priority' : priority})
130+
131+ def set_high_priority(self, cr, uid, ids, *args):
132+ return self.set_priority(cr, uid, ids, '1')
133+
134+ def set_normal_priority(self, cr, uid, ids, *args):
135+ return self.set_priority(cr, uid, ids, '2')
136+
137+ _defaults = {
138+
139+ 'state': 'draft',
140+ 'priority': '1',
141+
142+ }
143+
144+sprint_kanban()
145+
146+class sprint_kanban_tasks(osv.osv):
147+
148+ _inherit = 'project.task'
149+
150+ _columns={
151+
152+ 'sprint_id':fields.many2one('sprint.kanban','Sprint',ondelete="cascade"),
153+
154+ }
155+sprint_kanban_tasks()
156+
157
158=== added directory 'sprint_kanban/report'
159=== added file 'sprint_kanban/report/__init__.py'
160=== added directory 'sprint_kanban/security'
161=== added file 'sprint_kanban/security/ir.model.access.csv'
162--- sprint_kanban/security/ir.model.access.csv 1970-01-01 00:00:00 +0000
163+++ sprint_kanban/security/ir.model.access.csv 2012-11-07 13:51:27 +0000
164@@ -0,0 +1,7 @@
165+"id","name","model_id:id","group_id:id",perm_read,perm_write,perm_create,perm_unlink
166+"access_sprint_user","sprint_kanban","model_sprint_kanban","sprint_kanban.group_sprint_kanban_user",1,0,0,0
167+"access_sprint_manager","sprint_kanban","model_sprint_kanban","sprint_kanban.group_sprint_kanban_manager",1,1,1,1
168+
169+
170+
171+
172
173=== added file 'sprint_kanban/security/security_sprint_kanban.xml'
174--- sprint_kanban/security/security_sprint_kanban.xml 1970-01-01 00:00:00 +0000
175+++ sprint_kanban/security/security_sprint_kanban.xml 2012-11-07 13:51:27 +0000
176@@ -0,0 +1,13 @@
177+<?xml version="1.0" encoding="utf-8"?>
178+<openerp>
179+<data noupdate="0">
180+ <record id="group_sprint_kanban_user" model="res.groups">
181+ <field name="name">Sprint / User</field>
182+ </record>
183+
184+ <record id="group_sprint_kanban_manager" model="res.groups">
185+ <field name="name">Sprint / Manager</field>
186+ </record>
187+
188+</data>
189+</openerp>
190
191=== added directory 'sprint_kanban/view'
192=== added file 'sprint_kanban/view/sprint_kanban_view.xml'
193--- sprint_kanban/view/sprint_kanban_view.xml 1970-01-01 00:00:00 +0000
194+++ sprint_kanban/view/sprint_kanban_view.xml 2012-11-07 13:51:27 +0000
195@@ -0,0 +1,200 @@
196+<?xml version="1.0" encoding="UTF-8"?>
197+<openerp>
198+ <data>
199+
200+ <record id="act_project_project_2_project_task_all" model="ir.actions.act_window">
201+ <field name="res_model">project.task</field>
202+ <field name="view_type">form</field>
203+ <field name="name">Tasks</field>
204+ <field name="view_mode">kanban,tree,form</field>
205+ <field name="context">{'search_default_project_id': [active_id], 'default_project_id': active_id}</field>
206+ </record>
207+
208+
209+ <!-- +++++++++++ view in Tree +++++++++++++++++++++++++++ -->
210+ <record model="ir.ui.view" id="sprint_kanban_tree_view">
211+ <field name="name">sprint.kanban.tree</field>
212+ <field name="model">sprint.kanban</field>
213+ <field name="type">tree</field>
214+ <field name="arch" type="xml">
215+ <tree string="Sprint Kanban Tree">
216+ <field name="name" />
217+ <field name="project_id" />
218+ <field name="description" />
219+ <field name="datestart" />
220+ <field name="dateend" />
221+ </tree>
222+ </field>
223+ </record>
224+
225+ <!-- +++++++++++ view in Form +++++++++++++++++++++++++++ -->
226+
227+ <record model="ir.ui.view" id="sprint_kanban_form_view">
228+ <field name="name">sprint.kanban.form</field>
229+ <field name="model">sprint.kanban</field>
230+ <field name="type">form</field>
231+ <field name="arch" type="xml">
232+ <form string ="Sprint Kanban Form" version="7.0">
233+ <header>
234+
235+ <button name="set_open" string="Initialize" type="object" states="draft" />
236+ <button name="set_done" string="Done" type="object" states="open,pending" />
237+ <button name="set_open" string="Re-Open Sprint" type="object" states="cancelled,close" />
238+ <button name="set_pending" string="Pending" type="object" states="open" />
239+ <button name="set_cancel" string="Cancel" type="object" states="open,pending" />
240+ <field name="state" widget="statusbar" statusbar_visible="open,close,cancelled,pending,done" statusbar_colors='{"pending":"blue"}' />
241+ </header>
242+
243+ <sheet string="Project">
244+ <label for="name" class="oe_edit_only" />
245+ <h1><field name="name" /></h1>
246+ <group>
247+ <group>
248+ <field name="project_id" />
249+ </group>
250+ <group>
251+ <field name="datestart" />
252+ <field name="dateend" />
253+ </group>
254+ </group>
255+ <group>
256+ <field name="description" />
257+ </group>
258+ <div class="oe_right oe_button_box" name="buttons">
259+
260+ <div class="oe_right oe_button_box" name="buttons">
261+ <button name="%(act_project_project_2_project_task_all)d" string="Tasks" type="action" />
262+ <button name="%(base.action_attachment)d" string="Documents" type="action" />
263+ </div>
264+ </div>
265+ </sheet>
266+
267+ <div class="oe_chatter">
268+ <field name="message_ids" widget="mail_thread" />
269+ <field name="message_follower_ids" widget="mail_followers" />
270+ </div>
271+ </form>
272+ </field>
273+ </record>
274+ <!-- +++++++++++ view in Kanban +++++++++++++++++++++++++++ -->
275+
276+ <record model="ir.ui.view" id="view_sprint_kanban">
277+ <field name="name">sprint.kanban.kanban</field>
278+ <field name="model">sprint.kanban</field>
279+ <field name="arch" type="xml">
280+
281+ <kanban version="7.0" class="oe_background_grey">
282+
283+ <field name="name" />
284+ <field name="state" />
285+ <field name="project_id" />
286+ <field name="color" />
287+ <field name="members" />
288+ <field name="user_id" />
289+ <field name="description" />
290+ <field name="priority" />
291+ <field name="kanban_state" />
292+
293+
294+ <templates>
295+ <t t-name="kanban-box">
296+ <div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_project oe_kanban_global_click">
297+ <div class="oe_dropdown_toggle oe_dropdown_kanban">
298+ <span class="oe_e">í</span>
299+ <ul class="oe_dropdown_menu">
300+
301+ <t t-if="widget.view.is_action_enabled('edit')"><li><a type="edit">Edit...</a> </li></t>
302+ <t t-if="widget.view.is_action_enabled('delete')"><li><a type="delete">Delete</a></li></t>
303+
304+ <li><ul class="oe_kanban_colorpicker" data-field="color" /></li>
305+ </ul>
306+
307+ </div>
308+ <div class="oe_kanban_content">
309+ <h4> <field name="name" /> </h4>
310+ <div class="oe_kanban_project_list">
311+ <field name="project_id" />
312+ </div>
313+ <div class="oe_kanban_project_list">
314+ </div>
315+
316+
317+ <div class="oe_kanban_bottom_right">
318+ <a t-if="record.kanban_state.raw_value === 'normal'" type="object" string="In Progress" name="set_kanban_state_done" class="oe_kanban_status" />
319+ <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" />
320+ <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" />
321+ <a t-if="record.priority.raw_value == 1" type="object" string="Priority" name="set_normal_priority" class="oe_e oe_star_on">7</a>
322+ <a t-if="record.priority.raw_value != 1" type="object" string="Priority" name="set_high_priority" class="oe_e oe_star_off">7</a>
323+ <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" />
324+ </div>
325+
326+ <div class="oe_kanban_footer_left">
327+
328+ <span t-if="record.datestart.raw_value">
329+ <span class="oe_e">N</span>
330+ <field name="datestart" />
331+ </span>
332+
333+ <span>
334+ <span class="oe_e">R</span>
335+ <t t-if="record.dateend.raw_value" />
336+ <field name="dateend" />
337+ </span>
338+ </div>
339+ </div>
340+ </div>
341+ </t>
342+ </templates>
343+
344+ </kanban>
345+ </field>
346+ </record>
347+
348+
349+ <!-- +++++++++++ view in Form Inherit of Tasks Project +++++++++++++++++++++++++++ -->
350+
351+ <record model="ir.ui.view" id="inherit_tasks_sprint_kanban_form_view">
352+ <field name="name">inherit.tasks.sprint.kanban</field>
353+ <field name="model">project.task</field>
354+ <field name="type">form</field>
355+ <field name="inherit_id" ref="project.view_task_form2" />
356+ <field name="arch" type="xml">
357+ <xpath expr="//field[@name='categ_ids']" position="after">
358+ <field name="sprint_id" />
359+ </xpath>
360+ </field>
361+ </record>
362+
363+ <!--++++++++++++++++++++++++++Actions+++++++++++++++++++++++++++++++++++-->
364+
365+ <record id="action_view_task" model="ir.actions.act_window">
366+ <field name="name">Sprints</field>
367+ <field name="res_model">sprint.kanban</field>
368+ <field name="view_type">form</field>
369+ <field name="domain">[]</field>
370+ <field name="view_mode">kanban,tree,form</field>
371+ <field name="view_id" ref="view_sprint_kanban" />
372+ <field name="context">{}</field>
373+ <field name="help" type="html">
374+ <p class="oe_view_nocontent_create">Click to start a new Sprint.</p>
375+ </field>
376+ </record>
377+ <record id="open_view_task_list_kanban" model="ir.actions.act_window.view">
378+ <field name="sequence" eval="0" />
379+ <field name="view_mode">kanban</field>
380+ <field name="act_window_id" ref="action_view_task" />
381+ </record>
382+ <!--+++++++++++++++++++++++++++++ MENUS +++++++++++++++++++++++++++++++++++++++++-->
383+ <!-- submenus -->
384+ <menuitem id="sprint_kanban_menu" name="Sprint" parent="project.menu_project_management" action="action_view_task" sequence="5" />
385+ <record id="action_view_task_overpassed_draft" model="ir.actions.act_window">
386+ <field name="name">Overpassed Tasks</field>
387+ <field name="res_model">sprint.kanban</field>
388+ <field name="view_type">form</field>
389+ <field name="view_mode">tree,form,calendar,graph,kanban</field>
390+ <field name="domain">[('date_deadline','&lt;',time.strftime('%Y-%m-%d')),('state','in',('draft','pending','open'))]</field>
391+ <field name="filter" eval="True" />
392+
393+ </record>
394+ </data>
395+</openerp>
396
397=== added directory 'sprint_kanban/wizard'
398=== added file 'sprint_kanban/wizard/__init__.py'
399=== added directory 'sprint_kanban/workflow'
400=== added file 'sprint_kanban/workflow/workflow_sprint_kanban.xml'
401--- sprint_kanban/workflow/workflow_sprint_kanban.xml 1970-01-01 00:00:00 +0000
402+++ sprint_kanban/workflow/workflow_sprint_kanban.xml 2012-11-07 13:51:27 +0000
403@@ -0,0 +1,124 @@
404+<?xml version="1.0" ?>
405+<openerp>
406+ <data>
407+
408+ <!--*****************define wrokflow**********************-->
409+
410+ <record id="workflow_sprintsworkflow0" model="workflow">
411+ <field eval="1" name="active"/>
412+ <field name="model_id" ref="project.model_project_sprint"/>
413+ <field eval="&quot;&quot;&quot;sprints&quot;&quot;&quot;" name="name"/>
414+ </record>
415+
416+ <!--*************************** Workflow Activitys *******************************-->
417+
418+ <record id="workflow_node_sprintbydelegate0" model="workflow.node">
419+ <field name="menu_id" ref="project.menu_action_view_sprint"/>
420+ <field name="model_id" ref="project.model_project_sprint"/>
421+ <field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
422+ <field eval="&quot;&quot;&quot;sprint by delegate&quot;&quot;&quot;" name="name"/>
423+ <field eval="&quot;&quot;&quot;Delegate your sprint to the other user&quot;&quot;&quot;" name="note"/>
424+ <field name="workflow_id" ref="workflow_workflow_sprintsworkflow0"/>
425+ <field eval="&quot;&quot;&quot;object.state in ('open', 'pending')&quot;&quot;&quot;" name="model_states"/>
426+ <field eval="1" name="flow_start"/>
427+ </record>
428+
429+ <record id="workflow_node_draftsprint0" model="workflow.node">
430+ <field name="menu_id" ref="project.menu_action_view_sprint"/>
431+ <field name="model_id" ref="project.model_project_sprint"/>
432+ <field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
433+ <field eval="&quot;&quot;&quot;Draft sprint&quot;&quot;&quot;" name="name"/>
434+ <field eval="&quot;&quot;&quot;Define the Requirements and Set Planned Hours.&quot;&quot;&quot;" name="note"/>
435+ <field name="workflow_id" ref="workflow_workflow_sprintsworkflow0"/>
436+ <field eval="&quot;&quot;&quot;object.state=='draft'&quot;&quot;&quot;" name="model_states"/>
437+ <field eval="0" name="flow_start"/>
438+ </record>
439+
440+ <record id="workflow_node_opensprint0" model="workflow.node">
441+ <field name="menu_id" ref="project.menu_action_view_sprint"/>
442+ <field name="model_id" ref="project.model_project_sprint"/>
443+ <field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
444+ <field eval="&quot;&quot;&quot;Open sprint&quot;&quot;&quot;" name="name"/>
445+ <field eval="&quot;&quot;&quot;Encode your working hours.&quot;&quot;&quot;" name="note"/>
446+ <field name="workflow_id" ref="workflow_workflow_sprintsworkflow0"/>
447+ <field eval="&quot;&quot;&quot;object.state=='open'&quot;&quot;&quot;" name="model_states"/>
448+ <field eval="0" name="flow_start"/>
449+ </record>
450+
451+ <record id="workflow_node_donesprint0" model="workflow.node">
452+ <field name="menu_id" ref="project.menu_action_view_sprint"/>
453+ <field name="model_id" ref="project.model_project_sprint"/>
454+ <field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
455+ <field eval="&quot;&quot;&quot;Done sprint&quot;&quot;&quot;" name="name"/>
456+ <field eval="&quot;&quot;&quot;sprint is Completed&quot;&quot;&quot;" name="note"/>
457+ <field name="workflow_id" ref="workflow_workflow_sprintsworkflow0"/>
458+ <field eval="&quot;&quot;&quot;object.state=='done'&quot;&quot;&quot;" name="model_states"/>
459+ <field eval="0" name="flow_start"/>
460+ </record>
461+
462+<!--*************************** Workflow Transitions *******************************-->
463+
464+ <record id="workflow_transition_delegate0" model="workflow.transition">
465+ <field eval="[(6,0,[])]" name="transition_ids"/>
466+ <field eval="&quot;&quot;&quot;Delegate&quot;&quot;&quot;" name="name"/>
467+ <field eval="&quot;&quot;&quot;Delegates sprints to the other user&quot;&quot;&quot;" name="note"/>
468+ <field model="workflow.node" name="target_node_id" ref="workflow_node_draftsprint0"/>
469+ <field model="workflow.node" name="source_node_id" ref="workflow_node_sprintbydelegate0"/>
470+ </record>
471+
472+ <record id="workflow_transition_draftopensprint0" model="workflow.transition">
473+ <field eval="[(6,0,[])]" name="transition_ids"/>
474+ <field eval="&quot;&quot;&quot;Draft Open sprint&quot;&quot;&quot;" name="name"/>
475+ <field eval="&quot;&quot;&quot;From draft state, it will come into the open state.&quot;&quot;&quot;" name="note"/>
476+ <field model="workflow.node" name="target_node_id" ref="workflow_node_opensprint0"/>
477+ <field model="workflow.node" name="source_node_id" ref="workflow_node_draftsprint0"/>
478+ </record>
479+
480+ <record id="workflow_transition_opendonesprint0" model="workflow.transition">
481+ <field eval="[(6,0,[])]" name="transition_ids"/>
482+ <field eval="&quot;&quot;&quot;Open Done sprint&quot;&quot;&quot;" name="name"/>
483+ <field eval="&quot;&quot;&quot;When sprint is completed, it will come into the done state.&quot;&quot;&quot;" name="note"/>
484+ <field model="workflow.node" name="target_node_id" ref="workflow_node_donesprint0"/>
485+ <field model="workflow.node" name="source_node_id" ref="workflow_node_opensprint0"/>
486+ </record>
487+
488+
489+<!--*************************** Workflow Actions *******************************-->
490+
491+ <record id="workflow_transition_action_draftopensprint0" model="workflow.transition.action">
492+ <field eval="&quot;&quot;&quot;do_open&quot;&quot;&quot;" name="action"/>
493+ <field eval="&quot;&quot;&quot;object&quot;&quot;&quot;" name="state"/>
494+ <field eval="&quot;&quot;&quot;Open&quot;&quot;&quot;" name="name"/>
495+ <field name="transition_id" ref="workflow_transition_draftopensprint0"/>
496+ </record>
497+
498+ <record id="workflow_transition_action_draftcancelsprint0" model="workflow.transition.action">
499+ <field eval="&quot;&quot;&quot;do_cancel&quot;&quot;&quot;" name="action"/>
500+ <field eval="&quot;&quot;&quot;object&quot;&quot;&quot;" name="state"/>
501+ <field eval="&quot;&quot;&quot;Cancel&quot;&quot;&quot;" name="name"/>
502+ <field name="transition_id" ref="workflow_transition_draftopensprint0"/>
503+ </record>
504+
505+ <record id="workflow_transition_action_openpendingsprint0" model="workflow.transition.action">
506+ <field eval="&quot;&quot;&quot;do_pending&quot;&quot;&quot;" name="action"/>
507+ <field eval="&quot;&quot;&quot;object&quot;&quot;&quot;" name="state"/>
508+ <field eval="&quot;&quot;&quot;Set pending&quot;&quot;&quot;" name="name"/>
509+ <field name="transition_id" ref="workflow_transition_opendonesprint0"/>
510+ </record>
511+
512+ <record id="workflow_transition_action_opendraftsprint0" model="workflow.transition.action">
513+ <field eval="&quot;&quot;&quot;do_draft&quot;&quot;&quot;" name="action"/>
514+ <field eval="&quot;&quot;&quot;object&quot;&quot;&quot;" name="state"/>
515+ <field eval="&quot;&quot;&quot;Draft&quot;&quot;&quot;" name="name"/>
516+ <field name="transition_id" ref="workflow_transition_opendonesprint0"/>
517+ </record>
518+
519+ <record id="workflow_transition_action_opencancelsprint0" model="workflow.transition.action">
520+ <field eval="&quot;&quot;&quot;do_cancel&quot;&quot;&quot;" name="action"/>
521+ <field eval="&quot;&quot;&quot;object&quot;&quot;&quot;" name="state"/>
522+ <field eval="&quot;&quot;&quot;Cancel&quot;&quot;&quot;" name="name"/>
523+ <field name="transition_id" ref="workflow_transition_opendonesprint0"/>
524+ </record>
525+
526+ </data>
527+</openerp>