[IMP] website_sale_aplicoop: add sequence field to product.category for web ordering

- Add sequence field (default 10) to product.category with _order = "sequence, name"
- Inherit product.category tree view to add drag-handle widget
- Sort category hierarchy and available categories by sequence in controller
- Migration 18.0.1.9.0: add sequence column to product_category table
- Bump version to 18.0.1.9.0
This commit is contained in:
snt 2026-05-20 12:50:28 +02:00 committed by GitHub Copilot
parent 5bb5d20244
commit f8ef927a9e
5 changed files with 52 additions and 8 deletions

View file

@ -3,7 +3,7 @@
{ # noqa: B018 { # noqa: B018
"name": "Website Sale - Aplicoop", "name": "Website Sale - Aplicoop",
"version": "18.0.1.8.0", "version": "18.0.1.9.0",
"category": "Website/Sale", "category": "Website/Sale",
"summary": "Modern replacement of legacy Aplicoop - Collaborative consumption group orders", "summary": "Modern replacement of legacy Aplicoop - Collaborative consumption group orders",
"author": "Odoo Community Association (OCA), Criptomart", "author": "Odoo Community Association (OCA), Criptomart",
@ -34,6 +34,7 @@
"security/record_rules.xml", "security/record_rules.xml",
# Vistas # Vistas
"views/group_order_views.xml", "views/group_order_views.xml",
"views/product_category_views.xml",
"views/res_partner_views.xml", "views/res_partner_views.xml",
"views/res_config_settings_views.xml", "views/res_config_settings_views.xml",
"views/website_templates.xml", "views/website_templates.xml",

View file

@ -0,0 +1,13 @@
"""Add sequence field to product.category.
Ensures the sequence column exists with a default of 10 for all existing rows.
The ORM will also handle this on upgrade, but we add it explicitly so the
column is present before any post-install logic runs.
"""
def migrate(cr, version):
cr.execute("""
ALTER TABLE product_category
ADD COLUMN IF NOT EXISTS sequence INTEGER NOT NULL DEFAULT 10;
""")

View file

@ -1,7 +1,9 @@
from . import group_order from . import group_order # noqa: F401
from . import product_extension from . import group_order_slot # noqa: F401
from . import res_config_settings from . import product_category_extension # noqa: F401
from . import res_partner_extension from . import product_extension # noqa: F401
from . import sale_order_extension from . import res_config_settings # noqa: F401
from . import stock_picking_extension from . import res_partner_extension # noqa: F401
from . import js_translations from . import sale_order_extension # noqa: F401
from . import stock_picking_extension # noqa: F401
from . import js_translations # noqa: F401

View file

@ -0,0 +1,12 @@
# Copyright 2026 Criptomart
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields
from odoo import models
class ProductCategory(models.Model):
_inherit = "product.category"
_order = "sequence, name"
sequence = fields.Integer(default=10)

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="product_category_view_tree_sequence" model="ir.ui.view">
<field name="name">product.category.list.sequence</field>
<field name="model">product.category</field>
<field name="inherit_id" ref="product.product_category_list_view"/>
<field name="arch" type="xml">
<xpath expr="//list" position="attributes">
<attribute name="default_order">sequence, name</attribute>
</xpath>
<xpath expr="//list/field[1]" position="before">
<field name="sequence" widget="handle"/>
</xpath>
</field>
</record>
</odoo>