odoo-addon-openupgrade-scripts 17.0.1.0.1.295__py3-none-any.whl → 17.0.1.0.1.299__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,196 @@
1
+ # Copyright 2024 Viindoo Technology Joint Stock Company (Viindoo)
2
+ # Copyright 2025 Tecnativa - Pedro M. Baeza
3
+ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
4
+
5
+ from datetime import timedelta
6
+
7
+ from dateutil.rrule import FR, MO, MONTHLY, SA, SU, TH, TU, WE, YEARLY, rrule
8
+ from openupgradelib import openupgrade
9
+
10
+ _deleted_xml_records = [
11
+ "project.ir_cron_recurring_tasks",
12
+ "project.mt_project_task_blocked",
13
+ "project.mt_project_task_dependency_change",
14
+ "project.mt_project_task_ready",
15
+ "project.mt_task_blocked",
16
+ "project.mt_task_dependency_change",
17
+ "project.mt_task_progress",
18
+ "project.mt_task_ready",
19
+ ]
20
+
21
+
22
+ def _fill_project_task_display_in_project(env):
23
+ """Set it to False when there's a parent but not display project."""
24
+ openupgrade.logged_query(
25
+ env.cr,
26
+ """
27
+ UPDATE project_task
28
+ SET display_in_project = False
29
+ WHERE parent_id IS NOT NULL AND display_project_id IS NULL;
30
+ """,
31
+ )
32
+
33
+
34
+ def _convert_project_task_repeat_type_after(env):
35
+ """Convert the disappeared "repeat N times" strategy to "repeat until"."""
36
+ DAYS_MAPPING = {
37
+ "mon": MO,
38
+ "tue": TU,
39
+ "wed": WE,
40
+ "thu": TH,
41
+ "fri": FR,
42
+ "sat": SA,
43
+ "sun": SU,
44
+ }
45
+ WEEKS_MAPPING = {"first": 1, "second": 2, "third": 3, "last": 4}
46
+ MONTH_MAPPING = {
47
+ "january": 1,
48
+ "february": 2,
49
+ "march": 3,
50
+ "april": 4,
51
+ "may": 5,
52
+ "june": 6,
53
+ "july": 7,
54
+ "august": 8,
55
+ "september": 9,
56
+ "october": 10,
57
+ "november": 11,
58
+ "december": 12,
59
+ }
60
+ # First, expire all the already consumed recurrences
61
+ openupgrade.logged_query(
62
+ env.cr,
63
+ """
64
+ UPDATE project_task_recurrence
65
+ SET repeat_type = 'until',
66
+ repeat_until = (CURRENT_DATE - interval '1 days')::date
67
+ WHERE repeat_type = 'after'
68
+ AND recurrence_left <= 0
69
+ """,
70
+ )
71
+ # For day interval, we can do it massively by SQL, as there's no variability
72
+ openupgrade.logged_query(
73
+ env.cr,
74
+ """
75
+ WITH sub AS (
76
+ SELECT recurrence_id, MAX(date_deadline) AS date_deadline
77
+ FROM project_task
78
+ WHERE recurrence_id IS NOT NULL
79
+ GROUP by recurrence_id
80
+ )
81
+ UPDATE project_task_recurrence ptr
82
+ SET repeat_type = 'until',
83
+ repeat_until = (
84
+ sub.date_deadline + (
85
+ interval '1 days' * ptr.repeat_interval * ptr.recurrence_left
86
+ )
87
+ )::date
88
+ FROM sub
89
+ WHERE ptr.id = sub.recurrence_id
90
+ AND ptr.repeat_type = 'after'
91
+ AND ptr.repeat_unit = 'day'
92
+ AND ptr.recurrence_left > 0
93
+ """,
94
+ )
95
+ # WEEK
96
+ # - Obtain the number of days per week of each ocurrence
97
+ # - Get the remaining weeks from the number of days per week
98
+ # - Always put the end date on the last day of the week (Sunday)
99
+ env.cr.execute(
100
+ """
101
+ SELECT
102
+ ptr.id, ptr.recurrence_left, ptr.repeat_interval,
103
+ ptr.mon, ptr.tue, ptr.wed, ptr.thu, ptr.fri, ptr.sat, ptr.sun,
104
+ MAX(pt.date_deadline) AS date_deadline
105
+ FROM project_task pt JOIN project_task_recurrence ptr
106
+ ON ptr.id = pt.recurrence_id
107
+ WHERE ptr.repeat_type = 'after'
108
+ AND ptr.repeat_unit = 'week'
109
+ AND date_deadline IS NOT NULL
110
+ GROUP BY pt.id, ptr.id
111
+ """
112
+ )
113
+ for row in env.cr.dictfetchall():
114
+ ptr = env["project.task.recurrence"].browse(row["id"])
115
+ days_per_week = sum(1 if row[x] else 0 for x in DAYS_MAPPING)
116
+ weeks = int(row["recurrence_left"] % days_per_week) + 1
117
+ repeat_until = row["date_deadline"] + timedelta(
118
+ weeks=weeks * row["repeat_interval"]
119
+ )
120
+ repeat_until += timedelta(days=6 - repeat_until.weekday()) # Put Sunday
121
+ ptr.write({"repeat_type": "until", "repeat_until": repeat_until})
122
+ # MONTH AND YEAR
123
+ # - Build rrule inspired on v16 code, but in an optimized way
124
+ # - Get end date through rrule execution
125
+ env.cr.execute(
126
+ """
127
+ SELECT
128
+ ptr.id, ptr.recurrence_left, ptr.repeat_interval, ptr.repeat_unit,
129
+ ptr.repeat_on_month, ptr.repeat_on_year, ptr.repeat_day, ptr.repeat_month,
130
+ ptr.repeat_week, ptr.repeat_weekday, MAX(pt.date_deadline) AS date_deadline
131
+ FROM project_task pt JOIN project_task_recurrence ptr
132
+ ON ptr.id = pt.recurrence_id
133
+ WHERE ptr.repeat_type = 'after'
134
+ AND ptr.repeat_unit IN ('month', 'year')
135
+ AND date_deadline IS NOT NULL
136
+ GROUP BY pt.id, ptr.id
137
+ """
138
+ )
139
+ for row in env.cr.dictfetchall():
140
+ ptr = env["project.task.recurrence"].browse(row["id"])
141
+ rrule_kwargs = {
142
+ "interval": row["recurrence_left"] * row["repeat_interval"],
143
+ "dtstart": row["date_deadline"],
144
+ "freq": MONTHLY if row["repeat_unit"] == "month" else YEARLY,
145
+ }
146
+ if (row["repeat_on_month"] == "day" and row["repeat_unit"] == "month") or (
147
+ row["repeat_on_year"] == "day" and row["repeat_unit"] == "year"
148
+ ):
149
+ rrule_kwargs["byweekday"] = [
150
+ DAYS_MAPPING[row["repeat_weekday"]](WEEKS_MAPPING[row["repeat_week"]])
151
+ ]
152
+ if row["repeat_unit"] == "year" and row["repeat_on_year"] == "date":
153
+ rrule_kwargs["bymonth"] = MONTH_MAPPING[row["repeat_month"]]
154
+ repeat_until = list(rrule(**rrule_kwargs))[1]
155
+ if row["repeat_unit"] == "month" and row["repeat_on_month"] == "date":
156
+ repeat_until = repeat_until.replace(day=int(row["repeat_day"]))
157
+ if row["repeat_unit"] == "year" and row["repeat_on_year"] == "date":
158
+ repeat_until = repeat_until.replace(
159
+ day=int(row["repeat_day"]), month=MONTH_MAPPING[row["repeat_month"]]
160
+ )
161
+ ptr.write({"repeat_type": "until", "repeat_until": repeat_until})
162
+
163
+
164
+ def _fill_project_update_task_count(env):
165
+ """Use an heuristics to get the fields task_count and closed_task_count for
166
+ historical project updates:
167
+
168
+ - Task count: the number of tasks which creation date is below project update
169
+ creation date.
170
+ - Closed task count: the number of tasks which end date is below project update
171
+ creation date.
172
+ """
173
+ for update in env["project.update"].search([]):
174
+ base_domain = [("display_project_id", "=", update.project_id.id)]
175
+ update.task_count = env["project.task"].search_count(
176
+ base_domain + [("create_date", "<=", update.create_date)]
177
+ )
178
+ update.closed_task_count = env["project.task"].search_count(
179
+ base_domain + [("date_end", "<=", update.create_date)]
180
+ )
181
+
182
+
183
+ @openupgrade.migrate()
184
+ def migrate(env, version):
185
+ _fill_project_task_display_in_project(env)
186
+ _convert_project_task_repeat_type_after(env)
187
+ openupgrade.load_data(env, "project", "17.0.1.3/noupdate_changes.xml")
188
+ openupgrade.delete_record_translations(
189
+ env.cr,
190
+ "project",
191
+ ("project_message_user_assigned", "rating_project_request_email_template"),
192
+ )
193
+ openupgrade.delete_records_safely_by_xml_id(
194
+ env,
195
+ _deleted_xml_records,
196
+ )
@@ -0,0 +1,63 @@
1
+ # Copyright 2024 Viindoo Technology Joint Stock Company (Viindoo)
2
+ # Copyright 2025 Tecnativa - Pedro M. Baeza
3
+ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
4
+
5
+ from openupgradelib import openupgrade
6
+
7
+
8
+ def _rename_fields(env):
9
+ openupgrade.rename_fields(
10
+ env,
11
+ [
12
+ ("project.task", "project_task", "planned_hours", "allocated_hours"),
13
+ (
14
+ "project.task.type",
15
+ "project_task_type",
16
+ "auto_validation_kanban_state",
17
+ "auto_validation_state",
18
+ ),
19
+ ],
20
+ )
21
+
22
+
23
+ def _convert_project_task_state(env):
24
+ """Handle kanban_state, is_closed, etc to state conversion."""
25
+ openupgrade.add_fields(
26
+ env, [("state", "project.task", "project_task", "selection", False, "project")]
27
+ )
28
+ openupgrade.logged_query(
29
+ env.cr,
30
+ """
31
+ UPDATE project_task
32
+ SET state = CASE
33
+ WHEN kanban_state = 'done' THEN CASE
34
+ WHEN is_closed THEN '1_done'
35
+ ELSE '03_approved'
36
+ END
37
+ WHEN kanban_state = 'blocked' THEN CASE
38
+ WHEN is_closed THEN '1_canceled'
39
+ ELSE '02_changes_requested'
40
+ END
41
+ ELSE '01_in_progress'
42
+ END
43
+ WHERE kanban_state IN ('done', 'blocked', 'normal');
44
+ """,
45
+ )
46
+ # Secnd pass for setting '04_waiting_normal' on tasks with "Blocked By" entries
47
+ # that qualify
48
+ openupgrade.logged_query(
49
+ env.cr,
50
+ """
51
+ UPDATE project_task pt
52
+ SET state = '04_waiting_normal'
53
+ FROM task_dependencies_rel rel
54
+ JOIN project_task dep ON dep.id = rel.depends_on_id
55
+ WHERE rel.task_id = pt.id AND dep.state NOT IN ('1_done', '1_canceled')
56
+ """,
57
+ )
58
+
59
+
60
+ @openupgrade.migrate()
61
+ def migrate(env, version):
62
+ _rename_fields(env)
63
+ _convert_project_task_state(env)
@@ -0,0 +1,234 @@
1
+ ---Models in module 'project'---
2
+ new model project.project.stage.delete.wizard [transient]
3
+ # NOTHING TO DO
4
+
5
+ ---Fields in module 'project'---
6
+ project / project.milestone / message_main_attachment_id (many2one): DEL relation: ir.attachment
7
+ project / project.milestone / rating_ids (one2many) : NEW relation: rating.rating
8
+ project / project.project / activity_user_id (many2one) : not related anymore
9
+ project / project.project / activity_user_id (many2one) : now a function
10
+ # NOTHING TO DO
11
+
12
+ project / project.project / alias_enabled (boolean) : DEL
13
+ project / project.project / allow_recurring_tasks (boolean): DEL
14
+ project / project.project / allow_subtasks (boolean) : DEL
15
+ # NOTHING TO DO:
16
+
17
+ project / project.project / company_id (many2one) : now a function
18
+ # NOTHING TO DO: handled by ORM
19
+
20
+ project / project.project / currency_id (many2one) : not related anymore
21
+ project / project.project / currency_id (many2one) : now a function
22
+ # NOTHING TO DO: compute non-stored
23
+
24
+ project / project.project / last_update_status (selection): selection_keys is now '['at_risk', 'done', 'off_track', 'on_hold', 'on_track', 'to_define']' ('['at_risk', 'off_track', 'on_hold', 'on_track', 'to_define']')
25
+ # NOTHING TO DO: new key: 'done'
26
+
27
+ project / project.project / message_main_attachment_id (many2one): DEL relation: ir.attachment
28
+ # NOTHING TO DO
29
+
30
+ project / project.project / partner_email (char) : DEL
31
+ project / project.project / partner_phone (char) : DEL
32
+ # NOTHING TO DO
33
+
34
+ project / project.project / resource_calendar_id (many2one): not related anymore
35
+ project / project.project / resource_calendar_id (many2one): now a function
36
+ # NOTHING TO DO: compute non-stored
37
+
38
+ project / project.project.stage / company_id (many2one) : NEW relation: res.company
39
+ project / project.tags / _order : _order is now 'name' ('id')
40
+ project / project.task / _order : _order is now 'priority desc, sequence, date_deadline asc, id desc' ('priority desc, sequence, id desc')
41
+ # NOTHING TO DO
42
+
43
+ project / project.task / activity_user_id (many2one) : not related anymore
44
+ project / project.task / activity_user_id (many2one) : now a function
45
+ # NOTHING TO DO
46
+
47
+ project / project.task / allocated_hours (float) : NEW
48
+ project / project.task / planned_hours (float) : DEL
49
+ # DONE: rename planned_hours -> allocated_hours
50
+
51
+ project / project.task / ancestor_id (many2one) : DEL relation: project.task
52
+ project / project.task / date_deadline (date) : type is now 'datetime' ('date')
53
+ # NOTHING TO DO
54
+
55
+ project / project.task / display_in_project (boolean) : NEW
56
+ project / project.task / display_project_id (many2one) : DEL relation: project.project
57
+ # DONE: post-migration: set display_in_project to False when there's a parent but no display project
58
+
59
+ project / project.task / email_from (char) : DEL
60
+ project / project.task / fri (boolean) : DEL
61
+ project / project.task / is_analytic_account_id_changed (boolean): DEL
62
+ project / project.task / is_blocked (boolean) : DEL
63
+ project / project.task / message_main_attachment_id (many2one): DEL relation: ir.attachment
64
+ project / project.task / mon (boolean) : DEL
65
+ project / project.task / partner_email (char) : DEL
66
+ project / project.task / partner_phone (char) : DEL
67
+ # NOTHING TO DO
68
+
69
+ project / project.task / recurrence_update (selection) : DEL selection_keys: ['all', 'subsequent', 'this']
70
+ project / project.task / repeat_day (selection) : DEL selection_keys: ['1', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '2', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '3', '30', '31', '4', '5', '6', '7', '8', '9']
71
+ project / project.task / repeat_month (selection) : DEL selection_keys: ['april', 'august', 'december', 'february', 'january', 'july', 'june', 'march', 'may', 'november', 'october', 'september']
72
+ project / project.task / repeat_number (integer) : DEL
73
+ project / project.task / repeat_on_month (selection) : DEL selection_keys: ['date', 'day']
74
+ project / project.task / repeat_on_year (selection) : DEL selection_keys: ['date', 'day']
75
+ project / project.task / repeat_type (selection) : selection_keys is now '['forever', 'until']' ('['after', 'forever', 'until']')
76
+ project / project.task / repeat_week (selection) : DEL selection_keys: ['first', 'last', 'second', 'third']
77
+ project / project.task / repeat_weekday (selection) : DEL selection_keys: ['fri', 'mon', 'sat', 'sun', 'thu', 'tue', 'wed']
78
+ project / project.task / sat (boolean) : DEL
79
+ # NOTHING TO DO: deleted fields, the recurrence task option has been simplified in odoo 17
80
+ # There is no longer the ability to select days of the week, there is no longer the ability to select days of the month
81
+
82
+ project / project.task / is_closed (boolean) : DEL
83
+ project / project.task / kanban_state (selection) : DEL required, selection_keys: ['blocked', 'done', 'normal']
84
+ project / project.task / state (selection) : NEW required, selection_keys: ['01_in_progress', '02_changes_requested', '03_approved', '04_waiting_normal', '1_canceled', '1_done'], isfunction: function, stored
85
+ # DONE: pre-migration: add the field and convert data from kanban_state, is_closed to state. Done in pre for avoiding the ORM computation.
86
+
87
+ project / project.task / sun (boolean) : DEL
88
+ project / project.task / thu (boolean) : DEL
89
+ project / project.task / tue (boolean) : DEL
90
+ project / project.task / wed (boolean) : DEL
91
+ # NOTHING TO DO
92
+
93
+ project / project.task.recurrence / fri (boolean) : DEL
94
+ project / project.task.recurrence / mon (boolean) : DEL
95
+ project / project.task.recurrence / next_recurrence_date (date) : DEL
96
+ project / project.task.recurrence / recurrence_left (integer) : DEL
97
+ project / project.task.recurrence / repeat_day (selection) : DEL selection_keys: ['1', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '2', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '3', '30', '31', '4', '5', '6', '7', '8', '9']
98
+ project / project.task.recurrence / repeat_month (selection) : DEL selection_keys: ['april', 'august', 'december', 'february', 'january', 'july', 'june', 'march', 'may', 'november', 'october', 'september']
99
+ project / project.task.recurrence / repeat_on_month (selection) : DEL selection_keys: ['date', 'day']
100
+ project / project.task.recurrence / repeat_on_year (selection) : DEL selection_keys: ['date', 'day']
101
+ project / project.task.recurrence / repeat_week (selection) : DEL selection_keys: ['first', 'last', 'second', 'third']
102
+ project / project.task.recurrence / repeat_weekday (selection) : DEL selection_keys: ['fri', 'mon', 'sat', 'sun', 'thu', 'tue', 'wed']
103
+ project / project.task.recurrence / sat (boolean) : DEL
104
+ project / project.task.recurrence / sun (boolean) : DEL
105
+ project / project.task.recurrence / thu (boolean) : DEL
106
+ project / project.task.recurrence / tue (boolean) : DEL
107
+ project / project.task.recurrence / wed (boolean) : DEL
108
+ # NOTHING TO DO: The recurrence task option has been simplified in odoo 17:
109
+ # There is no longer the ability to select days of the week, there is no longer the ability to select days of the month.
110
+ # If we want to restore the old behavior, an OCA module should be done
111
+
112
+ project / project.task.recurrence / repeat_type (selection) : selection_keys is now '['forever', 'until']' ('['after', 'forever', 'until']')
113
+ project / project.task.recurrence / repeat_number (integer) : DEL
114
+ # DONE: post-migration: replace setting 'after' by 'until' in combination with "repeat_until" extracting the information from date_deadline, repeat_number, repeat_interval, repeat_unit and the rest of the involved fields
115
+
116
+ project / project.task.type / auto_validation_kanban_state (boolean): DEL
117
+ project / project.task.type / auto_validation_state (boolean): NEW hasdefault: default
118
+ # DONE pre-migration: rename field
119
+
120
+ project / project.task.type / legend_blocked (char) : DEL required
121
+ project / project.task.type / legend_done (char) : DEL required
122
+ project / project.task.type / legend_normal (char) : DEL required
123
+ project / project.task.type / user_id (many2one) : now a function
124
+ # NOTHING TO DO
125
+
126
+ project / project.update / _order : _order is now 'id desc' ('date desc')
127
+ project / project.update / activity_user_id (many2one) : not related anymore
128
+ project / project.update / activity_user_id (many2one) : now a function
129
+ # NOTHING TO DO
130
+
131
+ project / project.update / closed_task_count (integer) : NEW
132
+ project / project.update / task_count (integer) : NEW
133
+ # DONE: post-migration: Infer under a heuristics these fields for historical data
134
+
135
+ project / project.update / message_main_attachment_id (many2one): DEL relation: ir.attachment
136
+ project / project.update / rating_ids (one2many) : NEW relation: rating.rating
137
+ project / project.update / status (selection) : selection_keys is now '['at_risk', 'done', 'off_track', 'on_hold', 'on_track']' ('['at_risk', 'off_track', 'on_hold', 'on_track']')
138
+ project / res.company / analytic_plan_id (many2one) : DEL relation: account.analytic.plan
139
+ project / res.partner / project_ids (one2many) : NEW relation: project.project
140
+ # NOTHING TO DO
141
+
142
+ ---XML records in module 'project'---
143
+ NEW ir.actions.act_window: project.action_view_my_task
144
+ NEW ir.actions.act_window: project.mail_activity_plan_action_config_project_task_plan
145
+ NEW ir.actions.act_window: project.mail_activity_plan_action_config_task_plan
146
+ NEW ir.actions.act_window.view: project.mail_activity_plan_action_project_task_view_form
147
+ NEW ir.actions.act_window.view: project.mail_activity_plan_action_project_task_view_tree
148
+ NEW ir.actions.act_window.view: project.open_view_my_task_list_calendar
149
+ NEW ir.actions.act_window.view: project.open_view_my_task_list_kanban
150
+ NEW ir.actions.act_window.view: project.open_view_my_task_list_tree
151
+ NEW ir.actions.act_window.view: project.open_view_project_all_group_stage_kanban_view
152
+ NEW ir.actions.act_window.view: project.open_view_project_all_group_stage_tree_view
153
+ NEW ir.actions.server: project.action_server_convert_to_subtask
154
+ NEW ir.actions.server: project.action_server_view_my_task
155
+ NEW ir.actions.server: project.unlink_project_stage_action
156
+ # NOTHING TO DO
157
+
158
+ DEL ir.cron: project.ir_cron_recurring_tasks (noupdate)
159
+ # DONE: delete in post-migration
160
+
161
+ NEW ir.model.access: project.access_mail_activity_plan_project_manager
162
+ NEW ir.model.access: project.access_mail_activity_plan_template_project_manager
163
+ NEW ir.model.access: project.access_project_project_stage_delete_wizard
164
+ NEW ir.model.constraint: project.constraint_project_task_private_task_has_no_parent
165
+ NEW ir.model.constraint: project.constraint_project_task_recurring_task_has_no_parent
166
+ NEW ir.rule: project.mail_plan_rule_group_project_manager_task (noupdate)
167
+ NEW ir.rule: project.mail_plan_templates_rule_group_project_manager_task (noupdate)
168
+ NEW ir.rule: project.project_project_stage_rule (noupdate)
169
+ # NOTHING TO DO: new feature
170
+
171
+ NEW ir.ui.menu: project.mail_activity_plan_menu_config_project
172
+ NEW ir.ui.menu: project.menu_project_management_all_tasks
173
+ NEW ir.ui.menu: project.menu_project_management_my_tasks
174
+ DEL ir.ui.menu: project.menu_tasks_config
175
+ # NOTHING TO DO: new feature
176
+
177
+ NEW ir.ui.view: project.mail_activity_plan_view_form_project_and_task
178
+ NEW ir.ui.view: project.open_view_all_tasks_list_view
179
+ NEW ir.ui.view: project.open_view_my_tasks_list_view
180
+ NEW ir.ui.view: project.portal_my_task_allocated_hours_template
181
+ NEW ir.ui.view: project.project_kanban_view_group_stage
182
+ NEW ir.ui.view: project.project_list_view_group_stage
183
+ NEW ir.ui.view: project.project_project_view_activity
184
+ NEW ir.ui.view: project.project_share_wizard_confirm_form
185
+ NEW ir.ui.view: project.project_task_convert_to_subtask_view_form
186
+ NEW ir.ui.view: project.project_task_view_tree_base
187
+ NEW ir.ui.view: project.project_task_view_tree_main_base
188
+ NEW ir.ui.view: project.quick_create_project_form
189
+ NEW ir.ui.view: project.quick_create_task_form_inherit_view_default_project
190
+ NEW ir.ui.view: project.task_link_preview_front_end
191
+ NEW ir.ui.view: project.task_link_preview_portal_layout
192
+ NEW ir.ui.view: project.view_project_config
193
+ NEW ir.ui.view: project.view_project_config_group_stage
194
+ NEW ir.ui.view: project.view_project_config_kanban_group_stage
195
+ NEW ir.ui.view: project.view_project_project_stage_delete_wizard
196
+ NEW ir.ui.view: project.view_project_project_stage_unarchive_wizard
197
+ NEW ir.ui.view: project.view_task_kanban_inherit_all_task
198
+ NEW ir.ui.view: project.view_task_kanban_inherit_view_default_project
199
+ NEW ir.ui.view: project.view_task_search_form_base
200
+ NEW ir.ui.view: project.view_task_search_form_project_base
201
+ NEW ir.ui.view: project.view_task_search_form_project_fsm_base
202
+ # NOTHING TO DO
203
+
204
+ DEL ir.ui.view: project.portal_my_task_planned_hours_template
205
+ DEL ir.ui.view: project.project_task_view_tree_activity
206
+ DEL ir.ui.view: project.report_project_task_user_view_tree
207
+ DEL ir.ui.view: project.view_task_search_form_extended
208
+ # NOTHING TO DO
209
+
210
+ NEW mail.message.subtype: project.mt_project_task_approved (noupdate)
211
+ NEW mail.message.subtype: project.mt_project_task_canceled (noupdate)
212
+ NEW mail.message.subtype: project.mt_project_task_changes_requested (noupdate)
213
+ NEW mail.message.subtype: project.mt_project_task_done (noupdate)
214
+ NEW mail.message.subtype: project.mt_project_task_in_progress (noupdate)
215
+ NEW mail.message.subtype: project.mt_project_task_waiting (noupdate)
216
+ NEW mail.message.subtype: project.mt_task_approved (noupdate)
217
+ NEW mail.message.subtype: project.mt_task_canceled (noupdate)
218
+ NEW mail.message.subtype: project.mt_task_changes_requested (noupdate)
219
+ NEW mail.message.subtype: project.mt_task_done (noupdate)
220
+ NEW mail.message.subtype: project.mt_task_in_progress (noupdate)
221
+ NEW mail.message.subtype: project.mt_task_waiting (noupdate)
222
+ # NOTHING TO DO
223
+
224
+ DEL mail.message.subtype: project.mt_project_task_blocked (noupdate)
225
+ DEL mail.message.subtype: project.mt_project_task_dependency_change (noupdate)
226
+ DEL mail.message.subtype: project.mt_project_task_ready (noupdate)
227
+ DEL mail.message.subtype: project.mt_task_blocked (noupdate)
228
+ DEL mail.message.subtype: project.mt_task_dependency_change (noupdate)
229
+ DEL mail.message.subtype: project.mt_task_progress (noupdate)
230
+ DEL mail.message.subtype: project.mt_task_ready (noupdate)
231
+ # DONE: safely delete in post-migration
232
+
233
+ DEL res.groups: project.group_subtask_project
234
+ # NOTHING TO DO
@@ -0,0 +1,23 @@
1
+ ---Models in module 'website_event_track'---
2
+ ---Fields in module 'website_event_track'---
3
+ website_event_track / event.track / activity_user_id (many2one) : not related anymore
4
+ website_event_track / event.track / activity_user_id (many2one) : now a function
5
+ website_event_track / event.track / message_main_attachment_id (many2one): DEL relation: ir.attachment
6
+ website_event_track / event.track / rating_ids (one2many) : NEW relation: rating.rating
7
+ # NOTHING TO DO
8
+ ---XML records in module 'website_event_track'---
9
+ NEW ir.model.access: website_event_track.access_event_track_employee
10
+ NEW ir.model.access: website_event_track.access_event_track_portal
11
+ NEW ir.model.access: website_event_track.access_event_track_public
12
+ NEW ir.model.access: website_event_track.access_event_track_stage_employee
13
+ NEW ir.model.access: website_event_track.access_event_track_stage_portal
14
+ NEW ir.model.access: website_event_track.access_event_track_stage_public
15
+ NEW ir.model.access: website_event_track.access_event_track_tag_employee
16
+ NEW ir.model.access: website_event_track.access_event_track_tag_portal
17
+ NEW ir.model.access: website_event_track.access_event_track_tag_public
18
+ DEL ir.model.access: website_event_track.access_event_track
19
+ DEL ir.model.access: website_event_track.access_event_track_location
20
+ DEL ir.model.access: website_event_track.access_event_track_stage
21
+ DEL ir.model.access: website_event_track.access_event_track_tag
22
+ DEL ir.model.access: website_event_track.access_event_track_tag_category
23
+ # NOTHING TO DO. Odoo assigns groups to ACLs that stay without a group.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-openupgrade_scripts
3
- Version: 17.0.1.0.1.295
3
+ Version: 17.0.1.0.1.299
4
4
  Requires-Python: >=3.10
