bzr revid: hmo@tinyerp.com-20101013075120-yktqh6ot7y01b50v
This commit is contained in:
Harry (OpenERP) 2010-10-13 13:21:20 +05:30
commit db43747c75
16 changed files with 368 additions and 102 deletions

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
#
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
@ -15,7 +15,7 @@
# 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/>.
#
##############################################################################
@ -29,7 +29,7 @@ from tools.translate import _
class document_directory(osv.osv):
_name = 'document.directory'
_description = 'Directory'
_order = 'name desc'
_order = 'name'
_columns = {
'name': fields.char('Name', size=64, required=True, select=1),
'write_date': fields.datetime('Date Modified', readonly=True),
@ -44,13 +44,13 @@ class document_directory(osv.osv):
'child_ids': fields.one2many('document.directory', 'parent_id', 'Children'),
'file_ids': fields.one2many('ir.attachment', 'parent_id', 'Files'),
'content_ids': fields.one2many('document.directory.content', 'directory_id', 'Virtual Files'),
'type': fields.selection([
'type': fields.selection([
('directory','Static Directory'),
('ressource','Folders per resource'),
],
'Type', required=True, select=1,
help="Defines directory's behaviour."),
help="Each directory can either have the type Static or be linked to another resource. A static directory, as with Operating Systems, is the classic directory that can contain a set of files. The directories linked to systems resources automatically possess sub-directories for each of resource types defined in the parent directory."),
'ressource_type_id': fields.many2one('ir.model', 'Resource model',
help="Select an object here and there will be one folder per record of that resource."),
'resource_field': fields.many2one('ir.model.fields', 'Name field', help='Field to be used as name on resource directories. If empty, the "name" will be used.'),
@ -95,13 +95,13 @@ class document_directory(osv.osv):
return objid.browse(cr, uid, mid, context=context).res_id
except Exception:
return None
_defaults = {
'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'document.directory', context=c),
'user_id': lambda self,cr,uid,ctx: uid,
'domain': lambda self,cr,uid,ctx: '[]',
'type': lambda *args: 'directory',
'ressource_id': lambda *a: 0,
'ressource_id': lambda *a: 0,
'storage_id': _get_def_storage,
'resource_find_all': True,
}
@ -151,7 +151,7 @@ class document_directory(osv.osv):
_constraints = [
(_check_recursion, 'Error! You can not create recursive Directories.', ['parent_id'])
]
def __init__(self, *args, **kwargs):
super(document_directory, self).__init__(*args, **kwargs)
@ -172,7 +172,7 @@ class document_directory(osv.osv):
"""
if not context:
context = {}
return nodes.get_node_context(cr, uid, context).get_uri(cr, uri)
def get_dir_permissions(self, cr, uid, ids ):
@ -180,7 +180,7 @@ class document_directory(osv.osv):
"""
assert len(ids) == 1
id = ids[0]
cr.execute( "SELECT count(dg.item_id) AS needs, count(ug.uid) AS has " \
" FROM document_directory_group_rel dg " \
" LEFT OUTER JOIN res_groups_users_rel ug " \
@ -197,7 +197,7 @@ class document_directory(osv.osv):
Return a tuple (node_dir, remaining_path)
"""
return (nodes.node_database(context=ncontext), uri)
def copy(self, cr, uid, id, default=None, context=None):
if not default:
default ={}

View File

@ -148,6 +148,7 @@
<field name="name"/>
<field name="type"/>
<field name="user_id"/>
<field name="storage_id"/>
<field name="create_date"/>
<field name="write_date"/>
</tree>
@ -403,15 +404,11 @@
src_model="res.partner"
groups="base.group_extended"/>
<act_window
context="{'search_default_parent_id': [active_id]}"
id="zoom_directory" name="Related Documents"
<act_window
domain="[('parent_id', '=', active_id)]"
id="zoom_directory" name="Related Documents"
res_model="ir.attachment"
src_model="document.directory"/>
</data>
</openerp>

View File

@ -114,7 +114,7 @@
<field name="name" string="Project Name"/>
<field name="user_id" string="Project Manager" default="1">
<filter domain="[('user_id','=',uid)]" help="Projects in which I am a manage" icon="terp-personal"/>
</field>
</field>
<field name="partner_id" string="Partner"/>
</group>
<newline />
@ -380,7 +380,7 @@
<field name="arch" type="xml">
<search string="Task Edition">
<group col="20" colspan="4">
<filter string="Current" domain="[('state','in',('open','draft'))]" name="current" help="Draft, In Progress and Pending Tasks" icon="terp-check" default="1"/>
<filter string="Current" domain="[('state','in',('open','draft'))]" name="current" help="Draft and In Progress tasks" icon="terp-check" default="1"/>
<filter string="In Progress" domain="[('state','=','open')]" help="In Progress Tasks" icon="terp-camera_test"/>
<filter string="Pending" domain="[('state','=','pending')]" context="{'show_delegated':False}" help="Pending Tasks" icon="terp-gtk-media-pause"/>
<separator orientation="vertical"/>

View File

@ -91,7 +91,7 @@
<field name="project_id">
<filter icon="terp-folder-blue"
string="My Projects"
help="My Projects" domain="[('project_id','=',uid)]"/>
help="My Projects" domain="[('project_id.user_id','=',uid)]"/>
</field>
<field name="user_id" widget="selection">

View File

@ -18,7 +18,7 @@
<group colspan="2" col="2">
<separator string="Validation Task" colspan="4"/>
<field name="planned_hours_me" widget="float_time" colspan="4"/>
<field name="prefix" string="Validatation Task Title" colspan="4"/>
<field name="prefix" string="Validation Task Title" colspan="4"/>
<field name="state" colspan="4"/>
</group>
<separator string="" colspan="4"/>

View File

@ -170,7 +170,7 @@ class project_issue(crm.crm_case, osv.osv):
progress = task_pool._hours_get(cr, uid, [issue.task_id.id], field_names, args, context=context)[issue.task_id.id]['progress']
res[issue.id] = {'progress' : progress}
return res
_columns = {
'id': fields.integer('ID'),
'name': fields.char('Issue', size=128, required=True),
@ -201,7 +201,7 @@ class project_issue(crm.crm_case, osv.osv):
'canal_id': fields.many2one('res.partner.canal', 'Channel', help="The channels represent the different communication modes available with the customer." \
" With each commercial opportunity, you can indicate the canall which is this opportunity source."),
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('object_id.model', '=', 'crm.project.bug')]"),
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Severity'),
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'),
'version_id': fields.many2one('project.issue.version', 'Version'),
'partner_name': fields.char("Employee's Name", size=64),
'partner_mobile': fields.char('Mobile', size=32),
@ -313,7 +313,6 @@ class project_issue(crm.crm_case, osv.osv):
def convert_to_bug(self, cr, uid, ids, context=None):
return self._convert(cr, uid, ids, 'bug_categ', context=context)
def next_type(self, cr, uid, ids, *args):
for task in self.browse(cr, uid, ids):
typeid = task.type_id.id
@ -339,7 +338,7 @@ class project_issue(crm.crm_case, osv.osv):
def onchange_task_id(self, cr, uid, ids, task_id, context=None):
if context is None:
context = {}
result = {}
result = {}
if not task_id:
return {'value':{}}
task = self.pool.get('project.task').browse(cr, uid, task_id, context)
@ -464,7 +463,7 @@ class project_issue(crm.crm_case, osv.osv):
@param **args: Return Dictionary of Keyword Value
"""
return True
def copy(self, cr, uid, id, default=None, context=None):
if not context:
context={}

View File

@ -1,11 +1,11 @@
<?xml version="1.0" ?>
<openerp>
<data noupdate="1">
<!--
<!--
This Demo data file includes Users, Human Resources, Projects and it' members list, Phases and Resources,Tasks allocation and also run scheduling of phase and tasks.
-->
<!-- Users -->
<record id="res_users_analyst" model="res.users">
<field name="name">Phuong</field>
<field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_manager')])]" name="groups_id"/>
@ -91,8 +91,8 @@ This Demo data file includes Users, Human Resources, Projects and it' members li
<field name="name">Project Finacial Manager</field>
<field name="calendar_id" ref="resource.timesheet_group1"/>
</record>
<!-- Projects -->
<record id="project_integrate_openerp" model="project.project">
@ -101,12 +101,12 @@ This Demo data file includes Users, Human Resources, Projects and it' members li
<field name="type">normal</field>
<field name="description">Integrate an Sale and Warehouse Management.</field>
<field eval="[(6, 0, [
ref('res_users_analyst'),
ref('res_users_project_manager'),
ref('res_users_technical_leader'),
ref('res_users_developer'),
ref('res_users_designer'),
ref('res_users_tester'),
ref('res_users_analyst'),
ref('res_users_project_manager'),
ref('res_users_technical_leader'),
ref('res_users_developer'),
ref('res_users_designer'),
ref('res_users_tester'),
ref('res_users_finacial_manager')])]" name="members"/>
<field name="user_id" ref="res_users_project_manager"/>
<field name="name">Integrate an Sale and Warehouse Management.</field>
@ -213,7 +213,7 @@ This Demo data file includes Users, Human Resources, Projects and it' members li
<field name="resource_id" ref="resource_project_manager"/>
<field name="phase_id" ref="project_phase_5"/>
</record>
<record id="resource_allocation_9" model="project.resource.allocation">
<field name="resource_id" ref="resource_analyst"/>
<field name="phase_id" ref="project_phase_6"/>

