[IMP] Scrum views

bzr revid: fp@tinyerp.com-20100223073848-gvv82ngbndzepf0a
This commit is contained in:
Fabien Pinckaers 2010-02-23 08:38:48 +01:00
parent b6a1b9cde3
commit 97d5972051
8 changed files with 175 additions and 252 deletions

View File

@ -23,14 +23,22 @@
</group>
<notebook colspan="4">
<page string="Administration">
<field name="warn_manager"/>
<field name="company_id" select="1" groups="base.group_multi_company" widget="selection"/>
<field name="priority"/>
<field name="resource_calendar_id"/>
<field name="active" select="2"/>
<newline/>
<field name="planned_hours" widget="float_time"/>
<field name="effective_hours" widget="float_time"/>
<group col="2" colspan="2">
<separator colspan="2" string="Scheduling"/>
<field name="resource_calendar_id"/>
<field name="priority"/>
<field name="active" select="2"/>
</group>
<group col="2" colspan="2">
<separator colspan="2" string="Performance"/>
<field name="planned_hours" widget="float_time"/>
<field name="effective_hours" widget="float_time"/>
</group>
<group col="2" colspan="2" name="misc">
<separator colspan="2" string="Miscelleanous"/>
<field name="company_id" select="1" groups="base.group_multi_company" widget="selection"/>
<field name="warn_manager"/>
</group>
<newline/>
<separator colspan="4" string="Project's members"/>
@ -411,6 +419,7 @@
<filter domain="[('user_id','=',False)]" help="Unassigned Tasks" icon="gtk-execute" separator="1"/>
</field>
</group>
<newline/>
<group expand="1" string="Group By..." colspan="4" col="20">
<filter string="Users" icon="terp-project" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Project" icon="terp-project" domain="[]" context="{'group_by':'project_id'}"/>

View File

@ -90,10 +90,8 @@
<field name="inherit_id" ref="project.view_task_form2" />
<field name="arch" type="xml">
<field name="progress" position="after">
<newline/>
<field name="context_id" select="2" widget="selection" groups="project_gtd.group_project_getting"/>
<field name="timebox_id" select="1" groups="project_gtd.group_project_getting"/>
<newline/>
</field>
</field>
</record>

View File