5
5
  Requires-Dist: odoo>=17.0a,<17.1dev
6
6
  Requires-Dist: openupgradelib
@@ -526,7 +526,10 @@ odoo/addons/openupgrade_scripts/scripts/product_expiry/17.0.1.0/upgrade_analysis
526
526
  odoo/addons/openupgrade_scripts/scripts/product_images/17.0.1.0/upgrade_analysis.txt,sha256=ZFdJzO3tOMvoa1XV86Kzqw5uqUSHhXmQjlN8ebFkbS8,165
527
527
  odoo/addons/openupgrade_scripts/scripts/product_margin/17.0.1.0/upgrade_analysis.txt,sha256=4ttHOXP24HQX80aD5j6gIjzZBzhAD599KgvOxkR9wmM,165
528
528
  odoo/addons/openupgrade_scripts/scripts/project/17.0.1.3/noupdate_changes.xml,sha256=kuc_hH18-FzRvDUBYZ-PZak_1MlhVqZOA0YY1mXNah8,6665
529
+ odoo/addons/openupgrade_scripts/scripts/project/17.0.1.3/post-migration.py,sha256=vWjpZaubAmwbOt3xgh2AalljmLYnLOZAOtc1m7p6-cg,7316
530
+ odoo/addons/openupgrade_scripts/scripts/project/17.0.1.3/pre-migration.py,sha256=8YxrddTLOUK3pk04Gn04wl5vjaLTW7RwLnCmTDTrY1g,1906
529
531
  odoo/addons/openupgrade_scripts/scripts/project/17.0.1.3/upgrade_analysis.txt,sha256=IplxnUO7IaWhFqn-cdKH6WrsihyAqOHQh8_jmdeWycQ,14096