View File

@ -276,8 +276,6 @@
<field name="arch" type="xml">
<search string="Planning statistics">
<group col="10" colspan="4">
<filter icon="gtk-execute" string="My" domain="[('user_id','=',uid),('planning_id.state','&lt;&gt;','cancel')]" help="My Plannings Statistics"/>
<separator orientation="vertical"/>
<field name="planning_id" select="1"/>
<field name="user_id" select="1"/>
<field name="account_id" select="1" groups="analytic.group_analytic_accounting"/>
@ -299,6 +297,10 @@
parent="hr.menu_hr_reporting" />
<menuitem action="action_account_analytic_planning_stat_form"
id="menu_report_account_analytic_planning_stat" parent="next_id_85" />
<menuitem action="action_account_analytic_planning_stat_form"
icon="terp-graph"
id="menu_board_planning"
parent="project.next_id_86"/>
<!-- Analytic account Form -->

View File

@ -54,6 +54,7 @@
'project_scrum_report.xml',
'wizard/project_scrum_backlog_create_task_view.xml',
'wizard/project_scrum_backlog_merger_view.xml',
'wizard/project_scrum_postpone_view.xml',
'project_scrum_view.xml',
'wizard/project_scrum_backlog_sprint_view.xml',
'process/project_scrum_process.xml',

