bzr revid: olt@tinyerp.com-20081027132222-3ytn25c6nw6rxt8d
This commit is contained in:
Olivier Laurent 2008-10-27 14:22:22 +01:00
commit 0dfbb51724
8 changed files with 221 additions and 220 deletions

View File

@ -1576,7 +1576,6 @@ class account_config_wizard(osv.osv_memory):
'date1': lambda *a: time.strftime('%Y-01-01'),
'date2': lambda *a: time.strftime('%Y-12-31'),
'period':lambda *a:'month',
'charts': lambda *a: -1,
}
def action_cancel(self,cr,uid,ids,conect=None):
return {

View File

@ -493,7 +493,7 @@ class crm_case(osv.osv):
'case_subject': case.name,
'case_date': case.date,
'case_user': case.user_id.name or '/',
'case_user': (case.user_id and case.user_id.name) or '/',
'case_user_email': (case.user_id and case.user_id.address_id and case.user_id.address_id.email) or '/',
'case_user_phone': (case.user_id and case.user_id.address_id and case.user_id.address_id.phone) or '/',

View File

@ -48,7 +48,7 @@
<field name="view_type">form</field>
<field name="view_id" ref="hr_timesheet_line_tree"/>
</record>
<menuitem action="act_hr_timesheet_line_today_form" id="menu_act_hr_timesheet_line_today_form" parent="hr.menu_hr_root"/>
<menuitem id="menu_act_hr_timesheet_line_today_form" parent="hr.menu_hr_root"/>
<record id="act_hr_timesheet_line_me_all_form" model="ir.actions.act_window">
<field name="name">My Working Hours</field>

View File

@ -33,7 +33,6 @@
"category":"Profile",
"depends":[
"hr",
"crm",
"project",
"board_project",
"account_analytic_analysis"

View File

@ -116,7 +116,7 @@ class project(osv.osv):
'priority': fields.integer('Sequence'),
'manager': fields.many2one('res.users', 'Project Manager'),
'warn_manager': fields.boolean('Warn Manager', help="If you check this field, the project manager will receive a request each time a task is completed by his team."),
'members': fields.many2many('res.users', 'project_user_rel', 'project_id', 'uid', 'Project Members'),
'members': fields.many2many('res.users', 'project_user_rel', 'project_id', 'uid', 'Project Members', help="Project's member. Not used in any computation, just for information purpose."),
'tasks': fields.one2many('project.task', 'project_id', "Project tasks"),
'parent_id': fields.many2one('project.project', 'Parent Project'),
'child_id': fields.one2many('project.project', 'parent_id', 'Subproject'),
@ -127,10 +127,10 @@ class project(osv.osv):
'date_end': fields.date('Expected End'),
'partner_id': fields.many2one('res.partner', 'Partner'),
'contact_id': fields.many2one('res.partner.address', 'Contact'),
'warn_customer': fields.boolean('Warn Partner'),
'warn_header': fields.text('Mail header'),
'warn_footer': fields.text('Mail footer'),
'notes': fields.text('Notes'),
'warn_customer': fields.boolean('Warn Partner', help="If you check this, the user will have a popup when closing a task that propose a message to send by email to the customer."),
'warn_header': fields.text('Mail Header', help="Header added at the beginning of the email for the warning message sent to the customer when a task is closed."),
'warn_footer': fields.text('Mail Footer', help="Footer added at the beginning of the email for the warning message sent to the customer when a task is closed."),
'notes': fields.text('Notes', help="Internal description of the project."),
'timesheet_id': fields.many2one('hr.timesheet.group', 'Working Time', help="Timetable working hours to adjust the gantt diagram report"),
'state': fields.selection([('template', 'Template'), ('open', 'Open'), ('pending', 'Pending'), ('cancelled', 'Cancelled'), ('done', 'Done')], 'State', required=True, readonly=True),
}

View File

@ -34,11 +34,12 @@
<field name="state"/>
<button name="set_template" string="Set as Template" type="object" states="open"/>
<button name="set_open" string="Reopen Project" type="object" states="pending,cancelled,done"/>
<button name="set_pending" string="Set as Pending" type="object" states="open"/>
<button name="set_cancel" string="Set as Cancel" type="object" states="open,pending"/>
<button name="set_done" string="Set as Done" type="object" states="open,pending"/>
<button name="set_pending" string="Pending" type="object" states="open"/>
<button name="set_cancel" string="Cancel" type="object" states="open,pending"/>
<button name="set_done" string="Done" type="object" states="open,pending"/>
<button name="reset_project" string="Reset as Project" type="object" states="template"/>
<button name="duplicate_template" string="New Project Based on Template"
<button name="duplicate_template"
string="New Project Based on Template"
type="object"
states="template"/>
</group>
@ -247,10 +248,10 @@
<newline/>
<group col="11" colspan="4">
<field name="state" select="1"/>
<button name="do_draft" states="open" string="Set Draft" type="object"/>
<button name="do_draft" states="open" string="Draft" type="object"/>
<button name="do_open" states="pending,draft" string="Open" type="object"/>
<button name="do_reopen" states="done,cancelled" string="Re-open" type="object"/>
<button name="do_pending" states="open" string="Set Pending" type="object"/>
<button name="do_pending" states="open" string="Pending" type="object"/>
<button groups="base.group_extended" name="%(wizard_delegate_task)d" states="pending,open" string="Delegate" type="action"/>
<button name="%(wizard_close_task)d" states="pending,open" string="Done" type="action"/>
<button name="do_cancel" states="draft,open,pending" string="Cancel" type="object"/>

View File

@ -46,13 +46,13 @@ ask_form = """<?xml version="1.0" ?>
</form>"""
ask_fields = {
'name': {'string': 'Title', 'type': 'char', 'required': 'True', 'size':64},
'prefix': {'string': 'Prefix of Task', 'type': 'char', 'required': 'True', 'size':64},
'user_id': {'string':'Assign To', 'type':'many2one', 'relation': 'res.users', 'required':'True'},
'include_info': {'string':'Copy Description', 'type':'boolean'},
'planned_hours': {'string':'Planned Hours', 'type':'float', 'widget':'float_time'},
'planned_hours_me': {'string':'Hours to Validate', 'type':'float', 'widget':'float_time'},
'state': {'string':'Validation State', 'type':'selection', 'selection': [('pending','Pending'),('done','Done')]},
'name': {'string': 'Delegated Title', 'type': 'char', 'required': 'True', 'size':64, 'help':"New title of the task delegated to the user."},
'prefix': {'string': 'Your Task Title', 'type': 'char', 'required': 'True', 'size':64, 'help':"New title of your own task to validate the work done."},
'user_id': {'string':'Assign To', 'type':'many2one', 'relation': 'res.users', 'required':'True', 'help':"User you want to delegate this task to."},
'include_info': {'string':'Copy Description', 'type':'boolean', 'help':"Reinclude the description of the task in the task of the user."},
'planned_hours': {'string':'Planned Hours', 'type':'float', 'widget':'float_time', 'help':"Estimated time to close this task by the delegated user."},
'planned_hours_me': {'string':'Hours to Validate', 'type':'float', 'widget':'float_time', 'help':"Estimated time for you to validate the work done by the user to whom you delegate this task."},
'state': {'string':'Validation State', 'type':'selection', 'selection': [('pending','Pending'),('done','Done')], 'help':"New state of your own task. Pending will be reopened automatically when the delegated task is closed.", 'required':True},
}
class wizard_delegate(wizard.interface):
@ -60,8 +60,7 @@ class wizard_delegate(wizard.interface):
task_obj = pooler.get_pool(cr.dbname).get('project.task')
task = task_obj.browse(cr, uid, data['id'], context)
newname = task.name
if not task.name.startswith(data['form']['prefix'] or '++'):
newname = (data['form']['prefix'] or '')+task.name
newname = data['form']['prefix'] or ''
task_obj.copy(cr, uid, data['id'], {
'name': data['form']['name'],
'user_id': data['form']['user_id'],
@ -70,10 +69,11 @@ class wizard_delegate(wizard.interface):
'parent_id': data['id'],
'state': 'open',
'description': data['form']['include_info'] and task.description or '',
'child_ids': []
'child_ids': [],
'work_ids': []
})
task_obj.write(cr, uid, data['id'], {
'planned_hours': data['form']['planned_hours_me'],
'remaining_hours': data['form']['planned_hours_me'],
'name': newname
})
if data['form']['state']=='pending':
@ -88,9 +88,9 @@ class wizard_delegate(wizard.interface):
return {
'name':task.name,
'user_id': False,
'planned_hours': task.planned_hours,
'planned_hours_me': task.planned_hours / 5.0,
'prefix': 'CHECK: ',
'planned_hours': task.remaining_hours,
'planned_hours_me': 1.0,
'prefix': 'CHECK: '+ (task.name or ''),
'state': 'pending'
}

View File

@ -1,210 +1,212 @@
<?xml version="1.0" ?>
<openerp>
<data>
<data>
<record model="ir.ui.view" id="view_gtd_context_tree">
<field name="name">project.gtd.context.tree</field>
<field name="model">project.gtd.context</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Context">
<field name="name"/>
<field name="project_default_id"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_gtd_context_form">
<field name="name">project.gtd.context.form</field>
<field name="model">project.gtd.context</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Context">
<field name="name"/>
<field name="sequence"/>
<field name="project_default_id"/>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="open_gtd_context_tree">
<field name="name">Contexts</field>
<field name="res_model">project.gtd.context</field>
</record>
<record model="ir.actions.act_window" id="open_gtd_context_tree_my">
<field name="name">My Contexts</field>
<field name="res_model">project.gtd.context</field>
<field name="domain">[('user_id','=',uid)]</field>
</record>
<menuitem name="Time Management" id="menu_open_gtd_time" parent="project.menu_definitions"/>
<menuitem name="Contexts" id="menu_open_gtd_time_contexts" parent="menu_open_gtd_time" action="open_gtd_context_tree"/>
<menuitem name="My Contexts" id="menu_open_gtd_time_my_contexts" parent="menu_open_gtd_time_contexts" action="open_gtd_context_tree_my"/>
<record model="ir.ui.view" id="view_gtd_context_tree">
<field name="name">project.gtd.context.tree</field>
<field name="model">project.gtd.context</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Context">
<field name="name"/>
<field name="project_default_id"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_gtd_context_form">
<field name="name">project.gtd.context.form</field>
<field name="model">project.gtd.context</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Context">
<field name="name"/>
<field name="sequence"/>
<field name="project_default_id"/>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="open_gtd_context_tree">
<field name="name">Contexts</field>
<field name="res_model">project.gtd.context</field>
</record>
<record model="ir.actions.act_window" id="open_gtd_context_tree_my">
<field name="name">My Contexts</field>
<field name="res_model">project.gtd.context</field>
<field name="domain">[('user_id','=',uid)]</field>
</record>
<menuitem name="Time Management" id="menu_open_gtd_time" parent="project.menu_definitions"/>
<menuitem name="Contexts" id="menu_open_gtd_time_contexts" parent="menu_open_gtd_time" action="open_gtd_context_tree"/>
<menuitem name="My Contexts" id="menu_open_gtd_time_my_contexts" parent="menu_open_gtd_time_contexts" action="open_gtd_context_tree_my"/>
<record model="ir.ui.view" id="view_gtd_timebox_tree">
<field name="name">project.gtd.timebox.tree</field>
<field name="model">project.gtd.timebox</field>
<field name="type">tree</field>
<field name="field_parent">child_ids</field>
<field name="arch" type="xml">
<tree string="Timebox">
<field name="name"/>
<field name="type"/>
<field name="user_id"/>
<field name="parent_id"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_gtd_timebox_tree">
<field name="name">project.gtd.timebox.tree</field>
<field name="model">project.gtd.timebox</field>
<field name="type">tree</field>
<field name="field_parent">child_ids</field>
<field name="arch" type="xml">
<tree string="Timebox">
<field name="name"/>
<field name="type"/>
<field name="user_id"/>
<field name="parent_id"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_gtd_timebox_form">
<field name="name">project.gtd.timebox.form</field>
<field name="model">project.gtd.timebox</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Timeboxes">
<separator string="Timebox Definition" colspan="4"/>
<field name="name"/>
<field name="type"/>
<field name="user_id"/>
<field name="parent_id"/>
<separator string="Contexts" colspan="4"/>
<field name="context1_id"/><newline/>
<field name="context2_id"/><newline/>
<field name="context3_id"/><newline/>
<field name="context4_id"/><newline/>
<field name="context5_id"/><newline/>
<field name="context6_id"/>
<separator string="Visible Columns" colspan="4"/>
<field name="col_project"/>
<field name="col_date_start"/>
<field name="col_priority"/>
<field name="col_deadline"/>
<field name="col_planned_hours"/>
<field name="col_effective_hours"/>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_gtd_timebox_form">
<field name="name">project.gtd.timebox.form</field>
<field name="model">project.gtd.timebox</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Timeboxes">
<separator string="Timebox Definition" colspan="4"/>
<field name="name"/>
<field name="type"/>
<field name="user_id"/>
<field name="parent_id"/>
<separator string="Contexts" colspan="4"/>
<field name="context1_id"/><newline/>
<field name="context2_id"/><newline/>
<field name="context3_id"/><newline/>
<field name="context4_id"/><newline/>
<field name="context5_id"/><newline/>
<field name="context6_id"/>
<separator string="Visible Columns" colspan="4"/>
<field name="col_project"/>
<field name="col_date_start"/>
<field name="col_priority"/>
<field name="col_deadline"/>
<field name="col_planned_hours"/>
<field name="col_effective_hours"/>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="open_gtd_timebox_tree">
<field name="name">Timeboxes</field>
<field name="res_model">project.gtd.timebox</field>
<field name="view_type">tree</field>
<field name="domain">[('parent_id','=',False)]</field>
</record>
<record model="ir.actions.act_window" id="open_gtd_timebox_tree_my">
<field name="name">My Timeboxes</field>
<field name="res_model">project.gtd.timebox</field>
<field name="domain">[('user_id','=',uid)]</field>
</record>
<menuitem name="Timeboxes" id="menu_open_gtd_time_timeboxes" parent="menu_open_gtd_time" action="open_gtd_timebox_tree"/>
<menuitem name="My Timeboxes" id="menu_open_gtd_time_my_timeboxes" parent="menu_open_gtd_time_timeboxes" action="open_gtd_timebox_tree_my"/>
<record model="ir.actions.act_window" id="open_gtd_timebox_tree">
<field name="name">Timeboxes</field>
<field name="res_model">project.gtd.timebox</field>
<field name="view_type">tree</field>
<field name="domain">[('parent_id','=',False)]</field>
</record>
<record model="ir.actions.act_window" id="open_gtd_timebox_tree_my">
<field name="name">My Timeboxes</field>
<field name="res_model">project.gtd.timebox</field>
<field name="domain">[('user_id','=',uid)]</field>
</record>
<menuitem name="Timeboxes" id="menu_open_gtd_time_timeboxes" parent="menu_open_gtd_time" action="open_gtd_timebox_tree"/>
<menuitem name="My Timeboxes" id="menu_open_gtd_time_my_timeboxes" parent="menu_open_gtd_time_timeboxes" action="open_gtd_timebox_tree_my"/>
<record model="ir.ui.view" id="task_inbox_view">
<field name="name">project.task.gtd.inbox.tree</field>
<field name="model">project.task</field>
<field name="type">tree</field>
<field name="priority" eval="20"/>
<field name="arch" type="xml">
<tree string="Tasks" editable="bottom" colors="blue:timebox_id">
<field name="name"/>
<field name="timebox_id" required="1" domain="[('user_id','=',uid)]"/>
<field name="context_id" required="1"/>
<field name="date_start"/>
<field name="priority"/>
<field name="date_deadline"/>
<field name="planned_hours" widget="float_time" sum="Est. Hours"/>
<field name="state"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="open_gtd_task_inbox">
<field name="name">Inbox Tasks</field>
<field name="res_model">project.task</field>
<field name="domain">[('user_id','=',uid),('timebox_id','=',False),('state','in',('open','draft'))]</field>
<field name="context">{'gtd_sort':True}</field>
<field name="view_id" ref="task_inbox_view"/>
</record>
<menuitem name="Time Management" id="menu_open_time" parent="project.menu_main"/>
<menuitem name="My Inbox" id="menu_open_time_myinbox" parent="menu_open_time" action="open_gtd_task_inbox"/>
<record model="ir.ui.view" id="task_inbox_view">
<field name="name">project.task.gtd.inbox.tree</field>
<field name="model">project.task</field>
<field name="type">tree</field>
<field name="priority" eval="20"/>
<field name="arch" type="xml">
<tree string="Tasks" editable="bottom" colors="blue:timebox_id">
<field name="name"/>
<field name="timebox_id" required="1" domain="[('user_id','=',uid)]"/>
<field name="context_id" required="1"/>
<field name="date_start"/>
<field name="priority"/>
<field name="date_deadline"/>
<field name="planned_hours" widget="float_time" sum="Est. Hours"/>
<field name="state"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="open_gtd_task_inbox">
<field name="name">Inbox Tasks</field>
<field name="res_model">project.task</field>
<field name="domain">[('user_id','=',uid),('timebox_id','=',False),('state','in',('open','draft'))]</field>
<field name="context">{'gtd_sort':True}</field>
<field name="view_id" ref="task_inbox_view"/>
</record>
<menuitem name="Time Management" id="menu_open_time" parent="project.menu_main"/>
<menuitem name="My Inbox" id="menu_open_time_myinbox" parent="menu_open_time" action="open_gtd_task_inbox"/>
<record model="ir.ui.view" id="view_gtd_timebox_treelist">
<field name="name">project.gtd.timebox.treelist</field>
<field name="model">project.gtd.timebox</field>
<field name="type">tree</field>
<field name="priority">50</field>
<field name="arch" type="xml">
<tree string="Timeboxes">
<field name="name"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_gtd_timebox_treelist">
<field name="name">project.gtd.timebox.treelist</field>
<field name="model">project.gtd.timebox</field>
<field name="type">tree</field>
<field name="priority">50</field>
<field name="arch" type="xml">
<tree string="Timeboxes">
<field name="name"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="open_gtd_timebox_all">
<field name="name">My Timeboxes</field>
<field name="res_model">project.gtd.timebox</field>
<field name="domain">[('user_id','=',uid)]</field>
<field name="view_type">form</field>
<field name="view_id" ref="view_gtd_timebox_treelist"/>
<field name="context">{'record_id':False}</field>
</record>
<menuitem name="All My Timeboxes" id="menu_open_time_allinbox" parent="menu_open_time" action="open_gtd_timebox_all"/>
<record model="ir.actions.act_window" id="open_gtd_timebox_all">
<field name="name">My Timeboxes</field>
<field name="res_model">project.gtd.timebox</field>
<field name="domain">[('user_id','=',uid)]</field>
<field name="view_type">form</field>
<field name="view_id" ref="view_gtd_timebox_treelist"/>
<field name="context">{'record_id':False}</field>
</record>
<menuitem name="All My Timeboxes" id="menu_open_time_allinbox" parent="menu_open_time" action="open_gtd_timebox_all"/>
<record model="ir.ui.view" id="project_task">
<field name="name">project.task.form.timebox</field>
<field name="model">project.task</field>
<field name="type">form</field>
<field name="inherit_id" ref="project.view_task_form2" />
<field name="arch" type="xml">
<field name="date_close" position="after">
<newline/>
<field name="timebox_id" select="1" domain="[('user_id', '=', uid)]"/>
<field name="context_id" select="2"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="project_task">
<field name="name">project.task.form.timebox</field>
<field name="model">project.task</field>
<field name="type">form</field>
<field name="inherit_id" ref="project.view_task_form2" />
<field name="arch" type="xml">
<field name="partner_id" position="after">
<newline/>
<field name="timebox_id" select="1" domain="[('user_id', '=', uid)]"/>
<field name="context_id" select="2"/>
<separator string="Getting Things Done" colspan="4"/>
<newline/>
</field>
</field>
</record>
<act_window name="My Inbox"
domain="[('user_id', '=', uid),('timebox_id','=',False),('state','in',('draft','open'))]"
res_model="project.task"
src_model="project.gtd.timebox"
view_type="form"
view_mode="tree,form"
id="act_timebox_tasks_my_inbox"/>
<act_window name="My Open Tasks"
domain="[('user_id', '=', uid),('state','in',('draft','open'))]"
res_model="project.task"
src_model="project.gtd.timebox"
view_type="form"
view_mode="tree,form"
id="act_timebox_tasks_my_open"/>
<act_window name="My Pending Tasks"
domain="[('user_id', '=', uid),('state','=','pending')]"
res_model="project.task"
src_model="project.gtd.timebox"
view_type="form"
view_mode="tree,form"
id="act_timebox_tasks_my_pending"/>
<act_window name="My Inbox"
domain="[('user_id', '=', uid),('timebox_id','=',False),('state','in',('draft','open'))]"
res_model="project.task"
src_model="project.gtd.timebox"
view_type="form"
view_mode="tree,form"
id="act_timebox_tasks_my_inbox"/>
<act_window name="My Open Tasks"
domain="[('user_id', '=', uid),('state','in',('draft','open'))]"
res_model="project.task"
src_model="project.gtd.timebox"
view_type="form"
view_mode="tree,form"
id="act_timebox_tasks_my_open"/>
<act_window name="My Pending Tasks"
domain="[('user_id', '=', uid),('state','=','pending')]"
res_model="project.task"
src_model="project.gtd.timebox"
view_type="form"
view_mode="tree,form"
id="act_timebox_tasks_my_pending"/>
<act_window name="My Deadlines"
domain="[('user_id', '=', uid),('state','in',('draft','open','pending')),('date_deadline','&lt;&gt;',False)]"
res_model="project.task"
src_model="project.gtd.timebox"
view_type="form"
view_mode="tree,form"
id="act_timebox_tasks_my_deadline_open"/>
<act_window name="My Deadlines"
domain="[('user_id', '=', uid),('state','in',('draft','open','pending')),('date_deadline','&lt;&gt;',False)]"
res_model="project.task"
src_model="project.gtd.timebox"
view_type="form"
view_mode="tree,form"
id="act_timebox_tasks_my_deadline_open"/>
<act_window name="Timebox Tasks"
domain="[('timebox_id', '=', active_id)]"
res_model="project.task"
src_model="project.gtd.timebox"
view_type="form"
view_mode="tree,form"
id="act_timebox_tasks"/>
<act_window name="Timebox Tasks"
domain="[('timebox_id', '=', active_id)]"
res_model="project.task"
src_model="project.gtd.timebox"
view_type="form"
view_mode="tree,form"
id="act_timebox_tasks"/>
</data>
</data>
</openerp>