Files
Odoo-Modules/fusion_portal/migrations/19.0.2.6.0/end-migrate.py
gsinghpal 747c814249 refactor(fusion_portal): rename from fusion_authorizer_portal + modern photo cards on accessibility selector
Rename module fusion_authorizer_portal -> fusion_portal everywhere:
manifest/assets, controllers, models, views, JS (odoo.define + asset URLs),
migration MODULE constants; plus cross-module refs in fusion_schedule,
fusion_repairs, fusion_quotations (depends + inherit_id) and the pdf_filler
import in fusion_claims. Add rename_module.sql for the one-time in-place DB
rename (ir_module_module, ir_model_data, ir_ui_view.key,
ir_module_module_dependency) required on installed envs before -u fusion_portal.
Document the rename gotcha as rule 16 in CLAUDE.md.

Redesign the Accessibility Assessment selector: replace Font Awesome icon tiles
with photo-banner cards using 7 optimized images (1000x750 PNG -> 800x600 JPEG,
~8MB -> 488KB), per-type colour accent bar + centered pill button, hover
lift/zoom. Images ship as module static files so they deploy/sync with the module.

Drop the regenerable graphify-out cache from the module.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 22:38:14 -04:00

66 lines
1.8 KiB
Python

# -*- coding: utf-8 -*-
"""Clean up schedule-related views moved to fusion_schedule module.
The portal_schedule_page, portal_schedule_book templates and
appointment_invite_data have been moved to the standalone
fusion_schedule module. This migration removes stale ir.model.data
references so Odoo doesn't complain about orphaned records.
Also reactivates any views that Odoo silently deactivated.
"""
import logging
_logger = logging.getLogger(__name__)
MODULE = 'fusion_portal'
MOVED_XMLIDS = [
'portal_schedule_page',
'portal_schedule_book',
'default_appointment_invite',
]
def migrate(cr, version):
if not version:
return
cr.execute("""
SELECT d.res_id FROM ir_model_data d
WHERE d.module = %s AND d.name = 'default_appointment_invite'
AND d.model = 'appointment.invite'
""", [MODULE])
row = cr.fetchone()
if row:
cr.execute("DELETE FROM appointment_invite WHERE id = %s", [row[0]])
_logger.info("Deleted old appointment.invite id=%d (moving to fusion_schedule)", row[0])
for xmlid in MOVED_XMLIDS:
cr.execute("""
DELETE FROM ir_model_data
WHERE module = %s AND name = %s
""", [MODULE, xmlid])
if cr.rowcount:
_logger.info(
"Removed stale ir.model.data %s.%s (moved to fusion_schedule)",
MODULE, xmlid,
)
cr.execute("""
UPDATE ir_ui_view v
SET active = true
FROM ir_model_data d
WHERE d.res_id = v.id
AND d.model = 'ir.ui.view'
AND d.module = %s
AND v.active = false
RETURNING v.id, v.name, v.key
""", [MODULE])
rows = cr.fetchall()
if rows:
_logger.warning(
"Reactivated %d deactivated views for %s: %s",
len(rows), MODULE, [r[2] or r[1] for r in rows],
)