View File

@ -6,7 +6,7 @@
<field name="model">project.scrum.sprint</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Scrum Sprint">
<tree string="Sprints">
<field name="name"/>
<field name="project_id"/>
<field name="scrum_master_id"/>
@ -14,7 +14,6 @@
<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="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"/>
@ -26,8 +25,46 @@
</tree>
</field>
</record>
<record id="view_task_progress_graph" model="ir.ui.view">
<field name="name">project.task.graph</field>
<field name="model">project.task</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Task Progress" type="bar">
<field name="sprint_id"/>
<field name="effective_hours" operator="+"/>
<field name="planned_hours" operator="+"/>
</graph>
</field>
</record>
<record id="action_view_task_progress_graph" model="ir.actions.act_window">
<field name="name">Task Progress</field>
<field name="res_model">project.task</field>
<field name="view_type">form</field>
<field name="view_mode">graph</field>
<field name="view_id" ref="view_task_progress_graph"/>
</record>
<record id="view_backlog_progress_graph" model="ir.ui.view">
<field name="name">project.scrum.sprint.graph</field>
<field name="model">project.scrum.product.backlog</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Backlog Progress" type="bar">
<field name="sprint_id"/>
<field name="effective_hours" operator="+"/>
<field name="expected_hours" operator="+"/>
</graph>
</field>
</record>
<record id="action_view_backlog_progress_graph" model="ir.actions.act_window">
<field name="name">Backlog Progress</field>
<field name="res_model">project.scrum.product.backlog</field>
<field name="view_type">form</field>
<field name="view_mode">graph</field>
</record>
<record id="action_sprint_all_dashboard_tree" model="ir.actions.act_window">
<field name="name">Sprint's List</field>
<field name="name">Sprints</field>
<field name="res_model">project.scrum.sprint</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
@ -41,8 +78,12 @@
<form string="My Board">
<hpaned>
<child1>
<action colspan="4" height="220" name="%(action_sprint_all_dashboard_tree)d" string="Sprints" width="510"/>
<action colspan="4" height="220" name="%(action_sprint_all_dashboard_tree)d" string="Sprints" width="510"/>
</child1>
<child2>
<action colspan="4" height="220" name="%(action_view_task_progress_graph)d" string="Task Progress" width="510"/>
<action colspan="4" height="220" name="%(action_view_backlog_progress_graph)d" string="Backlog Progress" width="510"/>
</child2>
</hpaned>
</form>
</field>

