Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docsource/modules150-160.rst
Original file line number Diff line number Diff line change
Expand Up @@ -640,7 +640,7 @@ Module coverage 15.0 -> 16.0
+-------------------------------------------------+----------------------+-------------------------------------------------+
| product_matrix | | |
+-------------------------------------------------+----------------------+-------------------------------------------------+
| project | | |
| project |Done | |
+-------------------------------------------------+----------------------+-------------------------------------------------+
| |del| project_account | | |
+-------------------------------------------------+----------------------+-------------------------------------------------+
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from openupgradelib import openupgrade


@openupgrade.migrate()
def migrate(env, version):
openupgrade.load_data(env.cr, "project", "16.0.1.2/noupdate_changes.xml")
143 changes: 143 additions & 0 deletions openupgrade_scripts/scripts/project/16.0.1.2/pre-migration.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
from openupgradelib import openupgrade


def _create_column_for_avoiding_automatic_computing(env):
openupgrade.logged_query(
env.cr,
"""
ALTER TABLE project_task
ADD COLUMN IF NOT EXISTS is_analytic_account_id_changed boolean;
""",
)
openupgrade.logged_query(
env.cr,
"""
ALTER TABLE project_task ADD COLUMN IF NOT EXISTS is_closed boolean;
""",
)
openupgrade.logged_query(
env.cr,
"""
ALTER TABLE project_task ADD COLUMN IF NOT EXISTS is_blocked boolean;
""",
)
openupgrade.logged_query(
env.cr,
"""
ALTER TABLE project_task ADD COLUMN IF NOT EXISTS ancestor_id integer;
""",
)


def _fill_project_last_update_status_if_null(env):
openupgrade.logged_query(
env.cr,
"""
UPDATE project_project project
SET last_update_status = 'to_define'
WHERE last_update_status IS NULL;
""",
)


def _set_task_stage_type_to_fold_if_is_closed(env):
openupgrade.logged_query(
env.cr,
"""
UPDATE project_task_type
SET fold = TRUE
WHERE is_closed = TRUE;
""",
)


def _fill_project_task_is_analytic_account_id_changed(env):
openupgrade.logged_query(
env.cr,
"""
UPDATE project_task task
SET is_analytic_account_id_changed = CASE
WHEN task.analytic_account_id = project.analytic_account_id THEN FALSE
ELSE TRUE
END
FROM project_project as project
WHERE task.project_id = project.id;
""",
)


def _fill_project_task_is_closed(env):
openupgrade.logged_query(
env.cr,
"""
UPDATE project_task task
SET is_closed = CASE
WHEN stage.fold = TRUE THEN TRUE
ELSE FALSE
END
FROM project_task_type stage
WHERE task.stage_id = stage.id;
""",
)


def _fill_project_task_is_blocked(env):
openupgrade.logged_query(
env.cr,
"""
UPDATE project_task
SET is_blocked = TRUE
WHERE id IN (
SELECT task_id
FROM task_dependencies_rel
WHERE depends_on_id IN (SELECT id FROM project_task WHERE is_closed = FALSE)
);

UPDATE project_task
SET is_blocked = FALSE
WHERE id NOT IN (
SELECT task_id
FROM task_dependencies_rel
WHERE depends_on_id IN (SELECT id FROM project_task WHERE is_closed = FALSE)
);
""",
)


def _fil_project_task_ancestor_id(env):
openupgrade.logged_query(
env.cr,
"""
WITH RECURSIVE task_ancestors AS (
SELECT id, parent_id, id AS ancestor_id
FROM project_task
WHERE parent_id IS NULL

UNION ALL

SELECT pt.id, pt.parent_id, ta.ancestor_id
FROM project_task pt
INNER JOIN task_ancestors ta ON pt.parent_id = ta.id
)

UPDATE project_task pt
SET ancestor_id = ta.ancestor_id
FROM task_ancestors ta
WHERE pt.id = ta.id;

UPDATE project_task pt
SET ancestor_id = NULL
WHERE id = ancestor_id;
""",
)


@openupgrade.migrate()
def migrate(env, version):
_create_column_for_avoiding_automatic_computing(env)
_fill_project_last_update_status_if_null(env)
_set_task_stage_type_to_fold_if_is_closed(env)
_fill_project_task_is_analytic_account_id_changed(env)
_fill_project_task_is_closed(env)
_fill_project_task_is_blocked(env)
_fil_project_task_ancestor_id(env)
106 changes: 106 additions & 0 deletions openupgrade_scripts/scripts/project/16.0.1.2/upgrade_analysis_work.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
---Models in module 'project'---
obsolete model project.delete.wizard [transient]
---Fields in module 'project'---
project / account.analytic.tag / task_ids (many2many) : DEL relation: project.task
project / project.milestone / task_ids (one2many) : NEW relation: project.task
project / project.project / allow_milestones (boolean) : NEW hasdefault: default
# NOTHING TO DO

project / project.project / last_update_status (selection): not a function anymore
project / project.project / last_update_status (selection): now required
project / project.project / last_update_status (selection): selection_keys is now '['at_risk', 'off_track', 'on_hold', 'on_track', 'to_define']' ('['at_risk', 'off_track', 'on_hold', 'on_track']')
# DONE: pre-migration: set value to `to_define` if last_update_status IS NULL

