[MOV] project: split and restructured files according to new API guidelines

- created report/project_cumulative.py for model
  project.task.history.cumulative that was in project.py
- moved project.project kanban view from project_dashboard.xml
  to project_views.xml, which required moving some menuitems
  as well so they are available while refering them in other files
This commit is contained in:
Ravi Gohil
2016-06-30 14:41:21 +02:00
committed by David Monjoie
parent 1449a1eaf1
commit 2c29168307
8 changed files with 173 additions and 165 deletions
+2 -3
View File
@@ -38,13 +38,12 @@ Dashboard / Reports for Project Management will include:
'security/project_security.xml',
'security/ir.model.access.csv',
'data/project_data.xml',
'views/project_views.xml',
'views/res_partner_views.xml',
'report/project_report_views.xml',
'report/project_cumulative_views.xml',
'views/project_views.xml',
'views/res_partner_views.xml',
'views/res_config_views.xml',
'views/project_templates.xml',
'views/project_dashboard.xml',
'views/tour_views.xml',
'data/web_planner_data.xml',
'data/project_mail_template_data.xml',
-39
View File
@@ -913,45 +913,6 @@ class project_task_history(osv.osv):
'date': fields.date.context_today,
}
class project_task_history_cumulative(osv.osv):
_name = 'project.task.history.cumulative'
_table = 'project_task_history_cumulative'
_inherit = 'project.task.history'
_auto = False
_columns = {
'end_date': fields.date('End Date'),
'nbr_tasks': fields.integer('# of Tasks', readonly=True),
'project_id': fields.many2one('project.project', 'Project'),
}
def init(self, cr):
tools.drop_view_if_exists(cr, 'project_task_history_cumulative')
cr.execute(""" CREATE VIEW project_task_history_cumulative AS (
SELECT
history.date::varchar||'-'||history.history_id::varchar AS id,
history.date AS end_date,
*
FROM (
SELECT
h.id AS history_id,
h.date+generate_series(0, CAST((coalesce(h.end_date, DATE 'tomorrow')::date - h.date) AS integer)-1) AS date,
h.task_id, h.type_id, h.user_id, h.kanban_state,
count(h.task_id) as nbr_tasks,
greatest(h.remaining_hours, 1) AS remaining_hours, greatest(h.planned_hours, 1) AS planned_hours,
t.project_id
FROM
project_task_history AS h
JOIN project_task AS t ON (h.task_id = t.id)
GROUP BY
h.id,
h.task_id,
t.project_id
) AS history
)
""")
class project_tags(osv.Model):
""" Tags of project's tasks (or issues) """
+1
View File
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import project_cumulative
import project_report
@@ -0,0 +1,46 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from openerp import tools
from openerp.osv import fields, osv
class project_task_history_cumulative(osv.osv):
_name = 'project.task.history.cumulative'
_table = 'project_task_history_cumulative'
_inherit = 'project.task.history'
_auto = False
_columns = {
'end_date': fields.date('End Date'),
'nbr_tasks': fields.integer('# of Tasks', readonly=True),
'project_id': fields.many2one('project.project', 'Project'),
}
def init(self, cr):
tools.drop_view_if_exists(cr, 'project_task_history_cumulative')
cr.execute(""" CREATE VIEW project_task_history_cumulative AS (
SELECT
history.date::varchar||'-'||history.history_id::varchar AS id,
history.date AS end_date,
*
FROM (
SELECT
h.id AS history_id,
h.date+generate_series(0, CAST((coalesce(h.end_date, DATE 'tomorrow')::date - h.date) AS integer)-1) AS date,
h.task_id, h.type_id, h.user_id, h.kanban_state,
count(h.task_id) as nbr_tasks,
greatest(h.remaining_hours, 1) AS remaining_hours, greatest(h.planned_hours, 1) AS planned_hours,
t.project_id
FROM
project_task_history AS h
JOIN project_task AS t ON (h.task_id = t.id)
GROUP BY
h.id,
h.task_id,
t.project_id
) AS history
)
""")
@@ -82,9 +82,6 @@
</field>
<field name="view_id"></field> <!-- force empty -->
</record>
<menuitem action="action_view_task_history_cumulative"
id="menu_action_view_task_history_cumulative"
parent="base.menu_project_report"/>
</data>
</openerp>
@@ -2,10 +2,6 @@
<openerp>
<data>
<menuitem id="base.menu_project_report" name="Reports"
groups="project.group_project_manager"
parent="base.menu_main_pm" sequence="99"/>
<record id="view_task_project_user_pivot" model="ir.ui.view">
<field name="name">report.project.task.user.pivot</field>
<field name="model">report.project.task.user</field>
@@ -107,7 +103,5 @@
<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>
<menuitem name="Tasks" action="action_project_task_user_tree" id="menu_project_task_user_tree" parent="base.menu_project_report"/>
</data>
</openerp>
-111
View File
@@ -1,111 +0,0 @@
<odoo>
<record id="edit_project_simplified" model="ir.ui.view">
<field name="name">project.project.form.popup</field>
<field name="model">project.project</field>
<field name="arch" type="xml">
<form string="Project">
<sheet>
<group>
<field name="name" class="o_project_name oe_inline"
string="Project Name" placeholder="e.g. Office Party"/>
<label for="alias_name" string="Choose a Project Email" attrs="{'invisible': [('alias_domain', '=', False)]}"/>
<div name="alias_def" attrs="{'invisible': [('alias_domain', '=', False)]}">
<field name="alias_name" class="oe_inline"/>@<field name="alias_domain" class="oe_inline" readonly="1"/>
</div>
</group>
<footer>
<button string="Create" name="close_dialog" type="object" class="btn-primary"/>
<button string="Discard" class="btn-default" special="cancel"/>
</footer>
</sheet>
</form>
</field>
</record>
<record id="open_create_project" model="ir.actions.act_window">
<field name="name">Create a Project</field>
<field name="res_model">project.project</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="edit_project_simplified"/>
<field name="target">new</field>
</record>
<record model="ir.ui.view" id="view_project_kanban">
<field name="name">project.project.kanban</field>
<field name="model">project.project</field>
<field name="arch" type="xml">
<kanban class="oe_background_grey o_kanban_dashboard o_project_kanban" on_create="project.open_create_project">
<field name="name"/>
<field name="use_tasks"/>
<field name="user_id"/>
<field name="color"/>
<field name="task_count"/>
<field name="task_needaction_count"/>
<field name="label_tasks"/>
<field name="task_ids"/>
<field name="alias_id"/>
<field name="alias_name"/>
<field name="alias_domain"/>
<field name="doc_count"/>
<field name="is_favorite"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="#{kanban_color(record.color.raw_value)} oe_kanban_global_click">
<div class="o_project_kanban_main">
<div class="o_kanban_card_content o_visible">
<div class="o_kanban_primary_left">
<div class="o_primary">
<span><t t-esc="record.name.value"/></span>
</div>
<div t-if="record.alias_name.value and record.alias_domain.value">
<span><i class="fa fa-envelope"></i> <t t-esc="record.alias_id.value"/></span>
</div>
</div>
</div><div class="o_kanban_card_manage_pane o_invisible">
<div class="o_kanban_card_manage_section o_kanban_manage_reports">
<div groups="project.group_project_manager">
<a type="edit">Settings</a>
</div>
<div>
<a name="%(action_project_task_user_tree_filtered)d" type="action">Tasks</a>
</div>
<div>
<a name="%(action_view_task_history_cumulative_filter)d" type="action">Cumulative Flow</a>
</div>
</div>
<div t-if="widget.editable" class="o_project_kanban_colorpicker">
<ul class="oe_kanban_colorpicker" data-field="color"/>
</div>
<div>
<a type="object" name="toggle_favorite"><i t-attf-class="fa o_dashboard_star #{record.is_favorite.raw_value ? 'fa-star' : 'fa-star-o'}" title="Click to add/remove from favorite"/> Favorite</a>
</div>
</div>
<div class="o_project_kanban_manage">
<a class="o_kanban_manage_toggle_button" href="#">More <i class="fa fa-caret-down"/></a>
</div>
</div>
<div class="o_project_kanban_boxes">
<div t-if="record.use_tasks.raw_value" class="o_project_kanban_box">
<a name="%(act_project_project_2_project_task_all)d" type="action">
<span class="o_value"><t t-esc="record.task_count.value"/></span>
<span class="o_label"><t t-esc="record.label_tasks.value"/></span>
</a>
<a t-if="record.task_needaction_count.raw_value" class="o_needaction" name="%(act_project_project_2_project_task_all)d" type="action" context="{'search_default_message_needaction': 1}">
<t t-esc="record.task_needaction_count.raw_value"/>
</a>
</div>
<a t-if="record.doc_count.raw_value" class="o_project_kanban_box" name="attachment_tree_view" type="object">
<span class="o_value"><t t-esc="record.doc_count.value"/></span>
<span class="o_label">Documents</span>
</a>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
</odoo>
+124 -3
View File
@@ -182,6 +182,116 @@
</field>
</record>
<record id="edit_project_simplified" model="ir.ui.view">
<field name="name">project.project.form.popup</field>
<field name="model">project.project</field>
<field name="arch" type="xml">
<form string="Project">
<sheet>
<group>
<field name="name" class="o_project_name oe_inline"
string="Project Name" placeholder="e.g. Office Party"/>
<label for="alias_name" string="Choose a Project Email" attrs="{'invisible': [('alias_domain', '=', False)]}"/>
<div name="alias_def" attrs="{'invisible': [('alias_domain', '=', False)]}">
<field name="alias_name" class="oe_inline"/>@<field name="alias_domain" class="oe_inline" readonly="1"/>
</div>
</group>
<footer>
<button string="Create" name="close_dialog" type="object" class="btn-primary"/>
<button string="Discard" class="btn-default" special="cancel"/>
</footer>
</sheet>
</form>
</field>
</record>
<record id="open_create_project" model="ir.actions.act_window">
<field name="name">Create a Project</field>
<field name="res_model">project.project</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="edit_project_simplified"/>
<field name="target">new</field>
</record>
<record model="ir.ui.view" id="view_project_kanban">
<field name="name">project.project.kanban</field>
<field name="model">project.project</field>
<field name="arch" type="xml">
<kanban class="oe_background_grey o_kanban_dashboard o_project_kanban" on_create="project.open_create_project">
<field name="name"/>
<field name="use_tasks"/>
<field name="user_id"/>
<field name="color"/>
<field name="task_count"/>
<field name="task_needaction_count"/>
<field name="label_tasks"/>
<field name="task_ids"/>
<field name="alias_id"/>
<field name="alias_name"/>
<field name="alias_domain"/>
<field name="doc_count"/>
<field name="is_favorite"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="#{kanban_color(record.color.raw_value)} oe_kanban_global_click">
<div class="o_project_kanban_main">
<div class="o_kanban_card_content o_visible">
<div class="o_kanban_primary_left">
<div class="o_primary">
<span><t t-esc="record.name.value"/></span>
</div>
<div t-if="record.alias_name.value and record.alias_domain.value">
<span><i class="fa fa-envelope"></i> <t t-esc="record.alias_id.value"/></span>
</div>
</div>
</div><div class="o_kanban_card_manage_pane o_invisible">
<div class="o_kanban_card_manage_section o_kanban_manage_reports">
<div groups="project.group_project_manager">
<a type="edit">Settings</a>
</div>
<div>
<a name="%(project.action_project_task_user_tree_filtered)d" type="action">Tasks</a>
</div>
<div>
<a name="%(project.action_view_task_history_cumulative_filter)d" type="action">Cumulative Flow</a>
</div>
</div>
<div t-if="widget.editable" class="o_project_kanban_colorpicker">
<ul class="oe_kanban_colorpicker" data-field="color"/>
</div>
<div>
<a type="object" name="toggle_favorite"><i t-attf-class="fa o_dashboard_star #{record.is_favorite.raw_value ? 'fa-star' : 'fa-star-o'}" title="Click to add/remove from favorite"/> Favorite</a>
</div>
</div>
<div class="o_project_kanban_manage">
<a class="o_kanban_manage_toggle_button" href="#">More <i class="fa fa-caret-down"/></a>
</div>
</div>
<div class="o_project_kanban_boxes">
<div t-if="record.use_tasks.raw_value" class="o_project_kanban_box">
<a name="%(act_project_project_2_project_task_all)d" type="action">
<span class="o_value"><t t-esc="record.task_count.value"/></span>
<span class="o_label"><t t-esc="record.label_tasks.value"/></span>
</a>
<a t-if="record.task_needaction_count.raw_value" class="o_needaction" name="%(act_project_project_2_project_task_all)d" type="action" context="{'search_default_message_needaction': 1}">
<t t-esc="record.task_needaction_count.raw_value"/>
</a>
</div>
<a t-if="record.doc_count.raw_value" class="o_project_kanban_box" name="attachment_tree_view" type="object">
<span class="o_value"><t t-esc="record.doc_count.value"/></span>
<span class="o_label">Documents</span>
</a>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="activate_sample_project" model="ir.actions.server">
<field name="name">Activate Sample Project</field>
<field name="model_id" ref="project.model_project_project"/>
@@ -251,7 +361,7 @@
</div>
<group>
<group>
<field name="project_id" domain="[('active','=',False)]" on_change="onchange_project(project_id)" context="{'default_use_tasks':1}"/>
<field name="project_id" domain="[('active', '=', False)]" on_change="onchange_project(project_id)" context="{'default_use_tasks':1}"/>
<field name="user_id"
on_change="onchange_user_id(user_id, context)"
class="o_task_user_field"
@@ -430,7 +540,7 @@
<label for="use_tasks" groups="base.group_no_one"/>
</xpath>
<xpath expr="//div[@name='button_box']" position="inside">
<button class="oe_stat_button" type="object" name="projects_action"
<button class="oe_stat_button" type="object" name="projects_action"
icon="fa-puzzle-piece" attrs="{'invisible': [('project_count', '=', 0)]}">
<field string="Projects" name="project_count" widget="statinfo"/>
</button>
@@ -637,8 +747,19 @@
<menuitem action="project_tags_action" id="menu_project_tags_act" parent="menu_project_config" groups="base.group_no_one"/>
<!-- Portal menuitems -->
<menuitem name="Projects" id="portal_services_projects" parent="portal.portal_projects"
<menuitem name="Projects" id="portal_services_projects" parent="portal.portal_projects"
action="open_view_project_all" sequence="10"/>
<!-- Reporting menus -->
<menuitem id="base.menu_project_report" name="Reports"
groups="project.group_project_manager"
parent="base.menu_main_pm" sequence="99"/>
<menuitem id="menu_project_task_user_tree" name="Tasks"
action="project.action_project_task_user_tree"
parent="base.menu_project_report"/>
<menuitem id="menu_action_view_task_history_cumulative"
action="project.action_view_task_history_cumulative"
parent="base.menu_project_report"/>
</data>
</openerp>