fix: remove deprecated attrs/states attributes for Odoo 19 compatibility

Converted all attrs= expressions to inline invisible/readonly attributes
in wizard XML views (woo_product_fetch_views.xml, woo_setup_wizard_views.xml).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsinghpal
2026-03-31 21:43:03 -04:00
parent 5d361d8c8a
commit 84f01ebd7b
3 changed files with 31 additions and 29 deletions

View File

@@ -7,13 +7,15 @@
<field name="model">stock.picking</field> <field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_form"/> <field name="inherit_id" ref="stock.view_picking_form"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//div[@name='picking_move_tree']" position="before"> <xpath expr="//page[@name='extra']" position="after">
<group string="WooCommerce Shipping" invisible="not is_woo_delivery"> <page string="WooCommerce" name="woo_shipping" invisible="not is_woo_delivery">
<group> <group>
<field name="woo_tracking_number"/> <group string="Shipping Details">
<field name="woo_carrier_id"/> <field name="woo_tracking_number"/>
<field name="woo_carrier_id"/>
</group>
</group> </group>
</group> </page>
</xpath> </xpath>
</field> </field>
</record> </record>

View File

@@ -9,12 +9,12 @@
<sheet> <sheet>
<group> <group>
<field name="instance_id" <field name="instance_id"
attrs="{'readonly': [('state', '!=', 'draft')]}"/> readonly="state != 'draft'"/>
<field name="state" readonly="1"/> <field name="state" readonly="1"/>
</group> </group>
<group string="Results" <group string="Results"
attrs="{'invisible': [('state', '=', 'draft')]}"> invisible="state == 'draft'">
<group> <group>
<field name="total_fetched"/> <field name="total_fetched"/>
<field name="auto_matched"/> <field name="auto_matched"/>
@@ -26,12 +26,12 @@
</group> </group>
<div class="alert alert-info" role="alert" <div class="alert alert-info" role="alert"
attrs="{'invisible': [('state', '!=', 'draft')]}"> invisible="state != 'draft'">
Select a WooCommerce instance and click Fetch Products. All products and variations will be imported and matched to Odoo products by SKU or name similarity. Select a WooCommerce instance and click Fetch Products. All products and variations will be imported and matched to Odoo products by SKU or name similarity.
</div> </div>
<div class="alert alert-success" role="alert" <div class="alert alert-success" role="alert"
attrs="{'invisible': [('state', '!=', 'done')]}"> invisible="state != 'done'">
Fetch complete! Review the product mapping to confirm or adjust suggestions. Fetch complete! Review the product mapping to confirm or adjust suggestions.
</div> </div>
</sheet> </sheet>
@@ -40,11 +40,11 @@
<button type="object" name="action_fetch" <button type="object" name="action_fetch"
string="Fetch Products" string="Fetch Products"
class="btn-primary" class="btn-primary"
attrs="{'invisible': [('state', '!=', 'draft')]}"/> invisible="state != 'draft'"/>
<button type="object" name="action_open_mapping" <button type="object" name="action_open_mapping"
string="Open Product Mapping" string="Open Product Mapping"
class="btn-primary" class="btn-primary"
attrs="{'invisible': [('state', '!=', 'done')]}"/> invisible="state != 'done'"/>
<button string="Close" class="btn-secondary" special="cancel"/> <button string="Close" class="btn-secondary" special="cancel"/>
</footer> </footer>
</form> </form>

View File

