[IMP]:improved project task and project_gtd view set them according to context

bzr revid: nch@tinyerp.com-20100204061310-w7zxlxd4uquc98j0
This commit is contained in:
nch@tinyerp.com 2010-02-04 11:43:10 +05:30
parent 6d728c723d
commit fbfdca6eb0
3 changed files with 32 additions and 53 deletions

View File

@ -361,22 +361,24 @@
<tree colors="grey:state in ('cancelled','done');blue:remaining_hours&lt;0;red:bool(date_deadline) and (date_deadline&lt;current_date) and (state in ('draft','open'));black:state not in ('cancelled','done')" string="Tasks">
<field name="sequence" invisible="1"/>
<field name="name"/>
<field name="project_id" icon="gtk-indent"/>
<field name="project_id" icon="gtk-indent" invisible="context.get('set_visible',False)"/>
<field name="user_id"/>
<field name="remaining_hours" widget="float_time" sum="Remaining Hours"/>
<field name="date_deadline"/>
<field name="type" groups="base.group_extended"/>
<button name="next_type"
<field name="remaining_hours" widget="float_time" sum="Remaining Hours" invisible="context.get('set_visible',False)"/>
<field name="date_deadline" invisible="context.get('set_visible',False)"/>
<field name="type" groups="base.group_extended" invisible="context.get('set_visible',False)"/>
<field name="date_start" invisible="1"/>
<field name="date_end" invisible="1"/>
<button name="next_type" invisible="context.get('set_visible',False)"
states="draft,open,pending"
string="Change Stage"
type="object"
icon="gtk-go-forward"
groups="base.group_extended"
help="Change Type"/>
<field name="progress" widget="progressbar"/>
<field name="state"/>
<button name="do_open" states="pending,draft" string="Start Task" type="object" icon="gtk-execute" help="For changing to open state"/>
<button groups="base.group_extended" name="%(wizard_delegate_task)d" states="pending,open,draft" string="Delegate" type="action" icon="gtk-execute" help="For changing to delegate state"/>
<field name="progress" widget="progressbar" invisible="context.get('set_visible',False)"/>
<field name="state" invisible="context.get('set_visible',False)"/>
<button name="do_open" states="pending,draft" string="Start Task" type="object" icon="gtk-execute" help="For changing to open state" invisible="context.get('set_visible',False)"/>
<button groups="base.group_extended" name="%(wizard_delegate_task)d" states="pending,open,draft" string="Delegate" type="action" icon="gtk-execute" help="For changing to delegate state" />
<button name="%(wizard_close_task)d" states="pending,open" string="Done" type="action" icon="gtk-jump-to" help="For changing to done state"/>
<button name="do_cancel" states="draft,open,pending" string="Cancel" type="object" icon="gtk-cancel" help="For cancelling the task"/>
</tree>

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/>.
#
##############################################################################
@ -49,7 +49,7 @@ class project_gtd_context(osv.osv):
'sequence': lambda *args: 1
}
_order = "sequence, name"
project_gtd_context()
@ -61,7 +61,7 @@ class project_gtd_timebox(osv.osv):
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of timebox."),
'icon': fields.selection(tools.icons, 'Icon', size=64),
}
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
res = super(project_gtd_timebox,self).fields_view_get(cr, uid, view_id, view_type, context, toolbar=toolbar, submenu=submenu)
if (res['type']=='form') and ('record_id' in context):
@ -123,14 +123,14 @@ class project_task(osv.osv):
'timebox_id': fields.many2one('project.gtd.timebox', "Timebox"),
'context_id': fields.many2one('project.gtd.context', "Context"),
}
def copy_data(self, cr, uid, id, default=None, context=None):
if not default:
default = {}
default['timebox_id']=False
default['context_id']=False
return super(project_task,self).copy_data(cr, uid, id, default, context)
def _get_context(self,cr, uid, ctx):
ids = self.pool.get('project.gtd.context').search(cr, uid, [], context=ctx)
return ids and ids[0] or False
@ -169,19 +169,20 @@ class project_task(osv.osv):
timebox_obj = self.pool.get('project.gtd.timebox')
if res['type'] == 'search':
tt = timebox_obj.browse(cr, uid, timebox_obj.search(cr,uid,[]))
search_extended ='''<newline/><group col="%d" expand="1" string="%s" groups="project_gtd.group_project_getting">''' % (len(tt)+6,_('Getting Things Done'))
search_extended += '''<filter domain="[('timebox_id','=', False)]" icon="gtk-new" string="Inbox"/>'''
search_extended ='''<newline/><group col="%d" expand="1" string="%s" groups="project_gtd.group_project_getting">''' % (len(tt)+7,_('Getting Things Done'))
search_extended += '''<filter domain="[]" string="Simplified View" context="{'set_editable':True,'set_visible':True}"/>'''
search_extended += '''<filter domain="[('timebox_id','=', False)]" icon="gtk-new" string="Inbox" />'''
search_extended += '''<separator orientation="vertical"/>'''
for time in tt:
if time.icon:
icon = time.icon
else :
icon=""
search_extended += '''<filter domain="[('timebox_id','=', ''' + str(time.id) + ''')]" icon="''' + icon + '''" string="''' + time.name + '''"/>'''
search_extended += '''<filter domain="[('timebox_id','=', ''' + str(time.id) + ''')]" icon="''' + icon + '''" string="''' + time.name + '''" />'''
search_extended += '''
<separator orientation="vertical"/>
<field name="context_id" select="1" widget="selection"/>
<field name="priority" select="1"/>
<field name="context_id" select="1" widget="selection" />
<field name="priority" select="1" />
</group>
</search> '''
if search_extended:
@ -191,7 +192,7 @@ class project_task(osv.osv):
context_id_info['context_id']['selection'] = attrs_sel
res['fields'].update(context_id_info)
return res
# Override read for using this method if context set !!!
#_order = "((55-ascii(coalesce(priority,'2')))*2 + coalesce((date_start::date-current_date)/2,8))"
project_task()