@ -26,31 +26,16 @@ from osv import fields, osv, orm
from mx import DateTime
import re
class scrum_team(osv.osv):
_name = 'scrum.team'
_description = 'Scrum Team'
_columns = {
'name' : fields.char('Team Name', size=64),
'users_id' : fields.many2many('res.users', 'scrum_team_users_rel', 'team_id','user_id', 'Users'),
}
scrum_team()
class scrum_project(osv.osv):
_name = 'scrum.project'
_inherit = 'project.project'
_table = 'project_project'
_description = 'Scrum Project'
_columns = {
'product_owner_id': fields.many2one('res.users', 'Product Owner'),
'tasks': fields.one2many('scrum.task', 'project_id', 'Scrum Tasks'),
'sprint_size': fields.integer('Sprint Days'),
'scrum': fields.integer('Is Scrum'),
'parent_id': fields.many2one('scrum.project', 'Parent project'),
'scrum': fields.integer('Is a Scrum Project'),
}
_defaults = {
'product_owner_id': lambda self,cr,uid,context={}: uid,
'warn_manager': lambda *a: 1,
'sprint_size': lambda *a: 14,
'sprint_size': lambda *a: 15,
'scrum': lambda *a: 1
}
scrum_project()
@ -88,10 +73,10 @@ class scrum_sprint(osv.osv):
'name' : fields.char('Sprint Name', required=True, size=64),
'date_start': fields.date('Starting Date', required=True),
'date_stop': fields.date('Ending Date', required=True),
'project_id': fields.many2one('scrum.project', 'Project', required=True, domain=[('scrum','=',1)]),
'project_id': fields.many2one('project.project', 'Project', required=True, domain=[('scrum','=',1)]),
'product_owner_id': fields.many2one('res.users', 'Product Owner', required=True),
'scrum_master_id': fields.many2one('res.users', 'Scrum Master', required=True),
'meetings_id': fields.one2many('scrum.meeting', 'sprint_id', 'Daily Scrum'),
'meeting_ids': fields.one2many('scrum.meeting', 'sprint_id', 'Daily Scrum'),
'review': fields.text('Sprint Review'),
'retrospective': fields.text('Sprint Retrospective'),
'backlog_ids': fields.one2many('scrum.product.backlog', 'sprint_id', 'Sprint Backlog'),
@ -107,9 +92,9 @@ class scrum_sprint(osv.osv):
def onchange_project_id(self, cr, uid, ids, project_id):
v = {}
if project_id:
proj = self.pool.get('scrum.project').browse(cr, uid, [project_id])[0]
v['product_owner_id']= proj.product_owner_id.id
v['scrum_master_id']= proj.manager.id
proj = self.pool.get('project.project').browse(cr, uid, [project_id])[0]
v['product_owner_id']= proj.product_owner_id and proj.product_owner_id.id or False
v['scrum_master_id']= proj.user_id and proj.user_id.id or False
v['date_stop'] = (DateTime.now() + DateTime.RelativeDateTime(days=int(proj.sprint_size or 14))).strftime('%Y-%m-%d')
return {'value':v}
@ -160,36 +145,27 @@ class scrum_product_backlog(osv.osv):
'name' : fields.char('Feature', size=64, required=True),
'note' : fields.text('Note'),
'active' : fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the product backlog without removing it."),
'project_id': fields.many2one('scrum.project', 'Scrum Project', required=True, domain=[('scrum','=',1)]),
'user_id': fields.many2one('res.users', 'User'),
'project_id': fields.many2one('project.project', 'Project', required=True, domain=[('scrum','=',1)]),
'user_id': fields.many2one('res.users', 'Responsible'),
'sprint_id': fields.many2one('scrum.sprint', 'Sprint'),
'sequence' : fields.integer('Sequence', help="Gives the sequence order when displaying a list of product backlog."),
'priority' : fields.selection([('4','Very Low'), ('3','Low'), ('2','Medium'), ('1','Urgent'), ('0','Very urgent')], 'Priority'),
'tasks_id': fields.one2many('scrum.task', 'product_backlog_id', 'Tasks Details'),
'state': fields.selection([('draft','Draft'),('open','Open'),('done','Done')], 'State', required=True),
'progress': fields.function(_calc_progress, method=True, string='Progress (0-100)'),
'tasks_id': fields.one2many('project.task', 'product_backlog_id', 'Tasks Details'),
'state': fields.selection([('draft','Draft'),('open','Open'),('done','Done'),('cancel','Cancelled')], 'State', required=True),
'progress': fields.function(_calc_progress, method=True, string='Progress'),
'effective_hours': fields.function(_calc_effective, method=True, string='Effective hours'),
'planned_hours': fields.function(_calc_planned, method=True, string='Planned Hours')
}
_defaults = {
'priority': lambda *a: '4',
'state': lambda *a: 'draft',
'active': lambda *a: 1
}
_order = "priority,sequence"
_order = "sequence"
scrum_product_backlog()
class scrum_task(osv.osv):
_name = 'scrum.task'
_inherit = 'project.task'
_table = 'project_task'
_description = 'Scrum Task'
_columns = {
'product_backlog_id': fields.many2one('scrum.product.backlog', 'Product Backlog'),
'scrum': fields.integer('Is Scrum'),
}
_defaults = {
'scrum': lambda *a: 1,
}
def onchange_backlog_id(self, cr, uid, backlog_id):
if not backlog_id:
@ -208,19 +184,13 @@ class scrum_meeting(osv.osv):
'question_yesterday': fields.text('Tasks since yesterday'),
'question_today': fields.text('Tasks for today'),
'question_blocks': fields.text('Blocks encountered'),
#
# Should be more formal.
#
'question_backlog': fields.text('Backlog Accurate'),
}
#
# Find the right sprint thanks to users and date
# TODO: Find the right sprint thanks to users and date
#
_defaults = {
'date' : lambda *a:time.strftime('%Y-%m-%d'),
}
scrum_meeting()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -2,9 +2,9 @@
<openerp>
<data noupdate="1">
<!-- Resource: scrum.project -->
<!-- Resource: project.project -->
<record id="scrum_project_1" model="scrum.project">
<record id="scrum_project_1" model="project.project">
<!-- FIXME !!! -->
<field name="tasks">[24, 25, 28, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 36, 38]</field>
<field model="res.users" name="manager" search="[('login','=','demo')]"/>
@ -24,10 +24,7 @@
<field name="state">open</field>
</record>
<!-- Resource: scrum.team -->
<!-- Resource: scrum.product.backlog -->
<!-- Resource: project.product.backlog -->
<record id="scrum_product_backlog_0" model="scrum.product.backlog">
<field name="priority">3</field>
@ -79,111 +76,111 @@
<field name="project_id" ref="scrum_project_1"/>
</record>
<!-- Resource: scrum.task -->
<!-- Resource: project.task -->
<record id="scrum_task_3" model="scrum.task">
<record id="scrum_task_3" model="project.task">
<field name="planned_hours">4.0</field>
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
<field model="scrum.project" name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="scrum_project_1"/>
<field name="name">Review all English Terms</field>
<field name="product_backlog_id" ref="scrum_product_backlog_3"/>
</record>
<record id="scrum_task_4" model="scrum.task">
<record id="scrum_task_4" model="project.task">
<field name="planned_hours">4.0</field>
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
<field model="scrum.project" name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="scrum_project_1"/>
<field name="name">Review all french terms</field>
<field name="product_backlog_id" ref="scrum_product_backlog_3"/>
</record>
<record id="scrum_task_5" model="scrum.task">
<record id="scrum_task_5" model="project.task">
<field name="planned_hours">24.0</field>
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
<field model="scrum.project" name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="scrum_project_1"/>
<field name="name">Analytic Accounting features</field>
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
</record>
<record id="scrum_task_6" model="scrum.task">
<record id="scrum_task_6" model="project.task">
<field name="planned_hours">6.0</field>
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
<field model="scrum.project" name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="scrum_project_1"/>
<field name="name">Test and improve automatic migration system</field>
<field name="product_backlog_id" ref="scrum_product_backlog_0"/>
</record>
<record id="scrum_task_7" model="scrum.task">
<record id="scrum_task_7" model="project.task">
<field name="planned_hours">24.0</field>
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
<field model="scrum.project" name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="scrum_project_1"/>
<field name="name">General accounting features</field>
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
</record>
<record id="scrum_task_8" model="scrum.task">
<record id="scrum_task_8" model="project.task">
<field name="planned_hours">24.0</field>
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
<field model="scrum.project" name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="scrum_project_1"/>
<field name="name">Accounting Budgets</field>
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
</record>
<record id="scrum_task_9" model="scrum.task">
<record id="scrum_task_9" model="project.task">
<field name="planned_hours">24.0</field>
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
<field model="scrum.project" name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="scrum_project_1"/>
<field name="description">Cash book, general ledger, accounts list, aged trial balance</field>
<field name="name">Accounting Report General</field>
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
</record>
<record id="scrum_task_10" model="scrum.task">
<record id="scrum_task_10" model="project.task">
<field name="planned_hours">7.0</field>
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
<field model="scrum.project" name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="scrum_project_1"/>
<field name="name">Accounting Report Budget</field>
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
</record>
<record id="scrum_task_11" model="scrum.task">
<record id="scrum_task_11" model="project.task">
<field name="planned_hours">8.0</field>
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
<field model="scrum.project" name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="scrum_project_1"/>
<field name="name">Accounting Report Analytic</field>
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
</record>
<record id="scrum_task_12" model="scrum.task">
<record id="scrum_task_12" model="project.task">
<field name="planned_hours">4.0</field>
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
<field model="scrum.project" name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="scrum_project_1"/>
<field name="name">Bugfix - memory leak</field>
<field name="product_backlog_id" ref="scrum_product_backlog_4"/>
</record>
<record id="scrum_task_13" model="scrum.task">
<record id="scrum_task_13" model="project.task">
<field name="planned_hours">2.0</field>
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
<field model="scrum.project" name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="scrum_project_1"/>
<field name="name">Bugfix - Translations</field>
<field name="product_backlog_id" ref="scrum_product_backlog_4"/>
</record>
<record id="scrum_task_14" model="scrum.task">
<record id="scrum_task_14" model="project.task">
<field name="planned_hours">4.0</field>
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
<field model="scrum.project" name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="scrum_project_1"/>
<field name="name">Finish the automated plugin system</field>
<field name="product_backlog_id" ref="scrum_product_backlog_2"/>
</record>
<record id="scrum_task_15" model="scrum.task">
<record id="scrum_task_15" model="project.task">
<field name="planned_hours">4.0</field>
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
<field model="scrum.project" name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="scrum_project_1"/>
<field name="name">Reshape the complete menu structure</field>
<field name="product_backlog_id" ref="scrum_product_backlog_6"/>
</record>
<record id="scrum_task_16" model="scrum.task">
<record id="scrum_task_16" model="project.task">
<field name="planned_hours">5.0</field>
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
<field model="scrum.project" name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="scrum_project_1"/>
<field name="name">Test 3.2.0 before releasing</field>
<field name="product_backlog_id" ref="scrum_product_backlog_5"/>
</record>
<record id="scrum_task_17" model="scrum.task">
<record id="scrum_task_17" model="project.task">
<field name="planned_hours">12.0</field>
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
<field model="scrum.project" name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="scrum_project_1"/>
<field name="description">default values, onchange, required, add on top or bottom and shortcuts (Ctrl S, Ctrl X, ...)</field>
<field name="name">Editable trees</field>
<field name="product_backlog_id" ref="scrum_product_backlog_7"/>

