Merge lp:~luistp13/addons-vauxoo/luis_sprint_kanban into lp:addons-vauxoo
- luis_sprint_kanban
- Merge into 6.0-trunk
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 |
Related bugs: |
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.
Commit message
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 | # |
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','<',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=""""sprints"""" 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=""""state"""" name="kind"/> |
422 | + <field eval=""""sprint by delegate"""" name="name"/> |
423 | + <field eval=""""Delegate your sprint to the other user"""" name="note"/> |
424 | + <field name="workflow_id" ref="workflow_workflow_sprintsworkflow0"/> |
425 | + <field eval=""""object.state in ('open', 'pending')"""" 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=""""state"""" name="kind"/> |
433 | + <field eval=""""Draft sprint"""" name="name"/> |
434 | + <field eval=""""Define the Requirements and Set Planned Hours."""" name="note"/> |
435 | + <field name="workflow_id" ref="workflow_workflow_sprintsworkflow0"/> |
436 | + <field eval=""""object.state=='draft'"""" 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=""""state"""" name="kind"/> |
444 | + <field eval=""""Open sprint"""" name="name"/> |
445 | + <field eval=""""Encode your working hours."""" name="note"/> |
446 | + <field name="workflow_id" ref="workflow_workflow_sprintsworkflow0"/> |
447 | + <field eval=""""object.state=='open'"""" 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=""""state"""" name="kind"/> |
455 | + <field eval=""""Done sprint"""" name="name"/> |
456 | + <field eval=""""sprint is Completed"""" name="note"/> |
457 | + <field name="workflow_id" ref="workflow_workflow_sprintsworkflow0"/> |
458 | + <field eval=""""object.state=='done'"""" 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=""""Delegate"""" name="name"/> |
467 | + <field eval=""""Delegates sprints to the other user"""" 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=""""Draft Open sprint"""" name="name"/> |
475 | + <field eval=""""From draft state, it will come into the open state."""" 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=""""Open Done sprint"""" name="name"/> |
483 | + <field eval=""""When sprint is completed, it will come into the done state."""" 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=""""do_open"""" name="action"/> |
493 | + <field eval=""""object"""" name="state"/> |
494 | + <field eval=""""Open"""" 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=""""do_cancel"""" name="action"/> |
500 | + <field eval=""""object"""" name="state"/> |
501 | + <field eval=""""Cancel"""" 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=""""do_pending"""" name="action"/> |
507 | + <field eval=""""object"""" name="state"/> |
508 | + <field eval=""""Set pending"""" 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=""""do_draft"""" name="action"/> |
514 | + <field eval=""""object"""" name="state"/> |
515 | + <field eval=""""Draft"""" 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=""""do_cancel"""" name="action"/> |
521 | + <field eval=""""object"""" name="state"/> |
522 | + <field eval=""""Cancel"""" name="name"/> |
523 | + <field name="transition_id" ref="workflow_transition_opendonesprint0"/> |
524 | + </record> |
525 | + |
526 | + </data> |
527 | +</openerp> |
Al intentar instalar el módulo sprint_kanban, explota.