View File

@ -75,9 +75,9 @@
<field name="inherit_id" ref="project.view_task_tree2" />
<field name="arch" type="xml">
<field name="remaining_hours" position="after">
<field name="timebox_id" groups="project_gtd.group_project_getting"/>
<button name="prev_timebox" type="object" icon="gtk-go-back" string="Previous" states="draft,pending,open" groups="project_gtd.group_project_getting"/>
<button name="next_timebox" type="object" icon="gtk-go-forward" string="Next" states="draft,pending,open" groups="project_gtd.group_project_getting"/>
<field name="timebox_id" groups="project_gtd.group_project_getting" invisible=" not context.get('set_visible',False)"/>
<button name="prev_timebox" type="object" icon="gtk-go-back" string="Previous" states="draft,pending,open" groups="project_gtd.group_project_getting" invisible=" not context.get('set_visible',False)"/>
<button name="next_timebox" type="object" icon="gtk-go-forward" string="Next" states="draft,pending,open" groups="project_gtd.group_project_getting" invisible=" not context.get('set_visible',False)"/>
</field>
</field>
</record>
@ -92,6 +92,7 @@
<newline/>
<field name="context_id" select="2" widget="selection" groups="project_gtd.group_project_getting"/>
<field name="timebox_id" select="1" groups="project_gtd.group_project_getting"/>
<button name="do_reopen" states="done,cancelled" string="Reactivate" type="object" icon="gtk-convert" help="For reopening the tasks" invisible="not context.get('set_visible',False)"/>
<newline/>
</field>
</field>
@ -100,38 +101,13 @@
<field name="name">Tasks</field>
<field name="model">project.task</field>
<field name="type">tree</field>
<field name="inherit_id" ref="project.view_task_tree2"/>
<field eval="2" name="priority"/>
<field name="arch" type="xml">
<tree editable="top" colors="grey:state in ('done',);red:state in ('cancelled');black:state not in ('done','cancelled')" string="Tasks">
<field name="sequence" invisible="1"/>
<field name="name"/>
<field name="planned_hours" widget="float_time"/>
<field name="user_id"/>
<field name="timebox_id" widget="selection" groups="project_gtd.group_project_getting"/>
<button name="prev_timebox" type="object" icon="gtk-go-back" string="Previous" states="draft,pending,open" groups="project_gtd.group_project_getting"/>
<button name="next_timebox" type="object" icon="gtk-go-forward" string="Next" states="draft,pending,open" groups="project_gtd.group_project_getting"/>
<field name="state" invisible="1"/>
<button name="%(project.wizard_close_task)d" states="draft,pending,open" string="Done" type="action" icon="gtk-jump-to" help="For changing to done state"/>
<button groups="base.group_extended" name="%(project.wizard_delegate_task)d" states="pending,open" string="Delegate" type="action" icon="gtk-sort-descending"/>
<button name="do_cancel" states="draft,open,pending" string="Cancel" type="object" icon="gtk-cancel" help="For cancelling the task"/>
<button name="do_reopen" states="done,cancelled" string="Reactivate" type="object" icon="gtk-convert" help="For reopening the tasks"/>
</tree>
<field name="name" position="after">
<field name="planned_hours" widget="float_time" invisible="not context.get('set_visible',False)"/>
</field>
</field>
</record>
<record model="ir.actions.act_window" id="action_prject_task_tree">
<field name="res_model">project.task</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar,graph</field>
<field name="view_id" ref="view_project_task_tree2"/>
<field name="search_view_id" ref="project.view_task_search_form"/>
</record>
<menuitem name="To-Dos"
groups="group_project_getting"
id="menu_task_inbox"
parent="project.menu_project_management"
action="action_prject_task_tree"/>
</data>
</openerp>