openerp – La página de plantillas de Odoo no se actualiza cuando cambia xml

Acabo de iniciar Odoo para un cliente y tengo un problema importante con una plantilla.

Una plantilla simple que tiene algunos divs y encabezados.
También tengo un registro para que se muestre en el menú principal.

Todo funciona cuando lo creo por primera vez.
Sin embargo, si sucede que quiero agregar o cambiar algunos html, esos cambios no se muestran en la página del sitio web (incluso después de actualizar / actualizar el tema).
El creador del sitio web me permite cambiar el texto y otras cosas, pero eso no es lo que necesito. Quiero poder cambiar la estructura html desde el XML. Pero tan pronto como se crea la página la primera vez … no se me permite. La página solo mostrará la página como se creó por primera vez.

Espero que esté claro y gracias de antemano por cualquier ayuda.

Joe

Mejor respuesta
Versión: Odoo todas las noches 10.0-20170427

tl; dr

Cada vez que utiliza el creador de sitios web (para agregar fragmentos, alterar el texto, ..) y guardar, los registros de datos en la base de datos de Odoo se modifican (obviamente, de lo contrario, sus cambios no se mantendrían).

En el proceso, el valor del campo “noupdate” en la tabla “ir_model_data” se establece de falso a verdadero para el registro de su plantilla. Siempre que “noupdate” esté configurado como verdadero, el registro de esa plantilla no se modificará por una acción de actualización en su módulo.

Para poder cambiar eso, tendrá que establecer “noupdate” de nuevo en falso para que la plantilla en la base de datos sea sobrescrita por el contenido modificado de su xml durante el proceso de actualización. Por favor, compruebe la advertencia en la parte inferior de mi respuesta!

Mi problema similar

Me encontré con un problema similar. Como hiciste, creé un módulo / plantilla simple con algunas etiquetas html, lo agregué a main_menu e instalé el módulo. Todo funcionó como se esperaba (enlace del menú visible y se mostró todo mi contenido).

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
    <!-- === Page template === -->
    <template name="tpl-imprint" id="website.imprint" page="True">
        <t t-call="website.layout">
            <div id="wrap">
                <div class="container">
                    <div class="row">
                        <div class="col-xs-12">
                            <h1>some Header</h1>
                            <p>some text</p>
                        </div>
                    </div>
                    <!-- === Snippets' area === -->
                    <div class="row">
                        <div class="oe_structure" />
                    </div>
                </div>
            </div>
        </t>
    </template>
    <!-- === Menu item === -->
    <record id="menu_imprint" model="website.menu">
        <field name="name">Imprint</field>
        <field name="url">/page/imprint</field>
        <field name="parent_id" ref="website.main_menu" />
        <field name="sequence" type="int">100</field>
        <field name="website_id" type="int">1</field>
    </record>
</odoo>

Después de eso modifiqué un poco más mi archivo xml, agregué un poco de texto, etc., actualicé el módulo y nuevamente todo funcionó como se esperaba.
Luego experimenté un poco con el creador de sitios web en la página que creé, agregué algunos fragmentos y los guardé.
Luego me di cuenta de que tenía algunos errores tipográficos en mi xml, así que fui a mi editor, los arreglé, actualicé el módulo y, no como se esperaba, mi vista no se modificó.

Como soy bastante nuevo en Odoo, aún no me sumergí en cómo funciona Odoo en el backend y no pude encontrar nada bueno en Google, comencé a analizar lo que sucede en la base de datos durante el proceso de actualización, así como también utilizando el creador de sitios web. Descubrí que, aunque solo estaba utilizando la actualización para cargar mis cambios, solo se modificó el campo “arch_db” de la tabla “ir_ui_view” para el registro relacionado. Sin embargo, al usar el generador de sitios web, no solo se escribió el contenido de la plantilla en “ir_ui_view”, sino que también se modificó el campo “noupdate” para el registro relacionado en la tabla “ir_model_data”: se estableció de falso a verdadero
(Probablemente se están produciendo más cambios en la base de datos, pero los mencionados son los relacionados con el problema).

Cómo hacer que el proceso de actualización funcione de nuevo

Para resolver el problema de la actualización, simplemente cambié el valor de “noupdate” a verdadero y el proceso de actualización funcionó nuevamente. (Deberá hacerlo cada vez que utilice el creador de sitios web con una de sus plantillas personalizadas, al menos si desea realizar cambios en la plantilla a través de su xml nuevamente).

Copia de seguridad de su base de datos antes de modificarlo manualmente! (He probado / usado esas líneas sql con mi base de datos pero aún no tengo garantía;))

Busque el model_data_id de la plantilla en “ir_ui_view”

select
    model_data_id
from
    ir_ui_view
where
    name = '<the name of your template - in my case tpl-imprint>';

Use esa ID para encontrar / actualizar el registro relacionado en la tabla “ir_ui_data”

update
    ir_model_data
set
    noupdate = true
where
    id = <the ID you got with the first query>

¡Hecho! Intenta actualizar tu módulo. Sus cambios en el xml deben almacenarse en la base de datos ahora.

También puedes alterar el valor en un solo paso.

update
    ir_model_data
set
    noupdate = false
where
    id in(
        select
            model_data_id
        from
            ir_ui_view
        where
            name = '<the name of your template - in my case tpl-imprint>'
    );

!!!! ADVERTENCIA !!!!

Todos los cambios que haya realizado con el creador del sitio web se perderán durante el proceso de actualización si configura “noupdate” en falso. Si desea mantenerlos, debe copiar y pegar las modificaciones a su plantilla en su xml. Para hacerlo, vaya a Personalizar / Editor HTML en la página de la que desea obtener contenido y copie y pegue las partes que desea conservar en su xml.

Por favor indique la dirección original:openerp – La página de plantillas de Odoo no se actualiza cuando cambia xml - Código de registro