[MERGE] Merge PSI branch for scrum improvements
bzr revid: mra@mra-laptop-20100715070211-guzbmzig2y76lf0w
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
@@ -15,11 +15,11 @@
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import scrum
|
||||
import project_scrum
|
||||
import report
|
||||
import wizard
|
||||
|
||||
@@ -51,15 +51,15 @@
|
||||
'init_xml': [],
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'scrum_report.xml',
|
||||
'wizard/scrum_backlog_create_task_view.xml',
|
||||
'scrum_view.xml',
|
||||
'process/scrum_process.xml',
|
||||
'wizard/scrum_backlog_sprint_view.xml',
|
||||
'wizard/scrum_backlog_merger_view.xml',
|
||||
"board_scrum_view.xml",
|
||||
'project_scrum_report.xml',
|
||||
'wizard/project_scrum_backlog_create_task_view.xml',
|
||||
'project_scrum_view.xml',
|
||||
'process/project_scrum_process.xml',
|
||||
'wizard/project_scrum_backlog_sprint_view.xml',
|
||||
'wizard/project_scrum_backlog_merger_view.xml',
|
||||
"board_project_scrum_view.xml",
|
||||
],
|
||||
'demo_xml': ['scrum_demo.xml'],
|
||||
'demo_xml': ['project_scrum_demo.xml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '0084121063261',
|
||||
+5
-5
@@ -2,8 +2,8 @@
|
||||
<openerp>
|
||||
<data>
|
||||
<record id="view_scrum_sprint_dashboard_tree" model="ir.ui.view">
|
||||
<field name="name">scrum.sprint.dashboard.tree</field>
|
||||
<field name="model">scrum.sprint</field>
|
||||
<field name="name">project.scrum.sprint.dashboard.tree</field>
|
||||
<field name="model">project.scrum.sprint</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Scrum Sprint">
|
||||
@@ -14,21 +14,21 @@
|
||||
<field name="date_start"/>
|
||||
<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="planned_hours" sum="Planned hours" widget="float_time"/> -->
|
||||
<field name="expected_hours" sum="Expected hours" widget="float_time"/>
|
||||
<field name="state"/>
|
||||
<button type="object" string="Open" name="button_open" states="draft,pending" icon="gtk-jump-to"/>
|
||||
<button type="object" string="Pending" name="button_pending" states="open" icon="gtk-media-pause"/>
|
||||
<button type="object" string="Close" name="button_close" states="open,pending" icon="gtk-jump-to"/>
|
||||
<button type="object" string="Set to Draft" name="button_draft" states="cancel,done" icon="gtk-convert"/>
|
||||
<button name="%(scrum.report_scrum_sprint_burndown_chart)d" states="open,draft,close,cancel"
|
||||
<button name="%(project_scrum.report_scrum_sprint_burndown_chart)d" states="open,draft,close,cancel"
|
||||
string="Burndown Chart" type="action" icon="gtk-print"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_sprint_all_dashboard_tree" model="ir.actions.act_window">
|
||||
<field name="name">Sprint's List</field>
|
||||
<field name="res_model">scrum.sprint</field>
|
||||
<field name="res_model">project.scrum.sprint</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_id" ref="view_scrum_sprint_dashboard_tree"/>
|
||||
+10
-10
@@ -1,14 +1,14 @@
|
||||
<?xml version="1.0" ?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<!--
|
||||
|
||||
<!--
|
||||
Process Node
|
||||
-->
|
||||
|
||||
|
||||
<record id="process_node_productbacklog0" model="process.node">
|
||||
<field name="menu_id" ref="scrum.menu_action_product_backlog_form"/>
|
||||
<field name="model_id" ref="scrum.model_scrum_product_backlog"/>
|
||||
<field name="menu_id" ref="menu_action_product_backlog_form"/>
|
||||
<field name="model_id" ref="model_project_scrum_product_backlog"/>
|
||||
<field eval=""""state"""" name="kind"/>
|
||||
<field eval=""""Product backlog"""" name="name"/>
|
||||
<field eval=""""Create task from backlogs"""" name="note"/>
|
||||
@@ -16,11 +16,11 @@
|
||||
<field eval=""""object.state=='draft'"""" name="model_states"/>
|
||||
<field eval="1" name="flow_start"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
|
||||
<!--
|
||||
Process Transition
|
||||
-->
|
||||
|
||||
|
||||
<record id="process_transition_backlogtask0" model="process.transition">
|
||||
<field eval="[(6,0,[])]" name="role_ids"/>
|
||||
<field eval="[(6,0,[])]" name="transition_ids"/>
|
||||
@@ -29,6 +29,6 @@
|
||||
<field model="process.node" name="target_node_id" ref="project.process_node_drafttask0"/>
|
||||
<field model="process.node" name="source_node_id" ref="process_node_productbacklog0"/>
|
||||
</record>
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
</openerp>
|
||||
@@ -27,7 +27,7 @@ import re
|
||||
import tools
|
||||
from tools.translate import _
|
||||
|
||||
class scrum_project(osv.osv):
|
||||
class project_scrum_project(osv.osv):
|
||||
_inherit = 'project.project'
|
||||
_columns = {
|
||||
'product_owner_id': fields.many2one('res.users', 'Product Owner', help="The person who is responsible for the product"),
|
||||
@@ -39,11 +39,11 @@ class scrum_project(osv.osv):
|
||||
'sprint_size': 15,
|
||||
'scrum': 1
|
||||
}
|
||||
scrum_project()
|
||||
project_scrum_project()
|
||||
|
||||
class scrum_sprint(osv.osv):
|
||||
_name = 'scrum.sprint'
|
||||
_description = 'Scrum Sprint'
|
||||
class project_scrum_sprint(osv.osv):
|
||||
_name = 'project.scrum.sprint'
|
||||
_description = 'Project Scrum Sprint'
|
||||
|
||||
def _calc_progress(self, cr, uid, ids, name, args, context):
|
||||
res = {}
|
||||
@@ -115,10 +115,10 @@ class scrum_sprint(osv.osv):
|
||||
'project_id': fields.many2one('project.project', 'Project', required=True, domain=[('scrum','=',1)], help="If you have [?] in the project name, it means there are no analytic account linked to this project."),
|
||||
'product_owner_id': fields.many2one('res.users', 'Product Owner', required=True,help="The person who is responsible for the product"),
|
||||
'scrum_master_id': fields.many2one('res.users', 'Scrum Master', required=True,help="The person who is maintains the processes for the product"),
|
||||
'meeting_ids': fields.one2many('scrum.meeting', 'sprint_id', 'Daily Scrum'),
|
||||
'meeting_ids': fields.one2many('project.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'),
|
||||
'backlog_ids': fields.one2many('project.scrum.product.backlog', 'sprint_id', 'Sprint Backlog'),
|
||||
'progress': fields.function(_calc_progress, method=True, string='Progress (0-100)', help="Computed as: Time Spent / Total Time."),
|
||||
'effective_hours': fields.function(_calc_effective, method=True, string='Effective hours', help="Computed using the sum of the task work done."),
|
||||
'expected_hours': fields.function(_calc_expected, method=True, string='Planned Hours', help='Estimated time to do the task.'),
|
||||
@@ -153,10 +153,10 @@ class scrum_sprint(osv.osv):
|
||||
v['date_stop'] = (DateTime.now() + DateTime.RelativeDateTime(days=int(proj.sprint_size or 14))).strftime('%Y-%m-%d')
|
||||
return {'value':v}
|
||||
|
||||
scrum_sprint()
|
||||
project_scrum_sprint()
|
||||
|
||||
class scrum_product_backlog(osv.osv):
|
||||
_name = 'scrum.product.backlog'
|
||||
class project_scrum_product_backlog(osv.osv):
|
||||
_name = 'project.scrum.product.backlog'
|
||||
_description = 'Product Backlog'
|
||||
|
||||
def name_search(self, cr, uid, name, args=None, operator='ilike', context=None, limit=100):
|
||||
@@ -200,9 +200,10 @@ class scrum_product_backlog(osv.osv):
|
||||
return res
|
||||
|
||||
def button_cancel(self, cr, uid, ids, context={}):
|
||||
obj_project_task = self.pool.get('project.task')
|
||||
self.write(cr, uid, ids, {'state':'cancel'}, context=context)
|
||||
for backlog in self.browse(cr, uid, ids, context=context):
|
||||
self.pool.get('project.task').write(cr, uid, [i.id for i in backlog.tasks_id], {'state': 'cancelled'})
|
||||
obj_project_task.write(cr, uid, [i.id for i in backlog.tasks_id], {'state': 'cancelled'})
|
||||
return True
|
||||
|
||||
def button_draft(self, cr, uid, ids, context={}):
|
||||
@@ -217,9 +218,10 @@ class scrum_product_backlog(osv.osv):
|
||||
return True
|
||||
|
||||
def button_close(self, cr, uid, ids, context={}):
|
||||
obj_project_task = self.pool.get('project.task')
|
||||
self.write(cr, uid, ids, {'state':'done'}, context=context)
|
||||
for backlog in self.browse(cr, uid, ids, context=context):
|
||||
self.pool.get('project.task').write(cr, uid, [i.id for i in backlog.tasks_id], {'state': 'done'})
|
||||
obj_project_task.write(cr, uid, [i.id for i in backlog.tasks_id], {'state': 'done'})
|
||||
message = _('Product Backlog ') + " '" + backlog.name + "' "+ _("is Closed.")
|
||||
self.log(cr, uid, backlog.id, message)
|
||||
return True
|
||||
@@ -249,7 +251,7 @@ class scrum_product_backlog(osv.osv):
|
||||
'active' : fields.boolean('Active', help="If Active field is set to true, it will allow you to hide the product backlog without removing it."),
|
||||
'project_id': fields.many2one('project.project', 'Project', required=True, domain=[('scrum','=',1)], help="If you have [?] in the project name, it means there are no analytic account linked to this project."),
|
||||
'user_id': fields.many2one('res.users', 'Author'),
|
||||
'sprint_id': fields.many2one('scrum.sprint', 'Sprint'),
|
||||
'sprint_id': fields.many2one('project.scrum.sprint', 'Sprint'),
|
||||
'sequence' : fields.integer('Sequence', help="Gives the sequence order when displaying a list of product backlog."),
|
||||
'tasks_id': fields.one2many('project.task', 'product_backlog_id', 'Tasks Details'),
|
||||
'state': fields.selection([('draft','Draft'),('open','Open'),('pending','Pending'),('done','Done'),('cancel','Cancelled')], 'State', required=True),
|
||||
@@ -265,42 +267,42 @@ class scrum_product_backlog(osv.osv):
|
||||
'user_id': lambda self, cr, uid, context: uid,
|
||||
}
|
||||
_order = "sequence"
|
||||
scrum_product_backlog()
|
||||
project_scrum_product_backlog()
|
||||
|
||||
class scrum_task(osv.osv):
|
||||
class project_scrum_task(osv.osv):
|
||||
_name = 'project.task'
|
||||
_inherit = 'project.task'
|
||||
|
||||
def _get_task(self, cr, uid, ids, context={}):
|
||||
result = {}
|
||||
for line in self.pool.get('scrum.product.backlog').browse(cr, uid, ids, context=context):
|
||||
for line in self.pool.get('project.scrum.product.backlog').browse(cr, uid, ids, context=context):
|
||||
for task in line.tasks_id:
|
||||
result[task.id] = True
|
||||
return result.keys()
|
||||
_columns = {
|
||||
'product_backlog_id': fields.many2one('scrum.product.backlog', 'Product Backlog',help="Related product backlog that contains this task. Used in SCRUM methodology"),
|
||||
'sprint_id': fields.related('product_backlog_id','sprint_id', type='many2one', relation='scrum.sprint', string='Sprint',
|
||||
'product_backlog_id': fields.many2one('project.scrum.product.backlog', 'Product Backlog',help="Related product backlog that contains this task. Used in SCRUM methodology"),
|
||||
'sprint_id': fields.related('product_backlog_id','sprint_id', type='many2one', relation='project.scrum.sprint', string='Sprint',
|
||||
store={
|
||||
'project.task': (lambda self, cr, uid, ids, c={}: ids, ['product_backlog_id'], 10),
|
||||
'scrum.product.backlog': (_get_task, ['sprint_id'], 10)
|
||||
'project.scrum.product.backlog': (_get_task, ['sprint_id'], 10)
|
||||
}),
|
||||
}
|
||||
|
||||
def onchange_backlog_id(self, cr, uid, backlog_id):
|
||||
if not backlog_id:
|
||||
return {}
|
||||
project_id = self.pool.get('scrum.product.backlog').browse(cr, uid, backlog_id).project_id.id
|
||||
project_id = self.pool.get('project.scrum.product.backlog').browse(cr, uid, backlog_id).project_id.id
|
||||
return {'value': {'project_id': project_id}}
|
||||
scrum_task()
|
||||
project_scrum_task()
|
||||
|
||||
class scrum_meeting(osv.osv):
|
||||
_name = 'scrum.meeting'
|
||||
class project_scrum_meeting(osv.osv):
|
||||
_name = 'project.scrum.meeting'
|
||||
_description = 'Scrum Meeting'
|
||||
_order = 'date desc'
|
||||
_columns = {
|
||||
'name' : fields.char('Meeting Name', size=64),
|
||||
'date': fields.date('Meeting Date', required=True),
|
||||
'sprint_id': fields.many2one('scrum.sprint', 'Sprint', required=True),
|
||||
'sprint_id': fields.many2one('project.scrum.sprint', 'Sprint', required=True),
|
||||
'project_id': fields.many2one('project.project', 'Project'),
|
||||
'question_yesterday': fields.text('Tasks since yesterday'),
|
||||
'question_today': fields.text('Tasks for today'),
|
||||
@@ -357,5 +359,5 @@ class scrum_meeting(osv.osv):
|
||||
return False
|
||||
return True
|
||||
|
||||
scrum_meeting()
|
||||
project_scrum_meeting()
|
||||
|
||||
@@ -13,9 +13,9 @@
|
||||
<field model="res.users" name="product_owner_id" search="[('login','=','demo')]"/>
|
||||
</record>
|
||||
|
||||
<!-- Resource: scrum.sprint -->
|
||||
<!-- Resource: project_scrum.sprint -->
|
||||
|
||||
<record id="scrum_sprint_0" model="scrum.sprint">
|
||||
<record id="scrum_sprint_0" model="project.scrum.sprint">
|
||||
<field name="date_stop">2005-12-20</field>
|
||||
<field name="name">Sprint for V3.2.0</field>
|
||||
<field model="res.users" name="scrum_master_id" search="[('login','=','demo')]"/>
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
<!-- Resource: project.product.backlog -->
|
||||
|
||||
<record id="scrum_product_backlog_0" model="scrum.product.backlog">
|
||||
<record id="scrum_product_backlog_0" model="project.scrum.product.backlog">
|
||||
<field name="priority">3</field>
|
||||
<field name="name">Automatic migration system</field>
|
||||
<field name="expected_hours">6.0</field>
|
||||
@@ -35,54 +35,54 @@
|
||||
<field name="state">done</field>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
</record>
|
||||
<record id="scrum_product_backlog_1" model="scrum.product.backlog">
|
||||
<record id="scrum_product_backlog_1" model="project.scrum.product.backlog">
|
||||
<field name="priority">3</field>
|
||||
<field name="name">New accounting module</field>
|
||||
<field name="expected_hours">111.0</field>
|
||||
<field name="note">The accounting module of Open ERP (financial accounting and management accounting) is being reshaped. New functionnalities will be added: intangible assets, a new way of presenting ledgers and bookings, new stock valuation calculation, and lots of predefined reports. </field>
|
||||
<field name="sprint_id" ref="scrum_sprint_0"/>
|
||||
<field name="state">open</field>
|
||||
<field name="state">open</field>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
</record>
|
||||
<record id="scrum_product_backlog_2" model="scrum.product.backlog">
|
||||
<record id="scrum_product_backlog_2" model="project.scrum.product.backlog">
|
||||
<field name="priority">3</field>
|
||||
<field name="name">Automated Plugin System to install/uninstall modules</field>
|
||||
<field name="expected_hours">4.0</field>
|
||||
<field name="note">We have to develop a plug-in system which will enable to install/remove modules. The basic version of Open ERP will include only the required minimum, and you will select the modules thanks to the plug-in manager. This allows you to limit your system to your real needs: quality management, localisations, project and service management, marketing campaigns, and so on... </field>
|
||||
<field name="sprint_id" ref="scrum_sprint_0"/>
|
||||
<field name="state">open</field>
|
||||
<field name="state">open</field>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
</record>
|
||||
<record id="scrum_product_backlog_3" model="scrum.product.backlog">
|
||||
<record id="scrum_product_backlog_3" model="project.scrum.product.backlog">
|
||||
<field name="name">Review all terms</field>
|
||||
<field name="expected_hours">8.0</field>
|
||||
<field name="sprint_id" ref="scrum_sprint_0"/>
|
||||
<field name="state">done</field>
|
||||
<field name="state">done</field>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
</record>
|
||||
<record id="scrum_product_backlog_4" model="scrum.product.backlog">
|
||||
<record id="scrum_product_backlog_4" model="project.scrum.product.backlog">
|
||||
<field name="name">Bugfixes</field>
|
||||
<field name="expected_hours">6.0</field>
|
||||
<field name="sprint_id" ref="scrum_sprint_0"/>
|
||||
<field name="state">open</field>
|
||||
<field name="state">open</field>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
</record>
|
||||
<record id="scrum_product_backlog_5" model="scrum.product.backlog">
|
||||
<record id="scrum_product_backlog_5" model="project.scrum.product.backlog">
|
||||
<field name="name">Test for 3.2.0 Publishing</field>
|
||||
<field name="expected_hours">5.0</field>
|
||||
<field name="note">Test Open ERP to release stable 3.2.0 version. (may be 3.2.0-pre1 ?)</field>
|
||||
<field name="sprint_id" ref="scrum_sprint_0"/>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
</record>
|
||||
<record id="scrum_product_backlog_6" model="scrum.product.backlog">
|
||||
<record id="scrum_product_backlog_6" model="project.scrum.product.backlog">
|
||||
<field name="name">Reshape the complete menu</field>
|
||||
<field name="expected_hours">4.0</field>
|
||||
<field name="note">Restructure the Open ERP menu to be more like others ERP.</field>
|
||||
<field name="sprint_id" ref="scrum_sprint_0"/>
|
||||
<field name="state">open</field>
|
||||
<field name="state">open</field>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
</record>
|
||||
<record id="scrum_product_backlog_7" model="scrum.product.backlog">
|
||||
<record id="scrum_product_backlog_7" model="project.scrum.product.backlog">
|
||||
<field name="name">Editable Trees</field>
|
||||
<field name="expected_hours">12.0</field>
|
||||
<field name="note">Editable trees in list and one2many_list widgets.</field>
|
||||
@@ -98,7 +98,7 @@
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="name">Review all English Terms</field>
|
||||
<field name="state">done</field>
|
||||
<field eval="time.strftime('%Y-%m-%d')" name="date_close"/>
|
||||
<field eval="time.strftime('%Y-%m-%d')" name="date_close"/>
|
||||
<field name="product_backlog_id" ref="scrum_product_backlog_3"/>
|
||||
</record>
|
||||
<record id="scrum_task_4" model="project.task">
|
||||
@@ -107,7 +107,7 @@
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="name">Review all french terms</field>
|
||||
<field name="state">done</field>
|
||||
<field eval="time.strftime('%Y-%m-%d')" name="date_close"/>
|
||||
<field eval="time.strftime('%Y-%m-%d')" name="date_close"/>
|
||||
<field name="product_backlog_id" ref="scrum_product_backlog_3"/>
|
||||
</record>
|
||||
<record id="scrum_task_5" model="project.task">
|
||||
@@ -116,7 +116,7 @@
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="name">Analytic Accounting features</field>
|
||||
<field name="state">done</field>
|
||||
<field eval="time.strftime('%Y-%m-%d')" name="date_close"/>
|
||||
<field eval="time.strftime('%Y-%m-%d')" name="date_close"/>
|
||||
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
|
||||
</record>
|
||||
<record id="scrum_task_6" model="project.task">
|
||||
@@ -149,7 +149,7 @@
|
||||
<field name="description">Cash book, general ledger, accounts list, aged trial balance</field>
|
||||
<field name="name">Accounting Report General</field>
|
||||
<field name="state">open</field>
|
||||
<field eval="[(6,0,[ref('scrum.scrum_task_8')])]" name="child_ids"/>
|
||||
<field eval="[(6,0,[ref('scrum_task_8')])]" name="child_ids"/>
|
||||
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
|
||||
</record>
|
||||
<record id="scrum_task_10" model="project.task">
|
||||
@@ -164,7 +164,7 @@
|
||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="name">Accounting Report Analytic</field>
|
||||
<field name="state">open</field>
|
||||
<field name="state">open</field>
|
||||
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
|
||||
</record>
|
||||
<record id="scrum_task_12" model="project.task">
|
||||
@@ -173,7 +173,7 @@
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="name">Bugfix - memory leak</field>
|
||||
<field name="state">done</field>
|
||||
<field eval="time.strftime('%Y-%m-%d')" name="date_close"/>
|
||||
<field eval="time.strftime('%Y-%m-%d')" name="date_close"/>
|
||||
<field name="product_backlog_id" ref="scrum_product_backlog_4"/>
|
||||
</record>
|
||||
<record id="scrum_task_13" model="project.task">
|
||||
@@ -181,8 +181,8 @@
|
||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="name">Bugfix - Translations</field>
|
||||
<field name="state">open</field>
|
||||
<field eval="[(6,0,[ref('scrum.scrum_task_12')])]" name="child_ids"/>
|
||||
<field name="state">open</field>
|
||||
<field eval="[(6,0,[ref('scrum_task_12')])]" name="child_ids"/>
|
||||
<field name="product_backlog_id" ref="scrum_product_backlog_4"/>
|
||||
</record>
|
||||
<record id="scrum_task_14" model="project.task">
|
||||
@@ -205,7 +205,7 @@
|
||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||
<field name="project_id" ref="scrum_project_1"/>
|
||||
<field name="name">Test 3.2.0 before releasing</field>
|
||||
<field name="state">open</field>
|
||||
<field name="state">open</field>
|
||||
<field name="product_backlog_id" ref="scrum_product_backlog_5"/>
|
||||
</record>
|
||||
<record id="scrum_task_17" model="project.task">
|
||||
@@ -214,10 +214,10 @@
|
||||
<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="state">open</field>
|
||||
<field name="state">open</field>
|
||||
<field name="product_backlog_id" ref="scrum_product_backlog_7"/>
|
||||
</record>
|
||||
<record id="scrum_meeting_0" model="scrum.meeting">
|
||||
<record id="scrum_meeting_0" model="project.scrum.meeting">
|
||||
<field name="question_yesterday">
|
||||
Admin: Worked on the Automatic migration system
|
||||
Demo: Worked on the Test 3.2.0 before releasing
|
||||
@@ -228,7 +228,7 @@ Demo: Work on Editable trees</field>
|
||||
<field name="question_blocks">
|
||||
Demo :Bugfix - memory leak
|
||||
</field>
|
||||
<field name="sprint_id" ref="scrum.scrum_sprint_0"/>
|
||||
<field name="sprint_id" ref="scrum_sprint_0"/>
|
||||
<field eval="time.strftime('%Y-%m-%d')" name="date"/>
|
||||
</record>
|
||||
<record id="project_task_work_scrum_task1" model="project.task.work">
|
||||
@@ -247,7 +247,7 @@ Demo :Bugfix - memory leak
|
||||
<field eval="5.0" name="hours"/>
|
||||
<field eval="time.strftime('%Y-%m-%d')" name="date"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="project_task_work_scrum_task2" model="project.task.work">
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="name">Create a script for migration and testing</field>
|
||||
@@ -264,6 +264,6 @@ Demo :Bugfix - memory leak
|
||||
<field eval="10.0" name="hours"/>
|
||||
<field eval="time.strftime('%Y-%m-%d')" name="date"/>
|
||||
</record>
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<report auto="False" id="report_scrum_sprint_burndown_chart" model="scrum.sprint" name="scrum.sprint.burndown" string="Burndown Chart"/>
|
||||
<report auto="False" id="report_scrum_sprint_burndown_chart" model="project.scrum.sprint" name="scrum.sprint.burndown" string="Burndown Chart"/>
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -29,8 +29,8 @@
|
||||
-->
|
||||
|
||||
<record id="view_scrum_product_backlog_tree" model="ir.ui.view">
|
||||
<field name="name">scrum.product.backlog.tree</field>
|
||||
<field name="model">scrum.product.backlog</field>
|
||||
<field name="name">project.scrum.product.backlog.tree</field>
|
||||
<field name="model">project.scrum.product.backlog</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree colors="grey:state in ('cancel','done');blue:state in ('pending')" string="Product Backlog">
|
||||
@@ -52,8 +52,8 @@
|
||||
</record>
|
||||
|
||||
<record id="view_scrum_product_backlog_form" model="ir.ui.view">
|
||||
<field name="name">scrum.product.backlog.form</field>
|
||||
<field name="model">scrum.product.backlog</field>
|
||||
<field name="name">project.scrum.product.backlog.form</field>
|
||||
<field name="model">project.scrum.product.backlog</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Product backlog">
|
||||
@@ -124,8 +124,8 @@
|
||||
</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="name">project.scrum.product.backlog.search</field>
|
||||
<field name="model">project.scrum.product.backlog</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Product Backlogs">
|
||||
@@ -177,7 +177,7 @@
|
||||
|
||||
<record id="action_product_backlog_form" model="ir.actions.act_window">
|
||||
<field name="name">Product Backlogs</field>
|
||||
<field name="res_model">scrum.product.backlog</field>
|
||||
<field name="res_model">project.scrum.product.backlog</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="context">{'search_default_current': 1}</field>
|
||||
<field name="search_view_id" ref="view_scrum_product_backlog_search"/>
|
||||
@@ -193,8 +193,8 @@
|
||||
-->
|
||||
|
||||
<record id="view_scrum_sprint_tree" model="ir.ui.view">
|
||||
<field name="name">scrum.sprint.tree</field>
|
||||
<field name="model">scrum.sprint</field>
|
||||
<field name="name">project.scrum.sprint.tree</field>
|
||||
<field name="model">project.scrum.sprint</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree colors="blue:state in ('pending');grey:state in ('cancel','done')" string="Scrum Sprint">
|
||||
@@ -215,8 +215,8 @@
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_scrum_sprint_form" model="ir.ui.view">
|
||||
<field name="name">scrum.sprint.form</field>
|
||||
<field name="model">scrum.sprint</field>
|
||||
<field name="name">project.scrum.sprint.form</field>
|
||||
<field name="model">project.scrum.sprint</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Scrum Sprint">
|
||||
@@ -265,8 +265,8 @@
|
||||
</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="name">project.scrum.sprint.search</field>
|
||||
<field name="model">project.scrum.sprint</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Sprints">
|
||||
@@ -296,7 +296,7 @@
|
||||
|
||||
<record id="action_sprint_all_tree" model="ir.actions.act_window">
|
||||
<field name="name">Sprints</field>
|
||||
<field name="res_model">scrum.sprint</field>
|
||||
<field name="res_model">project.scrum.sprint</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_id" ref="view_scrum_sprint_tree"/>
|
||||
@@ -312,8 +312,8 @@
|
||||
-->
|
||||
|
||||
<record id="view_scrum_meeting_tree" model="ir.ui.view">
|
||||
<field name="name">scrum.meeting.tree</field>
|
||||
<field name="model">scrum.meeting</field>
|
||||
<field name="name">project.scrum.meeting.tree</field>
|
||||
<field name="model">project.scrum.meeting</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Scrum Sprint">
|
||||
@@ -324,7 +324,7 @@
|
||||
</record>
|
||||
<record id="view_scrum_meeting_form" model="ir.ui.view">
|
||||
<field name="name">Scrum Meeting</field>
|
||||
<field name="model">scrum.meeting</field>
|
||||
<field name="model">project.scrum.meeting</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Scrum Sprint">
|
||||
@@ -358,8 +358,8 @@
|
||||
</record>
|
||||
|
||||
<record id="view_scrum_meeting_search" model="ir.ui.view">
|
||||
<field name="name">scrum.meeting.search</field>
|
||||
<field name="model">scrum.meeting</field>
|
||||
<field name="name">project_scrum.meeting.search</field>
|
||||
<field name="model">project.scrum.meeting</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Scrum Sprint">
|
||||
@@ -383,7 +383,7 @@
|
||||
|
||||
<record id="action_meeting_form" model="ir.actions.act_window">
|
||||
<field name="name">Scrum Meetings</field>
|
||||
<field name="res_model">scrum.meeting</field>
|
||||
<field name="res_model">project.scrum.meeting</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="context">{'search_default_scrum_daily':1}</field>
|
||||
@@ -405,14 +405,14 @@
|
||||
</record>
|
||||
<record id="ir_scrum_sprint_open_task" model="ir.values">
|
||||
<field eval=" 'tree_but_open'" name="key2"/>
|
||||
<field eval="'scrum.sprint'" name="model"/>
|
||||
<field eval="'project.scrum.sprint'" name="model"/>
|
||||
<field name="name">View sprint tasks</field>
|
||||
<field eval="'ir.actions.act_window,'+str(action_sprint_task_open)" name="value"/>
|
||||
<field eval="True" name="object"/>
|
||||
</record>
|
||||
|
||||
<record id="action_sprint_backlog_open" model="ir.actions.act_window">
|
||||
<field name="res_model">scrum.product.backlog</field>
|
||||
<field name="res_model">project.scrum.product.backlog</field>
|
||||
<field name="name">View sprint backlog</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
@@ -420,7 +420,7 @@
|
||||
</record>
|
||||
<record id="ir_scrum_sprint_open_sprint" model="ir.values">
|
||||
<field eval=" 'tree_but_open'" name="key2"/>
|
||||
<field eval="'scrum.sprint'" name="model"/>
|
||||
<field eval="'project.scrum.sprint'" name="model"/>
|
||||
<field name="name">View sprint backlog</field>
|
||||
<field eval="'ir.actions.act_window,'+str(action_sprint_backlog_open)" name="value"/>
|
||||
<field eval="True" name="object"/>
|
||||
@@ -431,7 +431,7 @@
|
||||
-->
|
||||
|
||||
<record id="dblc_proj" model="ir.actions.act_window">
|
||||
<field name="res_model">scrum.product.backlog</field>
|
||||
<field name="res_model">project.scrum.product.backlog</field>
|
||||
<field name="name">View project's backlog</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
@@ -439,7 +439,7 @@
|
||||
</record>
|
||||
<record id="ir_scrum_project_backlog" model="ir.values">
|
||||
<field eval=" 'tree_but_open'" name="key2"/>
|
||||
<field eval="'scrum.project'" name="model"/>
|
||||
<field eval="'project.scrum.project'" name="model"/>
|
||||
<field name="name">View project's backlog</field>
|
||||
<field eval="'ir.actions.act_window,'+str(dblc_proj)" name="value"/>
|
||||
<field eval="True" name="object"/>
|
||||
@@ -453,7 +453,7 @@
|
||||
</record>
|
||||
<record id="ir_scrum_project_task" model="ir.values">
|
||||
<field eval=" 'tree_but_open'" name="key2"/>
|
||||
<field eval="'scrum.project'" name="model"/>
|
||||
<field eval="'project.scrum.project'" name="model"/>
|
||||
<field name="name">View project's tasks</field>
|
||||
<field eval="'ir.actions.act_window,'+str(dblc_proj2)" name="value"/>
|
||||
<field eval="True" name="object"/>
|
||||
@@ -509,6 +509,7 @@
|
||||
<field name="project_id" position="after">
|
||||
<field name="sprint_id" context="{'sprint_invisible':False}">
|
||||
<filter icon="terp-check" string="Current" context="{'sprint_invisible':False}" domain="[('sprint_id.state','in',('draft','open'))]" help="Current Sprints"/>
|
||||
<filter icon="terp-check" string="Current" context="{'sprint_invisible':False}" domain="[]" help="View Sprints"/>
|
||||
</field>
|
||||
</field>
|
||||
</field>
|
||||
@@ -532,8 +533,8 @@
|
||||
domain="[('sprint_id', '=', active_id)]"
|
||||
id="act_scrum_sprint_2_product_backlog"
|
||||
name="Backlogs"
|
||||
res_model="scrum.product.backlog"
|
||||
src_model="scrum.sprint"
|
||||
res_model="project.scrum.product.backlog"
|
||||
src_model="project.scrum.sprint"
|
||||
view_mode="tree,form"
|
||||
view_type="form"/>
|
||||
|
||||
@@ -542,7 +543,7 @@
|
||||
id="act_scrum_sprint_2_project_task"
|
||||
name="Tasks"
|
||||
res_model="project.task"
|
||||
src_model="scrum.sprint"
|
||||
src_model="project.scrum.sprint"
|
||||
view_mode="tree,form"
|
||||
view_type="form"/>
|
||||
|
||||
+2
-2
@@ -48,9 +48,9 @@ class report_tasks(report_int):
|
||||
canv = canvas.init(fname=io, format='pdf')
|
||||
canv.set_author("Open ERP")
|
||||
|
||||
cr.execute('select id,date_start,date_stop from scrum_sprint where id=%s', (datas['id'],))
|
||||
cr.execute('select id,date_start,date_stop from project_scrum_sprint where id=%s', (datas['id'],))
|
||||
for (id,date_start,date_stop) in cr.fetchall():
|
||||
cr.execute('select id from project_task where product_backlog_id in(select id from scrum_product_backlog where sprint_id=%s)', (id,))
|
||||
cr.execute('select id from project_task where product_backlog_id in(select id from project_scrum_product_backlog where sprint_id=%s)', (id,))
|
||||
|
||||
ids = map(lambda x: x[0], cr.fetchall())
|
||||
datas = _burndown.compute_burndown(cr, uid, ids, date_start, date_stop)
|
||||
@@ -0,0 +1,9 @@
|
||||
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
|
||||
"access_scrum_sprint","project_scrum.sprint","model_project_scrum_sprint","project.group_project_user",1,0,0,0
|
||||
"access_scrum_product_backlog","project_scrum.product.backlog","model_project_scrum_product_backlog","project.group_project_user",1,1,1,1
|
||||
"access_scrum_meeting","project_scrum.meeting","model_project_scrum_meeting","project.group_project_user",1,0,0,0
|
||||
"access_scrum_meeting_manager","project_scrum.meeting.manager","model_project_scrum_meeting","project.group_project_manager",1,1,1,1
|
||||
"access_scrum_sprint_manager","project_scrum.sprint.manager","model_project_scrum_sprint","project.group_project_manager",1,1,1,1
|
||||
"access_scrum_product_backlog_manager","project_scrum.product.backlog manager","model_project_scrum_product_backlog","project.group_project_manager",1,1,1,1
|
||||
"access_product_uom_project_manager","product.uom project manager","product.model_product_uom","project.group_project_manager",1,1,1,1
|
||||
"access_product_uom_project_user","product.uom project user","product.model_product_uom","project.group_project_user",1,0,0,0
|
||||
|
@@ -19,9 +19,9 @@
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import scrum_backlog_create_task
|
||||
import scrum_backlog_sprint
|
||||
import scrum_backlog_merger
|
||||
import project_scrum_backlog_create_task
|
||||
import project_scrum_backlog_sprint
|
||||
import project_scrum_backlog_merger
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
+2
-2
@@ -21,7 +21,7 @@
|
||||
from osv import osv, fields
|
||||
|
||||
class backlog_create_task(osv.osv_memory):
|
||||
_name = 'backlog.create.task'
|
||||
_name = 'project.scrum.backlog.create.task'
|
||||
_description = 'Create Tasks from Product Backlogs'
|
||||
_columns = {
|
||||
'user_id': fields.many2one('res.users', 'Assign To')
|
||||
@@ -30,7 +30,7 @@ class backlog_create_task(osv.osv_memory):
|
||||
def do_create(self, cr, uid, ids, context=None):
|
||||
mod_obj = self.pool.get('ir.model.data')
|
||||
task = self.pool.get('project.task')
|
||||
backlog_id = self.pool.get('scrum.product.backlog')
|
||||
backlog_id = self.pool.get('project.scrum.product.backlog')
|
||||
ids_task = []
|
||||
|
||||
if context is None:
|
||||
+6
-6
@@ -3,8 +3,8 @@
|
||||
<data>
|
||||
|
||||
<record id="view_scrum_backlog_to_task" model="ir.ui.view">
|
||||
<field name="name">backlog.create.task.form</field>
|
||||
<field name="model">backlog.create.task</field>
|
||||
<field name="name">project.scrum.backlog.create.task.form</field>
|
||||
<field name="model">project.scrum.backlog.create.task</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Create Tasks">
|
||||
@@ -23,21 +23,21 @@
|
||||
<record id="action_scrum_backlog_to_task" model="ir.actions.act_window">
|
||||
<field name="name">Create Tasks</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">backlog.create.task</field>
|
||||
<field name="res_model">project.scrum.backlog.create.task</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.values" id="scrum_backlog_to_task_values">
|
||||
<field name="model_id" ref="model_scrum_product_backlog" />
|
||||
<field name="model_id" ref="model_project_scrum_product_backlog" />
|
||||
<field name="object" eval="1" />
|
||||
<field name="name">Create Tasks</field>
|
||||
<field name="key2">client_action_multi</field>
|
||||
<field name="value" eval="'ir.actions.act_window,' + str(ref('action_scrum_backlog_to_task'))" />
|
||||
<field name="key">action</field>
|
||||
<field name="model">scrum.product.backlog</field>
|
||||
<field name="model">project.scrum.product.backlog</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
</openerp>
|
||||
+6
-6
@@ -21,15 +21,15 @@
|
||||
from osv import osv, fields
|
||||
from tools.translate import _
|
||||
|
||||
class scrum_backlog_merge(osv.osv_memory):
|
||||
_name = 'scrum.backlog.merge'
|
||||
class project_scrum_backlog_merge(osv.osv_memory):
|
||||
_name = 'project.scrum.backlog.merge'
|
||||
_description = 'Merge Product Backlogs'
|
||||
_columns = {
|
||||
'project_id': fields.many2one('project.project', 'Project', help="Select project for the new product backlog"),
|
||||
}
|
||||
|
||||
def check_backlogs(self, cr, uid, ids, context=None):
|
||||
backlog_obj = self.pool.get('scrum.product.backlog')
|
||||
backlog_obj = self.pool.get('project.scrum.product.backlog')
|
||||
mod_obj = self.pool.get('ir.model.data')
|
||||
p_list = []
|
||||
if context is None:
|
||||
@@ -50,7 +50,7 @@ class scrum_backlog_merge(osv.osv_memory):
|
||||
'context': context,
|
||||
'view_type': 'form',
|
||||
'view_mode': 'form',
|
||||
'res_model': 'scrum.backlog.merge',
|
||||
'res_model': 'project.scrum.backlog.merge',
|
||||
'views': [(resource_id,'form')],
|
||||
'type': 'ir.actions.act_window',
|
||||
'target': 'new',
|
||||
@@ -58,7 +58,7 @@ class scrum_backlog_merge(osv.osv_memory):
|
||||
return self.do_merge(cr, uid, ids, context=context)
|
||||
|
||||
def do_merge(self, cr, uid, ids, context=None):
|
||||
backlog_obj = self.pool.get('scrum.product.backlog')
|
||||
backlog_obj = self.pool.get('project.scrum.product.backlog')
|
||||
task_obj = self.pool.get('project.task')
|
||||
task_lines = []
|
||||
new_exp_hour = []
|
||||
@@ -99,5 +99,5 @@ class scrum_backlog_merge(osv.osv_memory):
|
||||
backlog_obj.unlink(cr, uid, context['active_ids'], context=context)
|
||||
return {}
|
||||
|
||||
scrum_backlog_merge()
|
||||
project_scrum_backlog_merge()
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
+5
-5
@@ -3,7 +3,7 @@
|
||||
<data>
|
||||
<record id="scrum_backlog_merge_view" model="ir.ui.view">
|
||||
<field name="name">Merge Backlogs</field>
|
||||
<field name="model">scrum.backlog.merge</field>
|
||||
<field name="model">project.scrum.backlog.merge</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Merge Backlogs">
|
||||
@@ -19,7 +19,7 @@
|
||||
<record id="action_scrum_backlog_merge" model="ir.actions.act_window">
|
||||
<field name="name">Merge Backlogs</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">scrum.backlog.merge</field>
|
||||
<field name="res_model">project.scrum.backlog.merge</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
@@ -27,18 +27,18 @@
|
||||
</record>
|
||||
|
||||
<record model="ir.values" id="scrum_backlog_merge_values">
|
||||
<field name="model_id" ref="model_scrum_product_backlog" />
|
||||
<field name="model_id" ref="model_project_scrum_product_backlog" />
|
||||
<field name="object" eval="1" />
|
||||
<field name="name">Merge Backlogs</field>
|
||||
<field name="key2">client_action_multi</field>
|
||||
<field name="value" eval="'ir.actions.act_window,' + str(ref('action_scrum_backlog_merge'))" />
|
||||
<field name="key">action</field>
|
||||
<field name="model">scrum.product.backlog</field>
|
||||
<field name="model">project.scrum.product.backlog</field>
|
||||
</record>
|
||||
|
||||
<record id="scrum_merge_project_id_view" model="ir.ui.view">
|
||||
<field name="name">Merge Backlogs</field>
|
||||
<field name="model">scrum.backlog.merge</field>
|
||||
<field name="model">project.scrum.backlog.merge</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Merge Backlogs">
|
||||
+4
-4
@@ -22,10 +22,10 @@ from osv import osv, fields
|
||||
from tools.translate import _
|
||||
|
||||
class backlog_sprint_assign(osv.osv_memory):
|
||||
_name = 'backlog.assign.sprint'
|
||||
_name = 'project.scrum.backlog.assign.sprint'
|
||||
_description = 'Assign sprint to backlogs'
|
||||
_columns = {
|
||||
'sprint_id': fields.many2one('scrum.sprint', 'Sprint Name', required=True),
|
||||
'sprint_id': fields.many2one('project.scrum.sprint', 'Sprint Name', required=True),
|
||||
'state_open': fields.boolean('Set Open', help="Change the state of product backlogs to open if its in draft state"),
|
||||
'convert_to_task': fields.boolean('Convert To Task', help="Create Task for Product Backlog")
|
||||
}
|
||||
@@ -35,8 +35,8 @@ class backlog_sprint_assign(osv.osv_memory):
|
||||
}
|
||||
|
||||
def assign_sprint(self, cr, uid, ids, context=None):
|
||||
backlog_obj = self.pool.get('scrum.product.backlog')
|
||||
sprint_obj = self.pool.get('scrum.sprint')
|
||||
backlog_obj = self.pool.get('project.scrum.product.backlog')
|
||||
sprint_obj = self.pool.get('project.scrum.sprint')
|
||||
task = self.pool.get('project.task')
|
||||
backlog_ids = []
|
||||
if context is None:
|
||||
+5
-5
@@ -3,8 +3,8 @@
|
||||
<data>
|
||||
|
||||
<record id="view_scrum_backlog_to_sprint" model="ir.ui.view">
|
||||
<field name="name">backlog.assign.sprint.form</field>
|
||||
<field name="model">backlog.assign.sprint</field>
|
||||
<field name="name">project.scrum.backlog.assign.sprint.form</field>
|
||||
<field name="model">project.scrum.backlog.assign.sprint</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Assign Sprint">
|
||||
@@ -30,20 +30,20 @@
|
||||
<record id="action_scrum_backlog_to_sprint" model="ir.actions.act_window">
|
||||
<field name="name">Assign Sprint</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">backlog.assign.sprint</field>
|
||||
<field name="res_model">project.scrum.backlog.assign.sprint</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.values" id="scrum_backlog_to_sprint_values">
|
||||
<field name="model_id" ref="model_scrum_product_backlog" />
|
||||
<field name="model_id" ref="model_project_scrum_product_backlog" />
|
||||
<field name="object" eval="1" />
|
||||
<field name="name">Assign Sprint</field>
|
||||
<field name="key2">client_action_multi</field>
|
||||
<field name="value" eval="'ir.actions.act_window,' + str(ref('action_scrum_backlog_to_sprint'))" />
|
||||
<field name="key">action</field>
|
||||
<field name="model">scrum.product.backlog</field>
|
||||
<field name="model">project.scrum.product.backlog</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
@@ -1,9 +0,0 @@
|
||||
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
|
||||
"access_scrum_sprint","scrum.sprint","model_scrum_sprint","project.group_project_user",1,0,0,0
|
||||
"access_scrum_product_backlog","scrum.product.backlog","model_scrum_product_backlog","project.group_project_user",1,1,1,1
|
||||
"access_scrum_meeting","scrum.meeting","model_scrum_meeting","project.group_project_user",1,0,0,0
|
||||
"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_product_uom_project_manager","product.uom project manager","product.model_product_uom","project.group_project_manager",1,1,1,1
|
||||
"access_product_uom_project_user","product.uom project user","product.model_product_uom","project.group_project_user",1,0,0,0
|
||||
|
Reference in New Issue
Block a user