[IMP] Scrum: meetings default filtering should be current day, the list should be...
[odoo/odoo.git] / addons / scrum / scrum_view.xml
1 <?xml version="1.0" encoding="utf-8"?>
2 <openerp>
3     <data>
4
5         <menuitem id="menu_scrum"
6             name="Scrum"
7             parent="base.menu_main_pm"/>
8
9         <!-- Scrum Project -->
10
11         <record id="view_project_project_form" model="ir.ui.view">
12             <field name="name">project.project.form</field>
13             <field name="model">project.project</field>
14             <field name="type">form</field>
15             <field name="inherit_id" ref="project.edit_project"/>
16             <field name="arch" type="xml">
17                 <group name="misc" position="after">
18                     <group col="2" colspan="2">
19                         <separator string="Scrum Data" colspan="4"/>
20                         <field name="product_owner_id" required="1" select="1"/>
21                         <field name="sprint_size"/>
22                     </group>
23                 </group>
24             </field>
25         </record>
26
27         <!--
28        Product backlog
29        -->
30
31         <record id="view_scrum_product_backlog_tree" model="ir.ui.view">
32             <field name="name">scrum.product.backlog.tree</field>
33             <field name="model">scrum.product.backlog</field>
34             <field name="type">tree</field>
35             <field name="arch" type="xml">
36                 <tree string="Product Backlog">
37                     <field name="sequence" invisible="1"/>
38                     <field name="name"/>
39                     <field name="project_id"/>
40                     <field name="sprint_id"/>
41                     <field name="user_id"/>
42                     <field name="progress" widget="progressbar"/>
43                     <field name="effective_hours" sum="Effective hours" widget="float_time"/>
44                     <field name="planned_hours" sum="Planned hours" widget="float_time"/>
45                     <field name="expected_hours" sum="Expected hours" widget="float_time"/>
46                     <field name="state"/>
47                     <button type="object" string="Open" name="button_open" states="draft,pending" icon="gtk-jump-to"/>
48                     <button type="action" string="Convert to Task" name="%(action_scrum_backlog_to_task)d" states="pending" icon="gtk-execute"/>
49                     <button type="object" string="Pending" name="button_pending" states="open" icon="gtk-media-pause"/>
50                     <button type="object" string="Close" name="button_close" states="open,pending" icon="gtk-jump-to"/>
51                     <button type="object" string="Set to Draft" name="button_draft" states="cancel,done" icon="gtk-convert"/>
52                     <button type="object" string="Cancel" name="button_cancel" states="open,pending" icon="gtk-convert"/>
53                 </tree>
54             </field>
55         </record>
56
57         <record id="view_scrum_product_backlog_form" model="ir.ui.view">
58             <field name="name">scrum.product.backlog.form</field>
59             <field name="model">scrum.product.backlog</field>
60             <field name="type">form</field>
61             <field name="arch" type="xml">
62                 <form string="Product backlog">
63                     <group colspan="4" col="6">
64                         <field name="name" select="1"/>
65                         <field name="project_id" select="1"/>
66                         <field domain="[('project_id','=',project_id)]" name="sprint_id" select="1"/>
67                         <field name="user_id" select="1"/>
68                         <field name="sequence"/>
69                                     <field name="date"/>
70                         <field name="active" select="1"/>
71                         <group colspan="6" col="8">
72                             <field name="effective_hours" widget="float_time"/>
73                             <field name="planned_hours" widget="float_time"/>
74                             <field name="expected_hours" widget="float_time"/>
75                             <field name="progress" widget="progressbar"/>
76                         </group>
77                     </group>
78                     <notebook colspan="4">
79                         <page string="Feature Description">
80                             <field colspan="4" name="note" nolabel="1"/>
81                         </page>
82                         <page string="Tasks">
83                             <field colspan="4" name="tasks_id" nolabel="1" widget="one2many_list" context="{'default_project_id':project_id, 'default_sprint_id':sprint_id, 'default_product_backlog_id':active_id}"/>
84                         </page>
85                     </notebook>
86                     <group col="8" colspan="4">
87                         <field name="state" select="1" readonly="1"/>
88                         <button type="object" string="Open" name="button_open" states="draft,pending" icon="gtk-jump-to"/>
89                         <button type="action" string="Convert to Task" name="%(action_scrum_backlog_to_task)d" states="pending" icon="gtk-execute"/>
90                         <button type="object" string="Pending" name="button_pending" states="open" icon="gtk-media-pause"/>
91                         <button type="object" string="Close" name="button_close" states="open,pending" icon="gtk-jump-to"/>
92                         <button type="object" string="Set to Draft" name="button_draft" states="cancel,done" icon="gtk-convert"/>
93                         <button type="object" string="Cancel" name="button_cancel" states="open,pending" icon="gtk-cancel"/>
94                     </group>
95                 </form>
96             </field>
97         </record>
98
99         <record model="ir.ui.view" id="view_scrum_product_backlog_search">
100             <field name="name">scrum.product.backlog.search</field>
101             <field name="model">scrum.product.backlog</field>
102             <field name="type">search</field>
103             <field name="arch" type="xml">
104                 <search string="Product Backlogs">
105                     <group col="10" colspan="4">
106                         <filter default="1"
107                             icon="terp-project"
108                             string="Current"
109                             domain="['|','&amp;',('sprint_id.date_start','&lt;=',time.strftime('%%Y-%%m-%%d')), ('sprint_id.date_stop','&gt;=',time.strftime('%%Y-%%m-%%d')), ('state','in',['draft','open'])]"
110                             help="Current Backlogs"/>
111                         <separator orientation="vertical"/>
112                         <filter icon="terp-project" string="Draft" domain="[('state','=','draft')]" help="Draft Backlogs"/>
113                         <filter icon="terp-project" string="Open" domain="[('state','=','open')]" help="Open Backlogs"/>
114                         <separator orientation="vertical"/>
115                         <field name="name"/>
116                         <field name="project_id" widget="selection"/>
117                         <field name="sprint_id" widget="selection">
118                                 <filter icon="terp-project"
119                                         string="Sprints"
120                                         domain="[('sprint_id.state','=','open')]"
121                                         help="Backlogs Assigned To Current Sprints"/>
122                                 <filter icon="terp-project"
123                                         string="Sprints"
124                                         domain="[('sprint_id','=',False)]"
125                                         help="Backlogs Not Assigned To Sprints."/>
126                         </field>
127                         <field name="user_id" widget="selection">
128                             <filter default="1"
129                                 icon="terp-project"
130                                 string="My Features"
131                                 domain="[('user_id','=',uid)]"
132                                 help="My Backlogs"/>
133                         </field>
134                     </group>
135                     <newline/>
136                     <group expand="1" string="Group By..." colspan="4" col="20">
137                         <filter string="Project" icon="terp-project" domain="[]" context="{'group_by':'project_id'}"/>
138                         <filter string="Sprint" icon="terp-project" domain="[]" context="{'group_by':'sprint_id'}"/>
139                         <filter string="Responsible" icon="terp-project" domain="[]" context="{'group_by':'user_id'}"/>
140                         <filter string="State" icon="terp-project" domain="[]" context="{'group_by':'state'}"/>
141                     </group>
142
143                 </search>
144             </field>
145         </record>
146
147         <record id="action_product_backlog_form" model="ir.actions.act_window">
148             <field name="name">Product Backlogs</field>
149             <field name="res_model">scrum.product.backlog</field>
150             <field name="view_type">form</field>
151             <field name="search_view_id" ref="view_scrum_product_backlog_search"/>
152         </record>
153         <menuitem
154             action="action_product_backlog_form"
155             id="menu_action_product_backlog_form"
156             sequence="20"
157             parent="menu_scrum"/>
158
159         <!--
160               Scrum Sprint
161        -->
162
163         <record id="view_scrum_sprint_tree" model="ir.ui.view">
164             <field name="name">scrum.sprint.tree</field>
165             <field name="model">scrum.sprint</field>
166             <field name="type">tree</field>
167             <field name="arch" type="xml">
168                 <tree string="Scrum Sprint">
169                     <field name="name"/>
170                     <field name="project_id"/>
171                     <field name="scrum_master_id"/>
172                     <field name="product_owner_id" invisible="1"/>
173                     <field name="date_start"/>
174                     <field name="progress" widget="progressbar"/>
175                     <field name="effective_hours" sum="Effective hours" widget="float_time"/>
176                     <field name="planned_hours" sum="Planned hours" widget="float_time"/>
177                     <field name="expected_hours" sum="Expected hours" widget="float_time"/>
178                     <field name="state"/>
179                     <button type="object" string="Open" name="button_open" states="draft,pending" icon="gtk-jump-to"/>
180                     <button type="object" string="Pending" name="button_pending" states="open" icon="gtk-media-pause"/>
181                     <button type="object" string="Close" name="button_close" states="open,pending" icon="gtk-jump-to"/>
182                     <button type="object" string="Set to Draft" name="button_draft" states="cancel,done" icon="gtk-convert"/>
183                 </tree>
184             </field>
185         </record>
186         <record id="view_scrum_sprint_form" model="ir.ui.view">
187             <field name="name">scrum.sprint.form</field>
188             <field name="model">scrum.sprint</field>
189             <field name="type">form</field>
190             <field name="arch" type="xml">
191                 <form string="Scrum Sprint">
192                     <field name="name" select="1"/>
193                     <field name="project_id" on_change="onchange_project_id(project_id)"/>
194                     <notebook colspan="4">
195                         <page string="Sprint Info">
196                             <group colspan="2" col="2">
197                                 <separator string="Owners" colspan="2"/>
198                                 <field name="product_owner_id"/>
199                                 <field name="scrum_master_id"/>
200                             </group>
201                             <group colspan="2" col="2">
202                                 <separator string="Dates" colspan="2"/>
203                                 <field name="date_start" select="1"/>
204                                 <field name="date_stop"/>
205                             </group>
206                             <group colspan="2" col="2">
207                                 <separator string="Planning" colspan="2"/>
208                                 <field name="planned_hours" widget="float_time"/>
209                                 <field name="expected_hours" widget="float_time"/>
210                                 <field name="effective_hours" widget="float_time"/>
211                                 <field name="progress" widget="progressbar"/>
212                             </group>
213                         </page>
214                         <page string="Daily Meetings">
215                             <field colspan="4" name="meeting_ids" nolabel="1" widget="one2many_list"/>
216                         </page>
217                         <page string="Review">
218                             <field colspan="4" name="review" nolabel="1"/>
219                         </page>
220                         <page string="Retrospective">
221                             <field colspan="4" name="retrospective" nolabel="1"/>
222                         </page>
223                     </notebook>
224                     <group col="6" colspan="4">
225                         <field name="state" readonly="1"/>
226                         <button type="object" string="Open" name="button_open" states="draft,pending" icon="gtk-jump-to"/>
227                         <button type="object" string="Pending" name="button_pending" states="open" icon="gtk-media-pause"/>
228                         <button type="object" string="Close" name="button_close" states="open,pending" icon="gtk-jump-to"/>
229                         <button type="object" string="Set to Draft" name="button_draft" states="cancel,done" icon="gtk-convert"/>
230                     </group>
231                 </form>
232             </field>
233         </record>
234
235         <record model="ir.ui.view" id="view_scrum_sprint_search">
236             <field name="name">scrum.sprint.search</field>
237             <field name="model">scrum.sprint</field>
238             <field name="type">search</field>
239             <field name="arch" type="xml">
240                 <search string="Sprints">
241                     <group col="10" colspan="4">
242                         <filter default="1" icon="terp-project" string="Current" domain="[('state','in',('draft','open'))]" help="Draft and open Sprints"/>
243                         <filter icon="terp-project" string="Draft" domain="[('state','=','draft')]" help="Draft Sprints"/>
244                         <filter icon="terp-project" string="Open" domain="[('state','=','open')]" help="Open Sprints"/>
245                         <separator orientation="vertical"/>
246                         <field name="name"/>
247                         <field name="project_id" widget="selection"/>
248                         <field name="scrum_master_id" widget="selection">
249                             <filter icon="gtk-execute" domain="[('scrum_master_id','=',uid)]"
250                                 default="1"
251                                 help="My Sprints"/>
252                         </field>
253                         <field name="date_start"/>
254                     </group>
255                     <newline/>
256                     <group expand="1" string="Group By..." colspan="4" col="20">
257                         <filter string="Project" icon="terp-project" domain="[]" context="{'group_by':'project_id'}"/>
258                         <filter string="Masters" icon="terp-project" domain="[]"  context="{'group_by':'scrum_master_id'}"/>
259                         <filter string="Product owner" icon="terp-project" domain="[]" context="{'group_by':'product_owner_id'}"/>
260                         <filter string="State" icon="terp-project" domain="[]" context="{'group_by':'state'}"/>
261                         <separator orientation="vertical"/>
262                         <filter string="Start Date" icon="terp-project" domain="[]" context="{'group_by':'date_start'}"/>
263                     </group>
264                 </search>
265             </field>
266         </record>
267
268         <record id="action_sprint_all_tree" model="ir.actions.act_window">
269             <field name="name">Sprints</field>
270             <field name="res_model">scrum.sprint</field>
271             <field name="view_type">form</field>
272             <field name="view_mode">tree,form</field>
273             <field name="view_id" ref="view_scrum_sprint_tree"/>
274             <field name="search_view_id" ref="view_scrum_sprint_search"/>
275         </record>
276         <menuitem
277             sequence="10"
278             action="action_sprint_all_tree" id="menu_action_sprint_all_tree" parent="menu_scrum"/>
279
280         <!--
281               Daily Meeting
282        -->
283
284         <record id="view_scrum_meeting_tree" model="ir.ui.view">
285             <field name="name">scrum.meeting.tree</field>
286             <field name="model">scrum.meeting</field>
287             <field name="type">tree</field>
288             <field name="arch" type="xml">
289                 <tree string="Scrum Sprint">
290                     <field name="date"/>
291                     <field name="name"/>
292                     <field name="sprint_id"/>
293                 </tree>
294             </field>
295         </record>
296         <record id="view_scrum_meeting_form" model="ir.ui.view">
297             <field name="name">Scrum Meeting</field>
298             <field name="model">scrum.meeting</field>
299             <field name="type">form</field>
300             <field name="arch" type="xml">
301                 <form string="Scrum Sprint">
302                     <group colspan="4" col="6">
303                         <field name="name" select="1"/>
304                         <field name="date"/>
305                         <field name="sprint_id"/>
306                     </group>
307                     <notebook colspan="4">
308                         <page string="Scrum Meeting">
309                             <separator colspan="4" string="What have you accomplished since yesterday ?"/>
310                             <field colspan="4" name="question_yesterday" nolabel="1"/>
311                             <separator colspan="4" string="What are you working on today ?"/>
312                             <field colspan="4" name="question_today" nolabel="1"/>
313                             <separator colspan="4" string="Is there anything blocking you ?"/>
314                             <field colspan="4" name="question_blocks" nolabel="1"/>
315                         </page>
316                         <page string="Optional Info">
317                             <separator colspan="4" string="Are your Sprint Backlog estimate accurate ?"/>
318                             <field colspan="4" name="question_backlog" nolabel="1"/>
319                         </page>
320                         <page string="Links">
321                             <separator colspan="4" string="Tasks"/>
322                             <field colspan="4" name="task_ids" nolabel="1" domain="[('sprint_id','=',sprint_id)]"/>
323                         </page>
324                     </notebook>
325                 </form>
326             </field>
327         </record>
328
329         <record id="view_scrum_meeting_search" model="ir.ui.view">
330             <field name="name">scrum.meeting.search</field>
331             <field name="model">scrum.meeting</field>
332             <field name="type">search</field>
333             <field name="arch" type="xml">
334                 <search string="Scrum Sprint">
335                     <group col="10" colspan="4">
336                         <filter name="scrum_daily" icon="terp-project" string="Daily" domain="[('date','=',time.strftime('%%Y%%m%%d'))]" help="Daily Meetings"/>
337                         <separator orientation="vertical"/>
338                         <field name="name"/>
339                         <field name="sprint_id">
340                             <filter icon="terp-project" string="Current" domain="[('sprint_id.state','in',('draft','open'))]" help="Current Sprints" default="1"/>
341                         </field>
342                         <field name="project_id" widget="selection"/>
343                         <field name="date"/>
344                     </group>
345                     <newline/>
346                     <group expand="1" string="Group By..." colspan="4" col="20">
347                         <filter string="Sprint" icon="terp-project" domain="[]" context="{'group_by':'sprint_id'}"/>
348                         <filter string="Date" icon="terp-project" domain="[]" context="{'group_by':'date'}"/>
349                     </group>
350                 </search>
351             </field>
352         </record>
353
354         <record id="action_meeting_form" model="ir.actions.act_window">
355             <field name="name">Scrum Meetings</field>
356             <field name="res_model">scrum.meeting</field>
357             <field name="view_type">form</field>
358             <field name="view_mode">tree,form</field>
359             <field name="context">{'search_default_scrum_daily':1}</field>
360             <field name="search_view_id" ref="view_scrum_meeting_search"/>
361         </record>
362         <menuitem sequence="30"
363             action="action_meeting_form" id="menu_action_meeting_form" parent="menu_scrum"/>
364
365         <!--
366        Clicks on a sprint:
367        -->
368
369         <record id="action_sprint_task_open" model="ir.actions.act_window">
370             <field name="res_model">project.task</field>
371             <field name="name">View sprint Tasks</field>
372             <field name="view_type">form</field>
373             <field name="view_mode">tree,form</field>
374             <field name="domain">[('product_backlog_id', '=', active_id)]</field>
375         </record>
376         <record id="ir_scrum_sprint_open_task" model="ir.values">
377             <field eval=" 'tree_but_open'" name="key2"/>
378             <field eval="'scrum.sprint'" name="model"/>
379             <field name="name">View sprint tasks</field>
380             <field eval="'ir.actions.act_window,'+str(action_sprint_task_open)" name="value"/>
381             <field eval="True" name="object"/>
382         </record>
383
384         <record id="action_sprint_backlog_open" model="ir.actions.act_window">
385             <field name="res_model">scrum.product.backlog</field>
386             <field name="name">View sprint backlog</field>
387             <field name="view_type">form</field>
388             <field name="view_mode">tree,form</field>
389             <field name="domain">[('sprint_id', '=', active_id)]</field>
390         </record>
391         <record id="ir_scrum_sprint_open_sprint" model="ir.values">
392             <field eval=" 'tree_but_open'" name="key2"/>
393             <field eval="'scrum.sprint'" name="model"/>
394             <field name="name">View sprint backlog</field>
395             <field eval="'ir.actions.act_window,'+str(action_sprint_backlog_open)" name="value"/>
396             <field eval="True" name="object"/>
397         </record>
398
399         <!--
400        Clicks on a project
401        -->
402
403         <record id="dblc_proj" model="ir.actions.act_window">
404             <field name="res_model">scrum.product.backlog</field>
405             <field name="name">View project's backlog</field>
406             <field name="view_type">form</field>
407             <field name="view_mode">tree,form</field>
408             <field name="domain">[('project_id', 'child_of', [active_id])]</field>
409         </record>
410         <record id="ir_scrum_project_backlog" model="ir.values">
411             <field eval=" 'tree_but_open'" name="key2"/>
412             <field eval="'scrum.project'" name="model"/>
413             <field name="name">View project's backlog</field>
414             <field eval="'ir.actions.act_window,'+str(dblc_proj)" name="value"/>
415             <field eval="True" name="object"/>
416         </record>
417         <record id="dblc_proj2" model="ir.actions.act_window">
418             <field name="res_model">project.task</field>
419             <field name="name">View project's tasks</field>
420             <field name="view_type">form</field>
421             <field name="view_mode">tree,form</field>
422             <field name="domain">[('project_id', 'child_of', [active_id])]</field>
423         </record>
424         <record id="ir_scrum_project_task" model="ir.values">
425             <field eval=" 'tree_but_open'" name="key2"/>
426             <field eval="'scrum.project'" name="model"/>
427             <field name="name">View project's tasks</field>
428             <field eval="'ir.actions.act_window,'+str(dblc_proj2)" name="value"/>
429             <field eval="True" name="object"/>
430         </record>
431
432         <!--
433         Tasks
434         -->
435
436         <record id="view_task_tree2" model="ir.ui.view">
437             <field name="name">project.task.tree.scrum</field>
438             <field name="model">project.task</field>
439             <field name="type">tree</field>
440             <field name="inherit_id" ref="project.view_task_tree2"/>
441             <field name="arch" type="xml">
442                 <field name="user_id" position="after">
443                     <field name="sprint_id" invisible="context.get('sprint_invisible',True)"/>
444                     <field name="product_backlog_id" invisible="1"/>
445                 </field>
446             </field>
447         </record>
448
449         <record id="view_task_form2" model="ir.ui.view">
450             <field name="name">project.task.scrum.form</field>
451             <field name="model">project.task</field>
452             <field name="type">form</field>
453             <field name="inherit_id" ref="project.view_task_form2"/>
454             <field name="arch" type="xml">
455                 <xpath expr="/form/group/field[@name='progress']" position="after">
456                     <field domain="[('project_id','=',project_id),]" name="product_backlog_id" select="1"/>
457                 </xpath>
458             </field>
459         </record>
460
461         <record id="view_task_form3" model="ir.ui.view">
462             <field name="name">project.task.scrum.form2</field>
463             <field name="model">project.task</field>
464             <field name="type">form</field>
465             <field name="inherit_id" ref="project.view_task_form2"/>
466             <field name="arch" type="xml">
467                 <xpath expr="/form/notebook/page[@string='Extra Info']/group/field[@name='sequence']" position="after">
468                     <field name="sprint_id" />
469                 </xpath>
470             </field>
471         </record>
472
473         <record id="view_task_search_form2" model="ir.ui.view">
474             <field name="name">project.task.scrum.search</field>
475             <field name="model">project.task</field>
476             <field name="type">search</field>
477             <field name="inherit_id" ref="project.view_task_search_form"/>
478             <field name="arch" type="xml">
479                 <field name="project_id" position="after">
480                     <field name="sprint_id" widget="selection" context="{'sprint_invisible':False}">
481                         <filter icon="terp-project" string="Current" context="{'sprint_invisible':False}" domain="[('sprint_id.state','in',('draft','open'))]" help="Current Sprints"/>
482                     </field>
483                 </field>
484             </field>
485         </record>
486
487         <record id="view_task_search_form3" model="ir.ui.view">
488             <field name="name">project.task.scrum.search</field>
489             <field name="model">project.task</field>
490             <field name="type">search</field>
491             <field name="inherit_id" ref="project.view_task_search_form"/>
492             <field name="arch" type="xml">
493                 <xpath expr="/search/group[@string='Group By...']/filter[@string='End Date']" position="after">
494                     <filter string="Sprint" icon="terp-project" domain="[]" context="{'group_by':'sprint_id'}"/>
495                     <filter string="Backlog" icon="terp-project" domain="[]" context="{'group_by':'product_backlog_id'}"/>
496                     <separator orientation="vertical"/>
497                 </xpath>
498             </field>
499         </record>
500
501         <act_window
502             domain="[('sprint_id', '=', active_id)]"
503             id="act_scrum_sprint_2_product_backlog"
504             name="Backlogs"
505             res_model="scrum.product.backlog"
506             src_model="scrum.sprint"
507             view_mode="tree,form"
508             view_type="form"/>
509
510         <act_window
511             domain="[('sprint_id', '=', active_id)]"
512             id="act_scrum_sprint_2_project_task"
513             name="Tasks"
514             res_model="project.task"
515             src_model="scrum.sprint"
516             view_mode="tree,form"
517             view_type="form"/>
518
519
520     </data>
521 </openerp>