# -*- 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_authorizer_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],
        )