@@ -11,41 +11,41 @@
<div class="o_statusbar_status mb-3"> <div class="o_statusbar_status mb-3">
<button type="object" name="action_back" <button type="object" name="action_back"
class="btn btn-secondary me-1" class="btn btn-secondary me-1"
attrs="{'invisible': [('step', '=', 'connection')]}"> invisible="step == 'connection'">
&#8592; Back &#8592; Back
</button> </button>
<span class="badge bg-primary me-1" <span class="badge bg-primary me-1"
attrs="{'invisible': [('step', '!=', 'connection')]}"> invisible="step != 'connection'">
Step 1: Connection Step 1: Connection
</span> </span>
<span class="badge bg-secondary me-1" <span class="badge bg-secondary me-1"
attrs="{'invisible': [('step', '=', 'connection')]}"> invisible="step == 'connection'">
Step 1: Connection &#10003; Step 1: Connection &#10003;
</span> </span>
<span class="badge bg-primary me-1" <span class="badge bg-primary me-1"
attrs="{'invisible': [('step', '!=', 'config')]}"> invisible="step != 'config'">
Step 2: Configuration Step 2: Configuration
</span> </span>
<span class="badge bg-secondary me-1" <span class="badge bg-secondary me-1"
attrs="{'invisible': [('step', 'in', ('connection', 'config'))]}"> invisible="step in ('connection', 'config')">
Step 2: Configuration &#10003; Step 2: Configuration &#10003;
</span> </span>
<span class="badge bg-muted me-1" <span class="badge bg-muted me-1"
attrs="{'invisible': [('step', 'in', ('config', 'done'))]}"> invisible="step in ('config', 'done')">
Step 2: Configuration Step 2: Configuration
</span> </span>
<span class="badge bg-primary me-1" <span class="badge bg-primary me-1"
attrs="{'invisible': [('step', '!=', 'done')]}"> invisible="step != 'done'">
Step 3: Done Step 3: Done
</span> </span>
<span class="badge bg-muted me-1" <span class="badge bg-muted me-1"
attrs="{'invisible': [('step', '=', 'done')]}"> invisible="step == 'done'">
Step 3: Done Step 3: Done
</span> </span>
</div> </div>
<!-- Step 1: Connection --> <!-- Step 1: Connection -->
<group attrs="{'invisible': [('step', '!=', 'connection')]}"> <group invisible="step != 'connection'">
<group string="WooCommerce Connection"> <group string="WooCommerce Connection">
<field name="name" placeholder="e.g. My WooCommerce Store"/> <field name="name" placeholder="e.g. My WooCommerce Store"/>
<field name="url" placeholder="https://mystore.com"/> <field name="url" placeholder="https://mystore.com"/>
@@ -54,11 +54,11 @@
</group> </group>
<group> <group>
<div class="alert alert-info" role="alert" <div class="alert alert-info" role="alert"
attrs="{'invisible': [('connection_tested', '=', True)]}"> invisible="connection_tested == True">
Enter your WooCommerce store URL and REST API credentials, then test the connection. Enter your WooCommerce store URL and REST API credentials, then test the connection.
</div> </div>
<div class="alert alert-success" role="alert" <div class="alert alert-success" role="alert"
attrs="{'invisible': [('connection_tested', '=', False)]}"> invisible="connection_tested == False">
Connection successful! Click Next to continue. Connection successful! Click Next to continue.
</div> </div>
<field name="connection_tested" invisible="1"/> <field name="connection_tested" invisible="1"/>
@@ -67,7 +67,7 @@
</group> </group>
<!-- Step 2: Configuration --> <!-- Step 2: Configuration -->
<group attrs="{'invisible': [('step', '!=', 'config')]}"> <group invisible="step != 'config'">
<group string="Sync Configuration"> <group string="Sync Configuration">
<field name="default_warehouse_id"/> <field name="default_warehouse_id"/>
<field name="sync_interval"/> <field name="sync_interval"/>
@@ -75,7 +75,7 @@
</group> </group>
<!-- Step 3: Done --> <!-- Step 3: Done -->
<group attrs="{'invisible': [('step', '!=', 'done')]}"> <group invisible="step != 'done'">
<group string="Setup Complete"> <group string="Setup Complete">
<div class="alert alert-success" role="alert"> <div class="alert alert-success" role="alert">
<strong>Your WooCommerce instance has been created successfully!</strong> <strong>Your WooCommerce instance has been created successfully!</strong>
@@ -92,27 +92,27 @@
<button type="object" name="action_test_connection" <button type="object" name="action_test_connection"
string="Test Connection" string="Test Connection"
class="btn-primary" class="btn-primary"
attrs="{'invisible': [('step', '!=', 'connection')]}"/> invisible="step != 'connection'"/>
<button type="object" name="action_next_step" <button type="object" name="action_next_step"
string="Next" string="Next"
class="btn-primary" class="btn-primary"
attrs="{'invisible': [('step', '!=', 'connection')]}"/> invisible="step != 'connection'"/>
<!-- Config step buttons --> <!-- Config step buttons -->
<button type="object" name="action_complete" <button type="object" name="action_complete"
string="Complete Setup" string="Complete Setup"
class="btn-primary" class="btn-primary"
attrs="{'invisible': [('step', '!=', 'config')]}"/> invisible="step != 'config'"/>
<!-- Done step buttons --> <!-- Done step buttons -->
<button type="object" name="action_fetch_products" <button type="object" name="action_fetch_products"
string="Fetch Products" string="Fetch Products"
class="btn-primary" class="btn-primary"
attrs="{'invisible': [('step', '!=', 'done')]}"/> invisible="step != 'done'"/>
<button type="object" name="action_open_instance" <button type="object" name="action_open_instance"
string="Open Instance" string="Open Instance"
class="btn-secondary" class="btn-secondary"
attrs="{'invisible': [('step', '!=', 'done')]}"/> invisible="step != 'done'"/>
<button string="Close" class="btn-secondary" special="cancel"/> <button string="Close" class="btn-secondary" special="cancel"/>
</footer> </footer>