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