View File

@ -43,7 +43,7 @@ project_scrum_project()
class project_scrum_sprint(osv.osv):
_name = 'project.scrum.sprint'
_description = 'Project Scrum Sprint'
_order = 'date_start'
def _compute(self, cr, uid, ids, fields, arg, context=None):
res = {}.fromkeys(ids, 0.0)
progress = {}

View File

@ -1,26 +1,143 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<!-- Resource: project.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')]"/>
<field name="expected_hours">156.0</field>
<field name="name">OpenERP - dev branch</field>
<field model="res.users" name="product_owner_id" search="[('login','=','demo')]"/>
</record>
<!-- Resource: project_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')]"/>
<record id="scrum_sprint_0" model="project.scrum.sprint">
<field name="name">Sprint 1</field>
<field name="date_start" eval="time.strftime('%Y-01-01')"></field>
<field name="date_stop" eval="time.strftime('%Y-01-15')"></field>
<field name="project_id" ref="project.project_project_9"/>
<field name="product_owner_id" ref="base.user_root"/>
<field name="project_id" ref="scrum_project_1"/>
<field model="res.users" name="scrum_master_id" search="[('login','=','admin')]"/>
<field name="state">open</field>
</record>
<record id="scrum_sprint_1" model="project.scrum.sprint">
<field name="name">Sprint 2</field>
<field name="date_start" eval="time.strftime('%Y-01-16')"></field>
<field name="date_stop" eval="time.strftime('%Y-01-31')"></field>
<field name="expected_hours">100.0</field>
<field name="project_id" ref="project.project_project_9"/>
<field name="product_owner_id" ref="base.user_root"/>
<field model="res.users" name="scrum_master_id" search="[('login','=','demo')]"/>
<field name="state">open</field>
</record>
<record id="scrum_sprint_2" model="project.scrum.sprint">
<field name="name">Sprint 3</field>
<field name="date_start" eval="time.strftime('%Y-02-01')"></field>
<field name="date_stop" eval="time.strftime('%Y-02-15')"></field>
<field name="expected_hours">89.0</field>
<field name="project_id" ref="project.project_project_9"/>
<field name="product_owner_id" ref="base.user_root"/>
<field model="res.users" name="scrum_master_id" search="[('login','=','demo')]"/>
<field name="state">open</field>
</record>
<record id="scrum_sprint_3" model="project.scrum.sprint">
<field name="name">Sprint 4</field>
<field name="date_start" eval="time.strftime('%Y-02-16')"></field>
<field name="date_stop" eval="time.strftime('%Y-02-28')"></field>
<field name="expected_hours">125.0</field>
<field name="project_id" ref="project.project_project_9"/>
<field name="product_owner_id" ref="base.user_root"/>
<field model="res.users" name="scrum_master_id" search="[('login','=','admin')]"/>
<field name="state">open</field>
</record>
<record id="scrum_sprint_4" model="project.scrum.sprint">
<field name="name">Sprint 5</field>
<field name="date_start" eval="time.strftime('%Y-03-01')"></field>
<field name="date_stop" eval="time.strftime('%Y-03-15')"></field>
<field name="expected_hours">178.0</field>
<field name="project_id" ref="project.project_project_9"/>
<field name="product_owner_id" ref="base.user_root"/>
<field model="res.users" name="scrum_master_id" search="[('login','=','demo')]"/>
<field name="state">open</field>
</record>
<record id="scrum_sprint_5" model="project.scrum.sprint">
<field name="name">Sprint 6</field>
<field name="date_start" eval="time.strftime('%Y-03-16')"></field>
<field name="date_stop" eval="time.strftime('%Y-03-30')"></field>
<field name="project_id" ref="project.project_project_9"/>
<field name="expected_hours">200.0</field>
<field name="product_owner_id" ref="base.user_root"/>
<field model="res.users" name="scrum_master_id" search="[('login','=','admin')]"/>
<field name="state">open</field>
</record>
<record id="scrum_sprint_6" model="project.scrum.sprint">
<field name="name">Sprint 7</field>
<field name="date_start" eval="time.strftime('%Y-04-01')"></field>
<field name="date_stop" eval="time.strftime('%Y-04-15')"></field>
<field name="expected_hours">175.0</field>
<field name="project_id" ref="project.project_project_9"/>
<field name="product_owner_id" ref="base.user_root"/>
<field model="res.users" name="scrum_master_id" search="[('login','=','demo')]"/>
<field name="state">open</field>
</record>
<record id="scrum_sprint_7" model="project.scrum.sprint">
<field name="name">Sprint 8</field>
<field name="date_start" eval="time.strftime('%Y-04-16')"></field>
<field name="date_stop" eval="time.strftime('%Y-04-30')"></field>
<field name="project_id" ref="project.project_project_9"/>
<field name="product_owner_id" ref="base.user_root"/>
<field name="expected_hours">122.0</field>
<field model="res.users" name="scrum_master_id" search="[('login','=','admin')]"/>
<field name="state">open</field>
</record>
<record id="scrum_sprint_8" model="project.scrum.sprint">
<field name="name">Sprint 9</field>
<field name="date_start" eval="time.strftime('%Y-05-01')"></field>
<field name="date_stop" eval="time.strftime('%Y-05-15')"></field>
<field name="project_id" ref="project.project_project_9"/>
<field name="product_owner_id" ref="base.user_root"/>
<field model="res.users" name="scrum_master_id" search="[('login','=','demo')]"/>
<field name="state">open</field>
</record>
<record id="scrum_sprint_9" model="project.scrum.sprint">
<field name="name">Sprint 10</field>
<field name="date_start" eval="time.strftime('%Y-05-16')"></field>
<field name="date_stop" eval="time.strftime('%Y-05-30')"></field>
<field name="expected_hours">78.0</field>
<field name="project_id" ref="project.project_project_9"/>
<field name="product_owner_id" ref="base.user_root"/>
<field model="res.users" name="scrum_master_id" search="[('login','=','admin')]"/>
<field name="state">open</field>
</record>
<record id="scrum_sprint_10" model="project.scrum.sprint">
<field name="name">Sprint 11</field>
<field name="date_start" eval="time.strftime('%Y-06-01')"></field>
<field name="date_stop" eval="time.strftime('%Y-06-15')"></field>
<field name="project_id" ref="project.project_project_9"/>
<field name="product_owner_id" ref="base.user_root"/>
<field model="res.users" name="scrum_master_id" search="[('login','=','demo')]"/>
<field name="state">open</field>
</record>
<record id="scrum_sprint_11" model="project.scrum.sprint">
<field name="name">Sprint 12</field>
<field name="date_start" eval="time.strftime('%Y-06-16')"></field>
<field name="date_stop" eval="time.strftime('%Y-06-30')"></field>
<field name="project_id" ref="project.project_project_9"/>
<field name="product_owner_id" ref="base.user_root"/>
<field model="res.users" name="scrum_master_id" search="[('login','=','admin')]"/>
<field name="state">open</field>
</record>
<record id="scrum_sprint_12" model="project.scrum.sprint">
<field name="name">Sprint 13</field>
<field name="date_start" eval="time.strftime('%Y-07-1')"></field>
<field name="date_stop" eval="time.strftime('%Y-07-15')"></field>
<field name="project_id" ref="project.project_project_9"/>
<field name="product_owner_id" ref="base.user_root"/>
<field model="res.users" name="scrum_master_id" search="[('login','=','admin')]"/>
<field name="state">open</field>
</record>
@ -33,61 +150,107 @@
<field name="note">This new system will enable you to migrate automatically from an old version of OpenERP to a new one. This system will migrate not only the OpenERP system but also the customers particularities. This happens without any kind of script or programming. It has been possible to carry out such a system thanks to the descriptive approach of OpenERP components. </field>
<field name="sprint_id" ref="scrum_sprint_0"/>
<field name="state">done</field>
<field name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="project.project_project_9"/>
</record>
<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 OpenERP (financial accounting and management accounting) is being reshaped. New functionalities 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="sprint_id" ref="scrum_sprint_1"/>
<field name="state">open</field>
<field name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="project.project_project_9"/>
</record>
<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 OpenERP 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="sprint_id" ref="scrum_sprint_2"/>
<field name="state">open</field>
<field name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="project.project_project_9"/>
</record>
<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="sprint_id" ref="scrum_sprint_3"/>
<field name="state">done</field>
<field name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="project.project_project_9"/>
</record>
<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="sprint_id" ref="scrum_sprint_4"/>
<field name="state">open</field>
<field name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="project.project_project_9"/>
</record>
<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 OpenERP 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"/>
<field name="note">Test OpenERP to release stable 3.2.0 version. (may be 3.2.0-pre1 eval="time.strftime('%Y-%m-05 12:01:01')"?)</field>
<field name="sprint_id" ref="scrum_sprint_5"/>
<field name="project_id" ref="project.project_project_9"/>
</record>
<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 OpenERP menu to be more like other ERPs.</field>
<field name="sprint_id" ref="scrum_sprint_0"/>
<field name="sprint_id" ref="scrum_sprint_6"/>
<field name="state">open</field>
<field name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="project.project_project_9"/>
</record>
<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>
<field name="sprint_id" ref="scrum_sprint_0"/>
<field name="project_id" ref="scrum_project_1"/>
<field name="sprint_id" ref="scrum_sprint_7"/>
<field name="project_id" ref="project.project_project_9"/>
</record>
<record id="scrum_product_backlog_8" model="project.scrum.product.backlog">
<field name="name">Reshape the complete menu</field>
<field name="expected_hours">3.0</field>
<field name="note">Restructure the OpenERP menu to be more like other ERPs.</field>
<field name="sprint_id" ref="scrum_sprint_8"/>
<field name="state">open</field>
<field name="project_id" ref="project.project_project_9"/>
</record>
<record id="scrum_product_backlog_9" model="project.scrum.product.backlog">
<field name="name">Analysis Product phase</field>
<field name="expected_hours">10.0</field>
<field name="note">Restructure the OpenERP menu to be more like other ERPs.</field>
<field name="sprint_id" ref="scrum_sprint_9"/>
<field name="state">open</field>
<field name="project_id" ref="project.project_project_9"/>
</record>
<record id="scrum_product_backlog_10" model="project.scrum.product.backlog">
<field name="name">Rearrange the Menu</field>
<field name="expected_hours">9.0</field>
<field name="note">Restructure the OpenERP menu to be more like other ERPs.</field>
<field name="sprint_id" ref="scrum_sprint_10"/>
<field name="state">open</field>
<field name="project_id" ref="project.project_project_9"/>
</record>
<record id="scrum_product_backlog_11" model="project.scrum.product.backlog">
<field name="name">Complete change in list view</field>
<field name="expected_hours">8.0</field>
<field name="note">Restructure the OpenERP menu to be more like other ERPs.</field>
<field name="sprint_id" ref="scrum_sprint_11"/>
<field name="state">open</field>
<field name="project_id" ref="project.project_project_9"/>
</record>
<record id="scrum_product_backlog_12" model="project.scrum.product.backlog">
<field name="name">Reshape the complete menu</field>
<field name="expected_hours">2.0</field>
<field name="note">Set rule for Tax according to 2010-2011 Rules</field>
<field name="sprint_id" ref="scrum_sprint_12"/>
<field name="state">open</field>
<field name="project_id" ref="project.project_project_9"/>
</record>
<!-- Resource: project.task -->
@ -95,7 +258,7 @@
<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 name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="project.project_project_9"/>
<field name="name">Review all English Terms</field>
<field name="state">done</field>
<field eval="time.strftime('%Y-%m-%d')" name="date_close"/>
@ -104,7 +267,7 @@
<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 name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="project.project_project_9"/>
<field name="name">Review all french terms</field>
<field name="state">done</field>
<field eval="time.strftime('%Y-%m-%d')" name="date_close"/>
@ -113,7 +276,7 @@
<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 name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="project.project_project_9"/>
<field name="name">Analytic Accounting features</field>
<field name="state">done</field>
<field eval="time.strftime('%Y-%m-%d')" name="date_close"/>
@ -122,7 +285,7 @@
<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 name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="project.project_project_9"/>
<field name="name">Test and improve automatic migration system</field>
<field name="state">open</field>
<field name="product_backlog_id" ref="scrum_product_backlog_0"/>
@ -130,7 +293,7 @@
<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 name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="project.project_project_9"/>
<field name="name">General accounting features</field>
<field name="state">open</field>
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
@ -138,14 +301,14 @@
<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 name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="project.project_project_9"/>
<field name="name">Accounting Budgets</field>
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
</record>
<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 name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="project.project_project_9"/>
<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>
@ -155,14 +318,14 @@
<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 name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="project.project_project_9"/>
<field name="name">Accounting Report Budget</field>
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
</record>
<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 name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="project.project_project_9"/>
<field name="name">Accounting Report Analytic</field>
<field name="state">open</field>
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
@ -170,7 +333,7 @@
<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 name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="project.project_project_9"/>
<field name="name">Bugfix - memory leak</field>
<field name="state">done</field>
<field eval="time.strftime('%Y-%m-%d')" name="date_close"/>
@ -179,7 +342,7 @@
<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 name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="project.project_project_9"/>
<field name="name">Bugfix - Translations</field>
<field name="state">open</field>
<field eval="[(6,0,[ref('scrum_task_12')])]" name="child_ids"/>
@ -188,7 +351,7 @@
<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 name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="project.project_project_9"/>
<field name="name">Finish the automated plugin system</field>
<field name="state">pending</field>
<field name="product_backlog_id" ref="scrum_product_backlog_2"/>
@ -196,14 +359,14 @@
<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 name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="project.project_project_9"/>
<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="project.task">
<field name="planned_hours">5.0</field>
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
<field name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="project.project_project_9"/>
<field name="name">Test 3.2.0 before releasing</field>
<field name="state">open</field>
<field name="product_backlog_id" ref="scrum_product_backlog_5"/>
@ -211,7 +374,7 @@
<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 name="project_id" ref="scrum_project_1"/>
<field name="project_id" ref="project.project_project_9"/>
<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>

