Skip to content

Commit

Permalink
[OU-ADD] maintenance: Migration to 17.0
Browse files Browse the repository at this point in the history
TT50085
  • Loading branch information
victoralmau committed Feb 21, 2025
1 parent 9d90a5c commit 9e197a2
Show file tree
Hide file tree
Showing 5 changed files with 114 additions and 1 deletion.
2 changes: 1 addition & 1 deletion docsource/modules160-170.rst
Original file line number Diff line number Diff line change
Expand Up @@ -638,7 +638,7 @@ Module coverage 16.0 -> 17.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| mail_plugin | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| maintenance | | |
| maintenance | Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| mass_mailing | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
Expand Down
2 changes: 2 additions & 0 deletions openupgrade_scripts/apriori.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@
# OCA/l10n-spain
"l10n_es_irnr": "l10n_es",
"l10n_es_irnr_sii": "l10n_es_aeat_sii_oca",
# OCA/maintenance
"maintenance_plan": "maintenance",
# OCA/purchase-workflow
"purchase_discount": "purchase",
# OCA/social
Expand Down
38 changes: 38 additions & 0 deletions openupgrade_scripts/scripts/maintenance/17.0.1.0/post-migration.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Copyright 2024-2025 Tecnativa - Víctor Martínez
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openupgradelib import openupgrade

_deleted_xml_records = ["maintenance.mail_alias_equipment"]


def _maintenance_plan(env):
"""Compatibility with maintenance_plan, we convert the request and
the recurrence field the way it is done in core.
"""
if openupgrade.column_exists(env.cr, "maintenance_request", "maintenance_plan_id"):
# Update all the data of the linked requests
openupgrade.logged_query(
env.cr,
"""UPDATE maintenance_request mr
SET recurring_maintenance = True,
repeat_interval = COALESCE(mp.interval, 1),
repeat_unit = COALESCE(mp.interval_step, 'year'),
repeat_type='until',
repeat_until = (
CURRENT_DATE + interval ''
|| COALESCE(mp.maintenance_plan_horizon, 1) || ' '
|| COALESCE(mp.planning_step, 'year')
)::date
FROM maintenance_plan mp
WHERE mr.maintenance_plan_id = mp.id""",
)


@openupgrade.migrate()
def migrate(env, version):
openupgrade.load_data(env, "maintenance", "17.0.1.0/noupdate_changes.xml")
openupgrade.delete_records_safely_by_xml_id(
env,
_deleted_xml_records,
)
_maintenance_plan(env)
36 changes: 36 additions & 0 deletions openupgrade_scripts/scripts/maintenance/17.0.1.0/pre-migration.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Copyright 2024 Tecnativa - Víctor Martínez
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openupgradelib import openupgrade


def _maintenance_request_company_id(env):
"""We set the company_id value for requests that do not have it.
We get the value of what will be deductively most appropriate (equipment, team or
user).
"""
openupgrade.logged_query(
env.cr,
"""UPDATE maintenance_request AS request
SET company_id = equipment.company_id
FROM maintenance_equipment AS equipment
WHERE request.company_id IS NULL AND request.equipment_id = equipment.id""",
)
openupgrade.logged_query(
env.cr,
"""UPDATE maintenance_request AS request
SET company_id = team.company_id
FROM maintenance_team AS team
WHERE request.company_id IS NULL AND request.maintenance_team_id = team.id""",
)
openupgrade.logged_query(
env.cr,
"""UPDATE maintenance_request AS request
SET company_id = u.company_id
FROM res_users AS u
WHERE request.company_id IS NULL AND request.user_id = u.id""",
)


@openupgrade.migrate()
def migrate(env, version):
_maintenance_request_company_id(env)
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---Models in module 'maintenance'---
new model maintenance.mixin [abstract]
---Fields in module 'maintenance'---
maintenance / maintenance.equipment / activity_user_id (many2one) : not related anymore
maintenance / maintenance.equipment / activity_user_id (many2one) : now a function
maintenance / maintenance.equipment / expected_mtbf (integer) : NEW
maintenance / maintenance.equipment / maintenance_duration (float) : DEL
maintenance / maintenance.equipment / message_main_attachment_id (many2one): DEL relation: ir.attachment
maintenance / maintenance.equipment / next_action_date (date) : DEL
maintenance / maintenance.equipment / period (integer) : DEL
maintenance / maintenance.equipment.category / message_main_attachment_id (many2one): DEL relation: ir.attachment
maintenance / maintenance.request / activity_user_id (many2one) : not related anymore
maintenance / maintenance.request / activity_user_id (many2one) : now a function
# NOTHING TO DO
maintenance / maintenance.request / company_id (many2one) : now required
# DONE: pre-migration: Define the most appropriate value
maintenance / maintenance.request / instruction_google_slide (char): NEW
maintenance / maintenance.request / instruction_pdf (binary) : NEW attachment: True
maintenance / maintenance.request / instruction_text (html) : NEW
maintenance / maintenance.request / instruction_type (selection) : NEW selection_keys: ['google_slide', 'pdf', 'text'], hasdefault: default
maintenance / maintenance.request / message_main_attachment_id (many2one): DEL relation: ir.attachment
# NOTHING TO DO
maintenance / maintenance.request / recurring_maintenance (boolean): NEW hasdefault: compute
maintenance / maintenance.request / repeat_interval (integer) : NEW hasdefault: default
maintenance / maintenance.request / repeat_type (selection) : NEW selection_keys: ['forever', 'until'], hasdefault: default
maintenance / maintenance.request / repeat_unit (selection) : NEW selection_keys: ['day', 'month', 'week', 'year'], hasdefault: default
maintenance / maintenance.request / repeat_until (date) : NEW
# DONE: post-migration: maintenance_plan compatibility
---XML records in module 'maintenance'---
NEW ir.actions.act_window: maintenance.action_maintenance_configuration
DEL ir.cron: maintenance.maintenance_requests_cron
NEW ir.ui.menu: maintenance.menu_maintenance_config
NEW ir.ui.view: maintenance.maintenance_request_view_activity
NEW ir.ui.view: maintenance.res_config_settings_view_form
# NOTHING TO DO
DEL mail.alias: maintenance.mail_alias_equipment (noupdate)
# DONE: removed in post-migration

0 comments on commit 9e197a2

Please sign in to comment.