project / project.project / task_properties_definition (properties_definition): NEW
project / project.tags / project_ids (many2many) : NEW relation: project.project
project / project.tags / task_ids (many2many) : NEW relation: project.task
# NOTHING TO DO

project / project.task / analytic_tag_ids (many2many) : DEL relation: account.analytic.tag
# NOTHING TO DO

project / project.task / ancestor_id (many2one) : NEW relation: project.task, isfunction: function, stored
# DONE: pre-migration: Add new column & set value for it

project / project.task / is_analytic_account_id_changed (boolean): NEW isfunction: function, stored
# DONE: pre-migration: Add new column & set value for it

project / project.task / is_blocked (boolean) : NEW isfunction: function, stored
# DONE: pre-migration: Add new column & set value for it

project / project.task / is_closed (boolean) : is now stored
# DONE: pre-migration: Add new column & set value for it

project / project.task / milestone_id (many2one) : NEW relation: project.milestone, hasdefault: compute
# NOTHING TO DO

project / project.task / task_properties (properties) : NEW hasdefault: compute
# NOTHING TO DO

project / project.task.type / is_closed (boolean) : DEL
# DONE: pre-migration: Move value to fold stage

project / res.company / analytic_plan_id (many2one) : NEW relation: account.analytic.plan, hasdefault: compute
# NOTHING TO DO

---XML records in module 'project'---
NEW digest.tip: project.digest_tip_project_1
NEW ir.actions.act_window: project.action_send_mail_project_project
NEW ir.actions.act_window: project.action_send_mail_project_task
NEW ir.actions.act_window: project.action_view_task_from_milestone
NEW ir.actions.act_window: project.open_view_project_all_config_group_stage
NEW ir.actions.act_window: project.project_sharing_project_task_action_sub_task
NEW ir.actions.act_window: project.project_task_action_sub_task
# NOTHING TO DO

DEL ir.actions.act_window: project.project_milestone_all
NEW ir.actions.act_window.view: project.open_view_all_task_list_calendar
NEW ir.actions.act_window.view: project.open_view_all_task_list_kanban
NEW ir.actions.act_window.view: project.open_view_all_task_list_tree
NEW ir.actions.act_window.view: project.open_view_project_all_config_group_stage_kanban_action_view
NEW ir.actions.act_window.view: project.open_view_project_all_config_group_stage_tree_action_view
NEW ir.actions.act_window.view: project.project_all_task_activity_action_view
NEW ir.actions.act_window.view: project.project_all_task_calendar_action_view
NEW ir.actions.act_window.view: project.project_all_task_graph_action_view
NEW ir.actions.act_window.view: project.project_all_task_pivot_action_view
NEW ir.actions.act_window.view: project.project_sharing_subtasks_form_action_view
NEW ir.actions.act_window.view: project.project_sharing_subtasks_kanban_action_view
NEW ir.actions.act_window.view: project.project_sharing_subtasks_tree_action_view
NEW ir.actions.act_window.view: project.project_task_form_action_view
NEW ir.actions.act_window.view: project.project_task_kanban_action_view
NEW ir.actions.act_window.view: project.project_task_tree_action_view
NEW ir.actions.act_window.view: project.rating_rating_action_task_kanban
NEW ir.actions.act_window.view: project.rating_rating_action_view_project_rating_kanban
# NOTHING TO DO

DEL ir.actions.server: project.unlink_project_action
NEW ir.model.access: project.access_project_task_burndown_chart_report_user
NEW ir.model.access: project.access_report_project_task_user_project_user
DEL ir.model.access: project.access_project_delete_wizard
# NOTHING TO DO

NEW ir.rule: project.burndown_chart_project_manager_rule (noupdate)
NEW ir.rule: project.burndown_chart_project_user_rule (noupdate)
NEW ir.rule: project.report_project_task_manager_rule (noupdate)
NEW ir.rule: project.report_project_task_user_rule (noupdate)
# NOTHING TO DO

NEW ir.ui.menu: project.menu_projects_config_group_stage
NEW ir.ui.view: project.rating_rating_project_view_kanban
NEW ir.ui.view: project.task_type_tree_inherited
NEW ir.ui.view: project.view_project_calendar
NEW ir.ui.view: project.view_project_config_kanban
NEW ir.ui.view: project.view_project_task_pivot_inherit
NEW ir.ui.view: project.view_project_task_type_unarchive_wizard
NEW ir.ui.view: project.view_task_all_calendar
NEW ir.ui.view: project.view_task_kanban_inherit_my_task
DEL ir.ui.view: project.project_collaborator_view_form
DEL ir.ui.view: project.project_delete_wizard_form
DEL ir.ui.view: project.project_task_burndown_chart_report_view_pivot
# NOTHING TO DO

NEW mail.message.subtype: project.mt_project_update_create (noupdate)
NEW mail.message.subtype: project.mt_task_progress (noupdate)
NEW mail.message.subtype: project.mt_update_create (noupdate)
NEW res.groups: project.group_project_milestone
# NOTHING TO DO