diff options
| author | Harry (OpenERP) <hmo@tinyerp.com> | 2011-12-13 13:11:29 +0530 |
|---|---|---|
| committer | Harry (OpenERP) <hmo@tinyerp.com> | 2011-12-13 13:11:29 +0530 |
| commit | 359f0b42e22e69e9965462c8e8d5b8c57239d2f8 (patch) | |
| tree | 64412070716c5949d6c8703e5f2bd83235177ce1 /addons/project | |
| parent | eb4c08585db4868fbf03dc0a019a383e9e653e7e (diff) | |
| parent | 78f56f29f2469f2e4a398d7d6cbdcafaa622341c (diff) | |
[MERGE] merged with trunk development branch.
bzr revid: hmo@tinyerp.com-20111213074129-0frej7vvaefubybe
Diffstat (limited to 'addons/project')
| -rw-r--r-- | addons/project/board_project_view.xml | 1 | ||||
| -rw-r--r-- | addons/project/project.py | 25 | ||||
| -rw-r--r-- | addons/project/project_view.xml | 6 | ||||
| -rw-r--r-- | addons/project/report/project_cumulative.xml | 32 | ||||
| -rw-r--r-- | addons/project/report/project_report_view.xml | 25 | ||||
| -rw-r--r-- | addons/project/security/ir.model.access.csv | 44 | ||||
| -rw-r--r-- | addons/project/static/src/img/icon.png | bin | 0 -> 4172 bytes |
7 files changed, 65 insertions, 68 deletions
diff --git a/addons/project/board_project_view.xml b/addons/project/board_project_view.xml index cdd8894aabe..88424be85fa 100644 --- a/addons/project/board_project_view.xml +++ b/addons/project/board_project_view.xml @@ -87,7 +87,6 @@ <action name="%(action_view_delegate_task_tree)d" string="My Delegated Tasks"/> </column> <column> - <action name="%(project.action_project_vs_planned_total_hours_graph)d" string="My Projects: Planned vs Total Hours"/> <action name="%(project.action_project_vs_remaining_hours_graph)d" string="My Remaining Hours by Project"/> </column> </board> diff --git a/addons/project/project.py b/addons/project/project.py index 5c234cf5e26..8688f4ebc9b 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -920,21 +920,24 @@ class task(osv.osv): self.log(cr, uid, id, message) return True - def set_remaining_time_1(self, cr, uid, ids, context=None): - self.write(cr, uid, ids, {'remaining_hours': 1.0}, context=context) + def set_remaining_time(self, cr, uid, ids, remaining_time=1.0, context=None): + for task in self.browse(cr, uid, ids, context=context): + if (task.state=='draft') or (task.planned_hours==0.0): + self.write(cr, uid, [task.id], {'planned_hours': remaining_time}, context=context) + self.write(cr, uid, ids, {'remaining_hours': remaining_time}, context=context) return True + def set_remaining_time_1(self, cr, uid, ids, context=None): + return self.set_remaining_time(cr, uid, ids, 1.0, context) + def set_remaining_time_2(self, cr, uid, ids, context=None): - self.write(cr, uid, ids, {'remaining_hours': 2.0}, context=context) - return True + return self.set_remaining_time(cr, uid, ids, 2.0, context) def set_remaining_time_5(self, cr, uid, ids, context=None): - self.write(cr, uid, ids, {'remaining_hours': 5.0}, context=context) - return True + return self.set_remaining_time(cr, uid, ids, 5.0, context) def set_remaining_time_10(self, cr, uid, ids, context=None): - self.write(cr, uid, ids, {'remaining_hours': 10.0}, context=context) - return True + return self.set_remaining_time(cr, uid, ids, 10.0, context) def set_kanban_state_blocked(self, cr, uid, ids, context=None): self.write(cr, uid, ids, {'kanban_state': 'blocked'}, context=context) @@ -979,6 +982,7 @@ class task(osv.osv): self.pool.get('project.task.history').create(cr, uid, { 'task_id': task.id, 'remaining_hours': task.remaining_hours, + 'planned_hours': task.planned_hours, 'kanban_state': task.kanban_state, 'type_id': task.type_id.id, 'state': task.state, @@ -1158,7 +1162,8 @@ class project_task_history(osv.osv): 'end_date': fields.function(_get_date, string='End Date', type="date", store={ 'project.task.history': (_get_related_date, None, 20) }), - 'remaining_hours': fields.float('Remaining Hours', digits=(16,2)), + 'remaining_hours': fields.float('Remaining Time', digits=(16,2)), + 'planned_hours': fields.float('Planned Time', digits=(16,2)), 'user_id': fields.many2one('res.users', 'Responsible'), } _defaults = { @@ -1186,7 +1191,7 @@ class project_task_history_cumulative(osv.osv): id as history_id, date+generate_series(0, CAST((coalesce(end_date,DATE 'tomorrow')::date - date)AS integer)-1) as date, task_id, type_id, user_id, kanban_state, state, - remaining_hours + remaining_hours, planned_hours FROM project_task_history ) as history diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index c8fe92f4194..22fc175246e 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -378,6 +378,7 @@ type="object" class="oe_kanban_button"><t t-esc="time[0]"/></a ><b t-if="time[1]" class="oe_kanban_button oe_kanban_button_active"><t t-esc="Math.round(hours)"/></b ></t> + <a name="do_open" states="draft" string="Validate planned time and open task" type="object" class="oe_kanban_button oe_kanban_button_active">!</a> </span> </div> <div class="oe_kanban_clear"/> @@ -488,11 +489,6 @@ <filter name="open" 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"/> - <filter name="edit" - string="Edit" context="{'set_editable':True,'seq_visible': True}" - icon="gtk-execute" - groups="base.group_extended"/> - <separator orientation="vertical"/> <filter string="Deadlines" context="{'deadline_visible': False}" domain="[('date_deadline','<>',False)]" help="Show only tasks having a deadline" icon="terp-gnome-cpu-frequency-applet+"/> <separator orientation="vertical"/> <field name="name"/> diff --git a/addons/project/report/project_cumulative.xml b/addons/project/report/project_cumulative.xml index aff90aea94e..89667992f0a 100644 --- a/addons/project/report/project_cumulative.xml +++ b/addons/project/report/project_cumulative.xml @@ -26,18 +26,31 @@ <field name="arch" type="xml"> <graph string="Project Tasks" type="bar"> <field name="date"/> + <field name="planned_hours" operator="+"/> + <field name="type_id" group="True"/> + </graph> + </field> + </record> + <record id="view_task_history_burndown_graph" model="ir.ui.view"> + <field name="name">project.task.history.burndown.graph</field> + <field name="model">project.task.history.burndown</field> + <field name="type">graph</field> + <field name="arch" type="xml"> + <graph string="Burndown Chart of Tasks" type="bar"> + <field name="date"/> <field name="remaining_hours" operator="+"/> <field name="type_id" group="True"/> </graph> </field> </record> + <record id="view_task_history_search" model="ir.ui.view"> <field name="name">project.task.history.cumulative.search</field> <field name="model">project.task.history.cumulative</field> <field name="type">search</field> <field name="arch" type="xml"> - <search string="Task's Cumulative Flow"> + <search string="Task's Analysis"> <group> <filter name="open" string="In Progress" domain="[('state','in',('open','draft'))]" 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"/> @@ -69,13 +82,28 @@ <field name="res_model">project.task.history.cumulative</field> <field name="view_type">form</field> <field name="view_mode">graph,tree</field> + <field name="view_id" ref="view_task_history_graph"/> <field eval="False" name="filter"/> - <field name="context">{"search_default_open":1, "search_default_this_month": 1}</field> + <field name="context">{"search_default_open":1, "search_default_this_month": 1, "search_default_project_id": project_id}</field> </record> <menuitem action="action_view_task_history_cumulative" id="menu_action_view_task_history_cumulative" parent="project_report_task" /> + <record id="action_view_task_history_burndown" model="ir.actions.act_window"> + <field name="name">Burndown Chart</field> + <field name="res_model">project.task.history.cumulative</field> + <field name="view_type">form</field> + <field name="view_mode">graph,tree</field> + <field name="view_id" ref="view_task_history_burndown_graph"/> + <field eval="False" name="filter"/> + <field name="context">{"search_default_open":1, "search_default_this_month": 1, "search_default_project_id": project_id}</field> + </record> + <menuitem action="action_view_task_history_burndown" + id="menu_action_view_task_history_burndown" + parent="project_report_task" /> + + </data> </openerp> diff --git a/addons/project/report/project_report_view.xml b/addons/project/report/project_report_view.xml index bf828d6b231..5af8706108f 100644 --- a/addons/project/report/project_report_view.xml +++ b/addons/project/report/project_report_view.xml @@ -150,7 +150,7 @@ <field name="view_type">form</field> <field name="view_mode">tree,graph</field> <field name="search_view_id" ref="view_task_project_user_search"/> - <field name="context">{'search_default_year':1,'search_default_month':1,'search_default_project':1,'group_by_no_leaf':1,'group_by':[]}</field> + <field name="context">{'search_default_year':1,'search_default_project':1,'group_by_no_leaf':1,'group_by':[]}</field> <field name="help">This report allows you to analyse the performance of your projects and users. You can analyse the quantities of tasks, the hours spent compared to the planned hours, the average number of days to open or close a task, etc.</field> </record> @@ -269,28 +269,5 @@ </field> </record> - <record id="action_project_vs_planned_total_hours_graph" model="ir.actions.act_window"> - - <field name="name">Projects: Planned Vs Total hours</field> - <field name="res_model">project.vs.hours</field> - <field name="view_type">form</field> - <field name="view_mode">graph,tree</field> - <field name="context">{}</field> - <field name="domain">[('user_id','=',uid),('state','=','open')]</field> - <field name="view_id" ref="view_project_vs_planned_total_hours_graph"/> - </record> - - <record id="open_view_project_vs_planned_total_hours_tree" model="ir.actions.act_window.view"> - <field eval="2" name="sequence"/> - <field name="view_mode">tree</field> - <field name="view_id" ref="view_project_vs_planned_total_hours_tree"/> - <field name="act_window_id" ref="action_project_vs_planned_total_hours_graph"/> - </record> - <record id="open_view_project_vs_planned_total_hours_graph" model="ir.actions.act_window.view"> - <field eval="1" name="sequence"/> - <field name="view_mode">graph</field> - <field name="view_id" ref="view_project_vs_planned_total_hours_graph"/> - <field name="act_window_id" ref="action_project_vs_planned_total_hours_graph"/> - </record> </data> </openerp> diff --git a/addons/project/security/ir.model.access.csv b/addons/project/security/ir.model.access.csv index 955a6ef0c97..633c5164484 100644 --- a/addons/project/security/ir.model.access.csv +++ b/addons/project/security/ir.model.access.csv @@ -1,26 +1,18 @@ -"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -"access_project_project_manager","project.project manager","model_project_project","project.group_project_manager",1,1,1,1 -"access_account_analytic_account_manager","account.analytic.account","analytic.model_account_analytic_account","project.group_project_manager",1,1,1,1 -"access_project_project","project.project","model_project_project","project.group_project_user",1,1,1,1 -"access_account_analytic_account","account.analytic.account","analytic.model_account_analytic_account","project.group_project_user",1,1,1,1 -"access_project_task_type_user","project.task.type user","model_project_task_type","project.group_project_user",1,1,1,1 -"access_project_task_type","project.task.type","model_project_task_type","project.group_project_manager",1,1,1,1 -"access_project_task_manager","project.task manager","model_project_task","project.group_project_manager",1,1,1,1 -"access_project_task","project.task","model_project_task","project.group_project_user",1,1,1,1 -"access_project_task_work","project.task.work","model_project_task_work","project.group_project_user",1,1,1,1 -"access_project_task_work_manager","project.task.work.manager","model_project_task_work","project.group_project_manager",1,1,1,1 -"access_report_project_task_user","report.project.task.user","model_report_project_task_user","project.group_project_manager",1,1,1,1 -"access_project_vs_hours","project.vs.hours","model_project_vs_hours","project.group_project_user",1,1,1,1 -"access_task_by_days","task.by.days","model_task_by_days","project.group_project_user",1,1,1,1 -"access_partner_task user","base.res.partner user","base.model_res_partner","project.group_project_user",1,0,0,0 -"access_partner_task manager","base.res.partner manager","base.model_res_partner","project.group_project_manager",1,0,0,0 -"access_partner_address_task user","base.res.partner.address user","base.model_res_partner_address","project.group_project_user",1,0,0,0 -"access_partner_address_task manager","base.res.partner.address manager","base.model_res_partner_address","project.group_project_manager",1,0,0,0 -"access_task_on_partner","project.task on partners","model_project_task","base.group_user",1,0,0,0 -"access_project_on_partner","project.project on partners","model_project_project","base.group_user",1,0,0,0 -"access_project_vs_hours_manager","project.vs.hours.manager","model_project_vs_hours","project.group_project_manager",1,1,1,1 -"access_project_task_sale_user","project.task salesman","model_project_task","base.group_sale_salesman",1,0,0,0 -"access_project_project_sale_user","project.project salesman","model_project_project","base.group_sale_salesman",1,0,0,0 -"access_account_analytic_line_project","account.analytic.line project","analytic.model_account_analytic_line","project.group_project_manager",1,1,1,1 -"access_project_task_history","project.task.history project","project.model_project_task_history","project.group_project_user",1,1,1,0 -"access_project_task_history_cumulative","project.task.history project","project.model_project_task_history_cumulative","project.group_project_manager",1,0,0,0 +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_project_project,project.project,model_project_project,project.group_project_user,1,1,1,1
+access_account_analytic_account,account.analytic.account,analytic.model_account_analytic_account,project.group_project_user,1,1,1,1
+access_project_task_type_user,project.task.type user,model_project_task_type,project.group_project_user,1,1,1,1
+access_project_task,project.task,model_project_task,project.group_project_user,1,1,1,1
+access_project_task_work,project.task.work,model_project_task_work,project.group_project_user,1,1,1,1
+access_report_project_task_user,report.project.task.user,model_report_project_task_user,project.group_project_manager,1,1,1,1
+access_project_vs_hours,project.vs.hours,model_project_vs_hours,project.group_project_user,1,1,1,1
+access_task_by_days,task.by.days,model_task_by_days,project.group_project_user,1,1,1,1
+access_partner_task user,base.res.partner user,base.model_res_partner,project.group_project_user,1,0,0,0
+access_partner_address_task user,base.res.partner.address user,base.model_res_partner_address,project.group_project_user,1,0,0,0
+access_task_on_partner,project.task on partners,model_project_task,base.group_user,1,0,0,0
+access_project_on_partner,project.project on partners,model_project_project,base.group_user,1,0,0,0
+access_project_task_sale_user,project.task salesman,model_project_task,base.group_sale_salesman,1,0,0,0
+access_project_project_sale_user,project.project salesman,model_project_project,base.group_sale_salesman,1,0,0,0
+access_account_analytic_line_project,account.analytic.line project,analytic.model_account_analytic_line,project.group_project_manager,1,1,1,1
+access_project_task_history,project.task.history project,project.model_project_task_history,project.group_project_user,1,1,1,0
+access_project_task_history_cumulative,project.task.history project,project.model_project_task_history_cumulative,project.group_project_manager,1,0,0,0
diff --git a/addons/project/static/src/img/icon.png b/addons/project/static/src/img/icon.png Binary files differnew file mode 100644 index 00000000000..20ba49f07c8 --- /dev/null +++ b/addons/project/static/src/img/icon.png |