View File

@ -62,7 +62,7 @@
<field name="name" select="1"/>
<field name="project_id" select="1"/>
<field domain="[('project_id','=',project_id), ('state','in', ['draft','open'])]" name="sprint_id" select="1"/>
<button name="button_postpone" string="Postpone" type="object"
<button name="%(action_postpone_wizard)d" string="Postpone" type="action"
help="Postpone backlog" colspan="2"
icon="gtk-convert" attrs="{'invisible':[('state','=','done')]}"/>
<field name="user_id" select="1"/>
@ -141,7 +141,7 @@
<filter icon="terp-camera_test" string="Open" domain="[('state','=','open')]" help="Open Backlogs"/>
<filter icon="terp-gtk-media-pause" string="Pending" domain="[('state','=','pending')]" help="Pending Backlogs"/>
<separator orientation="vertical"/>
<filter string="Editable" icon="terp-folder-blue" domain="[]" context="{'set_editable':'1'}"/>
<filter string="Edit" icon="gtk-execute" domain="[]" context="{'set_editable':'1'}"/>
<separator orientation="vertical"/>
<field name="name"/>
<field name="project_id"/>
@ -192,19 +192,19 @@
<!--
Scrum Sprint
-->
<record id="view_scrum_sprint_calendar" model="ir.ui.view">
<field name="name">project.scrum.sprint.calendar</field>
<field name="model">project.scrum.sprint</field>
<field name="type">calendar</field>
<field name="arch" type="xml">
<calendar string="Scrum Sprint" date_start="date_start">
<calendar string="Scrum Sprint" date_start="date_start" date_stop="date_stop">
<field name="name"/>
<field name="project_id"/>
</calendar>
</field>
</record>
<record id="view_scrum_sprint_tree" model="ir.ui.view">
<field name="name">project.scrum.sprint.tree</field>
<field name="model">project.scrum.sprint</field>
@ -224,6 +224,8 @@
<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="terp-dialog-close"/>
<button type="object" string="Set to Draft" name="button_draft" states="cancel,done" icon="gtk-convert"/>
<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>
@ -347,7 +349,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar</field>
<field name="view_id" ref="view_scrum_sprint_tree"/>
<field name="context">{"search_default_filter_current": 1, "search_default_scrum_master_id":uid}</field>
<field name="context">{"search_default_filter_current": 1}</field>
<field name="search_view_id" ref="view_scrum_sprint_search"/>
</record>
<menuitem
@ -357,7 +359,7 @@
<!--
Daily Meeting
-->
<record id="view_scrum_meeting_calendar" model="ir.ui.view">
<field name="name">project.scrum.meeting.calendar</field>
<field name="model">project.scrum.meeting</field>
@ -369,7 +371,7 @@
</calendar>
</field>
</record>
<record id="view_scrum_meeting_tree" model="ir.ui.view">
<field name="name">project.scrum.meeting.tree</field>
<field name="model">project.scrum.meeting</field>

View File

@ -22,6 +22,7 @@
import project_scrum_backlog_create_task
import project_scrum_backlog_sprint
import project_scrum_backlog_merger
import project_scrum_postpone
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,32 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
#
##############################################################################
from osv import osv
from osv import fields
class postpone_wizard(osv.osv_memory):
_name = "postpone.wizard"
def button_postpone(self, cr, uid, ids, context=None):
if context is None:
context = {}
self.pool.get('project.scrum.product.backlog').button_postpone(cr, uid, context.get('active_ids',[]), context)
return {}
postpone_wizard()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record model="ir.ui.view" id="postpone_wizard_form">
<field name="name">postpone_wizard</field>
<field name="model">postpone.wizard</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Postpone Backlog">
<separator string="Postpone" colspan="4"/>
<label align="0.0" colspan="2" string="Are you sure to postpone Backlog ?"/>
<separator string="" colspan="4"/>
<group colspan="4">
<button special="cancel" type="object" string="Close" icon="gtk-cancel"/>
<button name="button_postpone" type="object" string="Ok" icon="gtk-apply"/>
</group>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="action_postpone_wizard">
<field name="name">Postpone</field>
<field name="res_model">postpone.wizard</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</data>
</openerp>