View File

@ -2,63 +2,28 @@
<openerp>
<data>
<!--
Usual views
-->
<menuitem id="menu_scrum"
name="Scrum"
parent="base.menu_main_pm"/>
<!-- Scrum Project -->
<record id="view_scrum_project_form" model="ir.ui.view">
<field name="name">scrum.project.form</field>
<field name="model">scrum.project</field>
<record id="view_project_project_form" model="ir.ui.view">
<field name="name">project.project.form</field>
<field name="model">project.project</field>
<field name="type">form</field>
<field name="inherit_id" ref="project.edit_project"/>
<field name="arch" type="xml">
<field name="state" position="after">
<separator string="Scrum Data" colspan="4"/>
<field name="product_owner_id" required="1" select="1"/>
<field name="sprint_size"/>
<newline/>
</field>
<group name="misc" position="after">
<group col="2" colspan="2">
<separator string="Scrum Data" colspan="4"/>
<field name="product_owner_id" required="1" select="1"/>
<field name="sprint_size"/>
</group>
</group>
</field>
</record>
<record id="view_scrum_project_tree" model="ir.ui.view">
<field name="name">scrum.project.tree</field>
<field name="model">scrum.project</field>
<field name="type">tree</field>
<field name="field_parent">child_id</field>
<field name="arch" type="xml">
<tree string="Scrum Projects">
<field name="name"/>
<field name="manager"/>
<field name="product_owner_id"/>
<field name="planned_hours" sum="Planned hours" widget="float_time"/>
<field name="effective_hours" sum="Effective hours" widget="float_time"/>
</tree>
</field>
</record>
<record id="action_scrum_project_tree" model="ir.actions.act_window">
<field name="name">Projects</field>
<field name="res_model">scrum.project</field>
<field name="view_type">tree</field>
<field name="view_id" ref="view_scrum_project_tree"/>
<field name="domain">[('parent_id','=',False),('scrum','=',1)]</field>
</record>
<menuitem id="next_id_67" name="Scrum" parent="base.menu_main_pm"/><menuitem action="action_scrum_project_tree" id="menu_action_scrum_project_tree" parent="next_id_67"/>
<record id="action_scrum_project_form" model="ir.actions.act_window">
<field name="name">Edit Projects</field>
<field name="res_model">scrum.project</field>
<field name="view_type">form</field>
<field name="view_id" ref="view_scrum_project_form"/>
<field name="domain">[('scrum','=',1)]</field>
</record>
<menuitem action="action_scrum_project_form" id="menu_action_scrum_project_form" parent="scrum.menu_action_scrum_project_tree"/>
<!--
Product backlog
-->
@ -68,12 +33,13 @@
<field name="model">scrum.product.backlog</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Scrum Product backlog">
<field name="priority"/>
<field name="sequence"/>
<tree string="Product Backlog">
<field name="sequence" invisible="1"/>
<field name="name"/>
<field name="project_id"/>
<field name="sprint_id"/>
<field name="progress"/>
<field name="user_id"/>
<field name="progress" widget="progressbar"/>
<field name="effective_hours" sum="Effective hours" widget="float_time"/>
<field name="planned_hours" sum="Planned hours" widget="float_time"/>
<field name="state"/>
@ -86,59 +52,76 @@
<field name="model">scrum.product.backlog</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Scrum Product backlog">
<form string="Product backlog">
<group colspan="4" col="6">
<field name="name" select="1"/>
<field name="project_id" select="1"/>
<field domain="[('project_id','=',project_id)]" name="sprint_id" select="1"/>
<field name="user_id" select="1"/>
<field name="sequence"/>
<field name="active" select="1"/>
<field name="effective_hours" widget="float_time"/>
<field name="planned_hours" widget="float_time"/>
<field name="progress" widget="progressbar"/>
</group>
<notebook colspan="4">
<page string="Product backlog">
<field name="priority"/>
<field name="sequence"/>
<field name="user_id" select="1"/>
<field name="active" select="1"/>
<field colspan="4" name="note"/>
<field name="state" select="1"/>
<field name="progress"/>
<field name="effective_hours" widget="float_time"/>
<field name="planned_hours" widget="float_time"/>
<page string="Feature Description">
<field colspan="4" name="note" nolabel="1"/>
</page>
<page string="Tasks">
<field colspan="4" name="tasks_id" nolabel="1" widget="one2many_list"/>
</page>
</notebook>
<group col="4" colspan="4">
<field name="state" select="1"/>
</group>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_scrum_product_backlog_search">
<field name="name">scrum.product.backlog.search</field>
<field name="model">scrum.product.backlog</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Product Backlogs">
<group col="10" colspan="4">
<filter icon="terp-project" string="Draft" domain="[('state','=','draft')]" help="Draft Backlogs"/>
<filter icon="terp-project" string="Open" domain="[('state','=','open')]" help="Open Backlogs"/>
<separator orientation="vertical"/>
<field name="name" select="1"/>
<field name="project_id" select="1" default="context.get('project_id', False)"/>
<field name="sprint_id" select="1"/>
<field name="user_id" select="1"/>
<field name="state" select="1"/>
</group>
</search>
</field>
</record>
<field name="name">scrum.product.backlog.search</field>
<field name="model">scrum.product.backlog</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Product Backlogs">
<group col="10" colspan="4">
<filter default="1"
icon="terp-project"
string="Current"
domain="[('state','in',('open','draft'))]"
help="Open and Draft Backlogs"/>
<filter icon="terp-project" string="Draft" domain="[('state','=','draft')]" help="Draft Backlogs"/>
<filter icon="terp-project" string="Open" domain="[('state','=','open')]" help="Open Backlogs"/>
<separator orientation="vertical"/>
<field name="name"/>
<field name="project_id"
widget="selection"
default="context.get('project_id', False)"/>
<field name="sprint_id"/>
<field name="user_id">
<filter default="1"
icon="terp-project"
string="My Features"
domain="[('user_id','=',uid)]"
help="My Backlogs"/>
</field>
</group>
</search>
</field>
</record>
<record id="action_product_backlog_form" model="ir.actions.act_window">
<field name="name">Backlogs</field>
<field name="name">Product Backlogs</field>
<field name="res_model">scrum.product.backlog</field>
<field name="view_type">form</field>
<field name="search_view_id" ref="view_scrum_product_backlog_search"/>
</record>
<menuitem action="action_product_backlog_form" id="menu_action_product_backlog_form" parent="scrum.next_id_67"/>
<menuitem
action="action_product_backlog_form"
id="menu_action_product_backlog_form"
sequence="20"
parent="menu_scrum"/>
<!--
Scrum Sprint
@ -152,9 +135,9 @@
<tree string="Scrum Sprint">
<field name="name"/>
<field name="project_id"/>
<field name="scrum_master_id"/>
<field name="date_start"/>
<field name="date_stop"/>
<field name="progress"/>
<field name="progress" widget="progressbar"/>
<field name="effective_hours" sum="Effective hours" widget="float_time"/>
<field name="planned_hours" sum="Planned hours" widget="float_time"/>
<field name="state"/>
@ -183,7 +166,7 @@
<field name="state"/>
</page>
<page string="Daily Meetings">
<field colspan="4" name="meetings_id" nolabel="1" widget="one2many_list"/>
<field colspan="4" name="meeting_ids" nolabel="1" widget="one2many_list"/>
</page>
<page string="Review">
<field colspan="4" name="review" nolabel="1"/>
@ -197,24 +180,28 @@
</record>
<record model="ir.ui.view" id="view_scrum_sprint_search">
<field name="name">scrum.sprint.search</field>
<field name="model">scrum.sprint</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Sprints">
<group col="10" colspan="4">
<filter icon="gtk-execute" string="My" domain="[('scrum_master_id','=',uid)]" help="My Sprints"/>
<separator orientation="vertical"/>
<filter icon="terp-project" string="Draft" domain="[('state','=','draft')]" help="Draft Sprints"/>
<filter icon="terp-project" string="Open" domain="[('state','=','open')]" help="Open Sprints"/>
<filter icon="terp-project" string="Done" domain="[('state','=','done')]" help="Done Sprints"/>
<separator orientation="vertical"/>
<field name="name" select="1"/>
<field name="date_start" select="1"/>
</group>
</search>
</field>
</record>
<field name="name">scrum.sprint.search</field>
<field name="model">scrum.sprint</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Sprints">
<group col="10" colspan="4">
<filter default="1" icon="terp-project" string="Current" domain="[('state','in',('draft','open'))]" help="Draft and open Sprints"/>
<filter icon="terp-project" string="Draft" domain="[('state','=','draft')]" help="Draft Sprints"/>
<filter icon="terp-project" string="Open" domain="[('state','=','open')]" help="Open Sprints"/>
<separator orientation="vertical"/>
<field name="name"/>
<field name="project_id"/>
<field name="scrum_master_id">
<filter icon="gtk-execute" domain="[('scrum_master_id','=',uid)]"
default="1"
help="My Sprints"/>
</field>
<field name="date_start"/>
</group>
</search>
</field>
</record>
<record id="action_sprint_all_tree" model="ir.actions.act_window">
<field name="name">Sprints</field>
@ -224,7 +211,9 @@
<field name="view_id" ref="view_scrum_sprint_tree"/>
<field name="search_view_id" ref="view_scrum_sprint_search"/>
</record>
<menuitem action="action_sprint_all_tree" id="menu_action_sprint_all_tree" parent="scrum.next_id_67"/>
<menuitem
sequence="10"
action="action_sprint_all_tree" id="menu_action_sprint_all_tree" parent="menu_scrum"/>
<!--
Daily Meeting
@ -249,6 +238,7 @@
<field name="arch" type="xml">
<form string="Scrum Sprint">
<field name="name" select="1"/>
<field name="date"/>
<field name="sprint_id"/>
<notebook colspan="4">
<page string="Scrum Meeting">
@ -260,8 +250,6 @@
<field colspan="4" name="question_blocks" nolabel="1"/>
</page>
<page string="Optionnal Info">
<field name="date"/>
<newline/>
<separator colspan="4" string="Are your Sprint Backlog estimate accurate ?"/>
<field colspan="4" name="question_backlog" nolabel="1"/>
</page>
@ -270,15 +258,16 @@
</field>
</record>
<record id="action_meeting_form" model="ir.actions.act_window">
<field name="name">Scrum Meeting</field>
<field name="name">Scrum Meetings</field>
<field name="res_model">scrum.meeting</field>
<field name="view_type">form</field>
<field name="view_id" ref="view_scrum_meeting_form"/>
</record>
<menuitem action="action_meeting_form" id="menu_action_meeting_form" parent="scrum.next_id_67"/>
<menuitem sequence="30"
action="action_meeting_form" id="menu_action_meeting_form" parent="menu_scrum"/>
<!--
Clicks on a sprint: what a hack
Clicks on a sprint:
-->
<record id="action_sprint_task_open" model="ir.actions.act_window">
@ -349,64 +338,28 @@
-->
<record id="view_task_form2" model="ir.ui.view">
<field name="name">scrum.task.form</field>
<field name="model">scrum.task</field>
<field name="name">project.task.scrum.form</field>
<field name="model">project.task</field>
<field name="type">form</field>
<field name="inherit_id" ref="project.view_task_form2"/>
<field name="arch" type="xml">
<field name="project_id" position="replace">
<newline/>
<field name="project_id" required="1" select="1"/>
<field name="progress" position="after">
<field domain="[('project_id','=',project_id)]" name="product_backlog_id" select="1"/>
</field>
</field>
</record>
<record id="view_task_search_form" model="ir.ui.view">
<field name="name">scrum.task.search</field>
<field name="model">scrum.task</field>
<field name="name">project.task.scrum.search</field>
<field name="model">project.task</field>
<field name="type">search</field>
<field name="inherit_id" ref="project.view_task_search_form"/>
<field name="arch" type="xml">
<field name="project_id" position="after">
<field name="product_backlog_id" select="1"/>
</field>
<field name="project_id" position="after">
<field name="product_backlog_id" select="1"/>
</field>
</field>
</record>
<record id="action_view_task" model="ir.actions.act_window">
<field name="name">All Tasks</field>
<field name="res_model">scrum.task</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('scrum','=',1)]</field>
<field name="search_view_id" ref="view_task_search_form"/>
</record>
<record id="action_view_scrum_task_tree_view" model="ir.actions.act_window.view">
<field eval="1" name="sequence"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="project.view_task_tree2"/>
<field name="act_window_id" ref="action_view_task"/>
</record>
<record id="action_view_scrum_task_form_view" model="ir.actions.act_window.view">
<field eval="2" name="sequence"/>
<field name="view_mode">form</field>
<field name="view_id" ref="view_task_form2"/>
<field name="act_window_id" ref="action_view_task"/>
</record>
<menuitem action="action_view_task" id="menu_action_view_task" parent="scrum.next_id_67"/>
<record id="action_view_task6" model="ir.actions.act_window">
<field name="name">Opened tasks</field>
<field name="res_model">scrum.task</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('state','=','open'),('scrum','=',1)]</field>
<field name="filter" eval="True"/>
</record>
</data>
</openerp>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<wizard id="wizard_scrum_backlog_task" model="scrum.product.backlog" name="scrum.product.backlog.task.create" string="Created tasks"/>
<wizard id="wizard_scrum_backlog_task" model="scrum.product.backlog" name="scrum.product.backlog.task.create" string="Convert to Tasks"/>
</data>
</openerp>