532
+ odoo/addons/openupgrade_scripts/scripts/project/17.0.1.3/upgrade_analysis_work.txt,sha256=ubbJKApiM_7UL_Xlv7j8uiBLC9ggsfpey4FVt1o9EI4,15791
530
533
  odoo/addons/openupgrade_scripts/scripts/project_account/17.0.1.0/upgrade_analysis.txt,sha256=lx-fG9hTBhBenpcIyDgWbGbyeiOgNnI8zaDZQYaog0Y,651
531
534
  odoo/addons/openupgrade_scripts/scripts/project_hr_expense/17.0.1.0/upgrade_analysis.txt,sha256=yACyVRcjb1HQpDunih7oLjN_mOPWDyMhm6JOgYUhNmM,177
532
535
  odoo/addons/openupgrade_scripts/scripts/project_mrp/17.0.1.0/upgrade_analysis.txt,sha256=-MQoSXEnRnNoFaQbQ3KinscFFDASuoP70EbSph6GiyQ,156
@@ -679,6 +682,7 @@ odoo/addons/openupgrade_scripts/scripts/website_event_exhibitor/17.0.1.1/upgrade
679
682
  odoo/addons/openupgrade_scripts/scripts/website_event_meet/17.0.1.0/upgrade_analysis.txt,sha256=8n6r65MGuzUsRuwI8Wg4GEc-4xf9Gxpc7apDpq7o_T4,424
