diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 945eec1f46c..6daed1f7a0d 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -23,14 +23,22 @@ - - - - - - - - + + + + + + + + + + + + + + + + @@ -411,6 +419,7 @@ + diff --git a/addons/project_gtd/project_gtd_view.xml b/addons/project_gtd/project_gtd_view.xml index 05172675a9a..6e43f96b1ab 100644 --- a/addons/project_gtd/project_gtd_view.xml +++ b/addons/project_gtd/project_gtd_view.xml @@ -90,10 +90,8 @@ - - diff --git a/addons/scrum/scrum.py b/addons/scrum/scrum.py index b1740f433cf..1dd158e39e9 100644 --- a/addons/scrum/scrum.py +++ b/addons/scrum/scrum.py @@ -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: - diff --git a/addons/scrum/scrum_demo.xml b/addons/scrum/scrum_demo.xml index fd82337ea24..edb7e1f5857 100644 --- a/addons/scrum/scrum_demo.xml +++ b/addons/scrum/scrum_demo.xml @@ -2,9 +2,9 @@ - + - + [24, 25, 28, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 36, 38] @@ -24,10 +24,7 @@ open - - - - + 3 @@ -79,111 +76,111 @@ - + - + 4.0 - + Review all English Terms - + 4.0 - + Review all french terms - + 24.0 - + Analytic Accounting features - + 6.0 - + Test and improve automatic migration system - + 24.0 - + General accounting features - + 24.0 - + Accounting Budgets - + 24.0 - + Cash book, general ledger, accounts list, aged trial balance Accounting Report General - + 7.0 - + Accounting Report Budget - + 8.0 - + Accounting Report Analytic - + 4.0 - + Bugfix - memory leak - + 2.0 - + Bugfix - Translations - + 4.0 - + Finish the automated plugin system - + 4.0 - + Reshape the complete menu structure - + 5.0 - + Test 3.2.0 before releasing - + 12.0 - + default values, onchange, required, add on top or bottom and shortcuts (Ctrl S, Ctrl X, ...) Editable trees diff --git a/addons/scrum/scrum_view.xml b/addons/scrum/scrum_view.xml index 521f2c53838..b3605d4270b 100644 --- a/addons/scrum/scrum_view.xml +++ b/addons/scrum/scrum_view.xml @@ -2,63 +2,28 @@ - - - + - - scrum.project.form - scrum.project + + project.project.form + project.project form - - - - - - + + + + + + + - - scrum.project.tree - scrum.project - tree - child_id - - - - - - - - - - - - Projects - scrum.project - tree - - [('parent_id','=',False),('scrum','=',1)] - - - - - Edit Projects - scrum.project - form - - [('scrum','=',1)] - - - - @@ -68,12 +33,13 @@ scrum.product.backlog tree - - - + + + - + + @@ -86,59 +52,76 @@ scrum.product.backlog form -
+ + + + + + + - - - - - - - - - - + + + + +
- scrum.product.backlog.search - scrum.product.backlog - search - - - - - - - - - - - - - - - + scrum.product.backlog.search + scrum.product.backlog + search + + + + + + + + + + + + + + + + +
- Backlogs + Product Backlogs scrum.product.backlog form - + @@ -349,64 +338,28 @@ --> - scrum.task.form - scrum.task + project.task.scrum.form + project.task form - - - + - scrum.task.search - scrum.task + project.task.scrum.search + project.task search - - - + + + - - All Tasks - scrum.task - form - tree,form - [('scrum','=',1)] - - - - - - tree - - - - - - - form - - - - - - - - Opened tasks - scrum.task - form - tree,form - [('state','=','open'),('scrum','=',1)] - - -
diff --git a/addons/scrum/scrum_wizard.xml b/addons/scrum/scrum_wizard.xml index 5c8020d15a3..9a15c1e5829 100644 --- a/addons/scrum/scrum_wizard.xml +++ b/addons/scrum/scrum_wizard.xml @@ -1,6 +1,6 @@ - + diff --git a/addons/scrum/security/ir.model.access.csv b/addons/scrum/security/ir.model.access.csv index 2c139b10b26..a52a9c2f3f2 100644 --- a/addons/scrum/security/ir.model.access.csv +++ b/addons/scrum/security/ir.model.access.csv @@ -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 diff --git a/addons/scrum/wizard/backlog_to_task.py b/addons/scrum/wizard/backlog_to_task.py index 284d5b1a5f4..79742a8e43b 100644 --- a/addons/scrum/wizard/backlog_to_task.py +++ b/addons/scrum/wizard/backlog_to_task.py @@ -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']