View File

@ -1,11 +1,7 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_scrum_team","scrum.team","model_scrum_team","project.group_project_user",1,1,1,1
"access_scrum_project","scrum.project","model_scrum_project","project.group_project_user",1,1,1,1
"access_scrum_sprint","scrum.sprint","model_scrum_sprint","project.group_project_user",1,,,
"access_scrum_product_backlog","scrum.product.backlog","model_scrum_product_backlog","project.group_project_user",1,1,1,1
"access_scrum_task","scrum.task","model_scrum_task","project.group_project_user",1,1,1,1
"access_scrum_meeting","scrum.meeting","model_scrum_meeting","project.group_project_user",1,,,
"access_scrum_meeting_manager","scrum.meeting.manager","model_scrum_meeting","project.group_project_manager",1,1,1,1
"access_scrum_sprint_manager","scrum.sprint.manager","model_scrum_sprint","project.group_project_manager",1,1,1,1
"access_scrum_product_backlog_manager","scrum.product.backlog manager","model_scrum_product_backlog","project.group_project_manager",1,1,1,1
"access_scrum_project_manager","scrum.project manager","model_scrum_project","project.group_project_manager",1,1,1,1

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
access_scrum_team scrum.team model_scrum_team project.group_project_user 1 1 1 1
access_scrum_project scrum.project model_scrum_project project.group_project_user 1 1 1 1
2 access_scrum_sprint scrum.sprint model_scrum_sprint project.group_project_user 1
3 access_scrum_product_backlog scrum.product.backlog model_scrum_product_backlog project.group_project_user 1 1 1 1
access_scrum_task scrum.task model_scrum_task project.group_project_user 1 1 1 1
4 access_scrum_meeting scrum.meeting model_scrum_meeting project.group_project_user 1
5 access_scrum_meeting_manager scrum.meeting.manager model_scrum_meeting project.group_project_manager 1 1 1 1
6 access_scrum_sprint_manager scrum.sprint.manager model_scrum_sprint project.group_project_manager 1 1 1 1
7 access_scrum_product_backlog_manager scrum.product.backlog manager model_scrum_product_backlog project.group_project_manager 1 1 1 1
access_scrum_project_manager scrum.project manager model_scrum_project project.group_project_manager 1 1 1 1

View File

@ -42,7 +42,7 @@ def _do_create(self, cr, uid, data, context):
id = mod_obj.read(cr, uid, result, ['res_id'])
ids = []
for backlog in backlogs:
task = pooler.get_pool(cr.dbname).get('scrum.task')
task = pooler.get_pool(cr.dbname).get('project.task')
ids.append(task.create(cr, uid, {
'product_backlog_id': backlog.id,
'name': backlog.name,
@ -58,7 +58,7 @@ def _do_create(self, cr, uid, data, context):
'name': 'Open Backlog Tasks',
'view_type': 'form',
'view_mode': 'tree,form',
'res_model': 'scrum.task',
'res_model': 'project.task',
'view_id': False,
'type': 'ir.actions.act_window',
'search_view_id': id['res_id']