680
683
  odoo/addons/openupgrade_scripts/scripts/website_event_sale/17.0.1.0/upgrade_analysis.txt,sha256=RD6Mzk_JereQL4WGK6xwcVlWKSSWUb4gVT1fTYWheKc,443
681
684
  odoo/addons/openupgrade_scripts/scripts/website_event_track/17.0.1.3/upgrade_analysis.txt,sha256=4gw_RM8A1lVugLBL49EjxWi0hGaUdIx-06yetcDVrY4,1533
685
+ odoo/addons/openupgrade_scripts/scripts/website_event_track/17.0.1.3/upgrade_analysis_work.txt,sha256=SACisWnr90UwZ8cmbI8xMuZFY98d9JjsnvlAAkdgg4E,1621
682
686
  odoo/addons/openupgrade_scripts/scripts/website_event_track_live/17.0.1.0/upgrade_analysis.txt,sha256=nkw3qu5MZkHIEhC1Ysc3gid3fMt8wW0fmhDZs9h8pck,195
683
687
  odoo/addons/openupgrade_scripts/scripts/website_event_track_quiz/17.0.1.0/upgrade_analysis.txt,sha256=UhqqYMoCUY3akNEdgtGeVw35anBJUQjSgit8c1xx_PA,195
684
688
  odoo/addons/openupgrade_scripts/scripts/website_form_project/17.0.1.0/upgrade_analysis.txt,sha256=ZOWcB0tufrrhjRnUwoW2RRk638uox68dGHZ1CM1RR5g,266
@@ -728,7 +732,7 @@ odoo/addons/openupgrade_scripts/scripts/website_twitter/17.0.1.0/upgrade_analysi
728
732
  odoo/addons/openupgrade_scripts/static/description/banner.png,sha256=KTIBu4gfxeZVw9zjs_fivTgFEOeaAorlBxajmCA1p6k,26859
729
733
  odoo/addons/openupgrade_scripts/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
730
734
  odoo/addons/openupgrade_scripts/static/description/index.html,sha256=iV41-zYBM4uvZPuunpcr7bQeRgBaojVsKo_gkeyJyA4,12639
731
- odoo_addon_openupgrade_scripts-17.0.1.0.1.295.dist-info/METADATA,sha256=0OATODI1g0I7IqEWwWmPKsPQaTE5WVTw_ymfUdks3V8,3786
732
- odoo_addon_openupgrade_scripts-17.0.1.0.1.295.dist-info/WHEEL,sha256=9fEMia4zL7ZuZbnCOrcYogUhmn4XFIVaJ8G4YGI31xc,81
733
- odoo_addon_openupgrade_scripts-17.0.1.0.1.295.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
734
- odoo_addon_openupgrade_scripts-17.0.1.0.1.295.dist-info/RECORD,,
735
+ odoo_addon_openupgrade_scripts-17.0.1.0.1.299.dist-info/METADATA,sha256=luPxZEFa1EwMfm2zumzLkzeWFi3BRPmZ-KsmdaB670U,3786
736
+ odoo_addon_openupgrade_scripts-17.0.1.0.1.299.dist-info/WHEEL,sha256=9fEMia4zL7ZuZbnCOrcYogUhmn4XFIVaJ8G4YGI31xc,81
737
+ odoo_addon_openupgrade_scripts-17.0.1.0.1.299.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
738
+ odoo_addon_openupgrade_scripts-17.0.1.0.1.299.dist-info/RECORD,,