[IMP] product: rename fields variant_ids into attribute_line_ids on the template...
authorChristophe Matthieu <chm@odoo.com>
Wed, 28 May 2014 17:42:15 +0000 (19:42 +0200)
committerChristophe Matthieu <chm@odoo.com>
Wed, 28 May 2014 17:42:15 +0000 (19:42 +0200)
addons/mrp/mrp.py
addons/mrp/mrp_demo.xml
addons/mrp/mrp_view.xml
addons/product/product.py
addons/product/product_demo.xml
addons/product/product_view.xml
addons/product/report/product_label.xml
addons/website_sale/controllers/main.py
addons/website_sale/models/product.py
addons/website_sale/static/src/js/website_sale.js
addons/website_sale/views/templates.xml

index 98e0e9b..23033fa 100644 (file)
@@ -306,8 +306,8 @@ class mrp_bom(osv.osv):
             if set(map(int,bom_line_id.property_ids or [])) - set(properties or []):
                 continue
             # all bom_line_id variant values must be in the product
-            if bom_line_id.variant_ids:
-                if not product or (set(map(int,bom_line_id.variant_ids or [])) - set(map(int,product.variant_ids))):
+            if bom_line_id.attribute_value_ids:
+                if not product or (set(map(int,bom_line_id.attribute_value_ids or [])) - set(map(int,product.attribute_value_ids))):
                     continue
 
             if bom_line_id.product_id.id in all_prod:
@@ -393,7 +393,7 @@ class mrp_bom_line(osv.osv):
         'property_ids': fields.many2many('mrp.property', string='Properties'),
 
         'bom_id': fields.many2one('mrp.bom', 'Parent BoM', ondelete='cascade', select=True, required=True),
-        'variant_ids': fields.many2many('product.attribute.value', string='Variants', help="BOM Product Variants needed form apply this line."),
+        'attribute_value_ids': fields.many2many('product.attribute.value', string='Variants', help="BOM Product Variants needed form apply this line."),
     }
 
     def _get_uom_id(self, cr, uid, *args):
index dc5d5ed..863f19e 100644 (file)
             <field name="product_uom" ref="product.product_uom_unit"/>
             <field name="sequence">1</field>            
             <field name="type">normal</field>
-            <field name="variant_ids" eval="[(6,0,[ref('product.product_attribute_value_1')])]"/>
+            <field name="attribute_value_ids" eval="[(6,0,[ref('product.product_attribute_value_1')])]"/>
             <field name="bom_id" ref="mrp_bom_11"/>
         </record>
         <record id="mrp_bom_line_33" model="mrp.bom.line">
             <field name="product_uom" ref="product.product_uom_unit"/>
             <field name="sequence">2</field>            
             <field name="type">normal</field>
-            <field name="variant_ids" eval="[(6,0,[ref('product.product_attribute_value_2')])]"/>
+            <field name="attribute_value_ids" eval="[(6,0,[ref('product.product_attribute_value_2')])]"/>
             <field name="bom_id" ref="mrp_bom_11"/>
         </record>
         <record id="mrp_bom_line_34" model="mrp.bom.line">
index 0e0b1b4..464a703 100644 (file)
                                     <field name="date_start"/>
                                     <field name="date_stop"/>
                                     <field name="routing_id"/>
-                                    <field name="variant_ids" widget="many2many_tags"/>
+                                    <field name="attribute_value_ids" widget="many2many_tags"/>
                                 </tree>
                             </field>
                         </page>
                     <field name="date_start"/>
                     <field name="date_stop"/>
                     <field name="routing_id"/>
-                    <field name="variant_ids" widget="many2many_tags"/>
+                    <field name="attribute_value_ids" widget="many2many_tags"/>
                     <field name="property_ids" widget="many2many_tags"/>
                 </tree>
             </field>
index dd5b191..288bfb1 100644 (file)
@@ -548,7 +548,7 @@ class product_template(osv.osv):
         'color': fields.integer('Color Index'),
         'is_product_variant': fields.function( _is_product_variant, type='boolean', string='Only one product variant'),
 
-        'variant_ids': fields.one2many('product.attribute.line', 'product_tmpl_id', 'Product Variants'),
+        'attribute_line_ids': fields.one2many('product.attribute.line', 'product_tmpl_id', 'Product Variants'),
         'product_variant_ids': fields.one2many('product.product', 'product_tmpl_id', 'Products', required=True),
         'product_variant_count': fields.function( _get_product_variant_count, type='integer', string='Product Variant Number'),
 
@@ -623,7 +623,7 @@ class product_template(osv.osv):
 
             # list of values combination
             all_variants = [[]]
-            for variant_id in tmpl_id.variant_ids:
+            for variant_id in tmpl_id.attribute_line_ids:
                 if len(variant_id.value_ids) > 1:
                     temp_variants = []
                     for value_id in variant_id.value_ids:
@@ -636,7 +636,7 @@ class product_template(osv.osv):
             variants_active_ids = []
             variants_inactive = []
             for product_id in tmpl_id.product_variant_ids:
-                variants = map(int,product_id.variant_ids)
+                variants = map(int,product_id.attribute_value_ids)
                 if variants in all_variants:
                     variants_active_ids.append(product_id.id)
                     all_variants.pop(all_variants.index(variants))
@@ -651,7 +651,7 @@ class product_template(osv.osv):
             for variant_ids in all_variants:
                 values = {
                     'product_tmpl_id': tmpl_id.id,
-                    'variant_ids': [(6, 0, variant_ids)]
+                    'attribute_value_ids': [(6, 0, variant_ids)]
                 }
                 id = product_obj.create(cr, uid, values, context=ctx)
                 variants_active_ids.append(id)
@@ -688,7 +688,7 @@ class product_template(osv.osv):
             for prod_template_id in ids:
                 self._set_standard_price(cr, uid, prod_template_id, vals['standard_price'], context=context)
         res = super(product_template, self).write(cr, uid, ids, vals, context=context)
-        if 'variant_ids' in vals or vals.get('active'):
+        if 'attribute_line_ids' in vals or vals.get('active'):
             self.create_variant_ids(cr, uid, ids, context=context)
         if 'active' in vals and not vals.get('active'):
             ctx = context and context.copy() or {}
@@ -800,7 +800,7 @@ class product_product(osv.osv):
             else:
                 res[product.id] = product.list_price
             price_extra = 0.0
-            for variant_id in product.variant_ids:
+            for variant_id in product.attribute_value_ids:
                 price_extra += variant_id.price_extra
             res[product.id] =  (res[product.id] or 0.0) + price_extra
         return res
@@ -862,7 +862,7 @@ class product_product(osv.osv):
         result = dict.fromkeys(ids, False)
         for product in self.browse(cr, uid, ids, context=context):
             price_extra = 0.0
-            for variant_id in product.variant_ids:
+            for variant_id in product.attribute_value_ids:
                 for price_id in variant_id.price_ids:
                     if price_id.product_tmpl_id.id == product.product_tmpl_id.id:
                         price_extra += price_id.price_extra
@@ -884,7 +884,7 @@ class product_product(osv.osv):
             'product.template': (_get_name_template_ids, ['name'], 10),
             'product.product': (lambda self, cr, uid, ids, c=None: ids, [], 10),
         }, select=True),
-        'variant_ids': fields.many2many('product.attribute.value',  id1='prod_id', id2='att_id', string='Variants', readonly=True),
+        'attribute_value_ids': fields.many2many('product.attribute.value',  id1='prod_id', id2='att_id', string='Variants', readonly=True),
 
         # image: all image fields are base64 encoded and PIL-supported
         'image_variant': fields.binary("Variant Image",
@@ -967,7 +967,7 @@ class product_product(osv.osv):
 
         result = []
         for product in self.browse(cr, SUPERUSER_ID, ids, context=context):
-            variant = ", ".join([v.name for v in product.variant_ids])
+            variant = ", ".join([v.name for v in product.attribute_value_ids])
             name = variant and "%s (%s)" % (product.name, variant) or product.name
             sellers = []
             if partner_id:
index 95cfbda..4f922f4 100644 (file)
@@ -175,22 +175,22 @@ HDD SH-1</field>
 Dual-core A5 with quad-core graphics
 FaceTime HD Camera, 1.2 MP Photos</field>
             <field name="default_code">A2323</field>
-            <field name="variant_ids" eval="[(6,0,[ref('product.product_attribute_value_1'), ref('product.product_attribute_value_3')])]"/>
+            <field name="attribute_value_ids" eval="[(6,0,[ref('product.product_attribute_value_1'), ref('product.product_attribute_value_3')])]"/>
         </record>
         <record id="product_product_4b" model="product.product">
             <field name="default_code">A2324</field>
             <field name="product_tmpl_id" ref="product_product_4_product_template"/>
-            <field name="variant_ids" eval="[(6,0,[ref('product.product_attribute_value_1'), ref('product.product_attribute_value_4')])]"/>
+            <field name="attribute_value_ids" eval="[(6,0,[ref('product.product_attribute_value_1'), ref('product.product_attribute_value_4')])]"/>
         </record>
         <record id="product_product_4c" model="product.product">
             <field name="default_code">A2325</field>
             <field name="product_tmpl_id" ref="product_product_4_product_template"/>
-            <field name="variant_ids" eval="[(6,0,[ref('product.product_attribute_value_2'), ref('product.product_attribute_value_3')])]"/>
+            <field name="attribute_value_ids" eval="[(6,0,[ref('product.product_attribute_value_2'), ref('product.product_attribute_value_3')])]"/>
         </record>
         <record id="product_product_4d" model="product.product">
             <field name="default_code">A2326</field>
             <field name="product_tmpl_id" ref="product_product_4_product_template"/>
-            <field name="variant_ids" eval="[(6,0,[ref('product.product_attribute_value_2'), ref('product.product_attribute_value_4')])]"/>
+            <field name="attribute_value_ids" eval="[(6,0,[ref('product.product_attribute_value_2'), ref('product.product_attribute_value_4')])]"/>
         </record>
 
         <record id="product_attribute_line_1" model="product.attribute.line">
@@ -210,7 +210,7 @@ FaceTime HD Camera, 1.2 MP Photos</field>
         </record>
 
         <record id="product_product_4_product_template" model="product.template">
-            <field name="variant_ids" eval="[(6,0,[ref('product.product_attribute_line_1'), ref('product.product_attribute_line_2'), ref('product.product_attribute_line_3')])]"/>
+            <field name="attribute_line_ids" eval="[(6,0,[ref('product.product_attribute_line_1'), ref('product.product_attribute_line_2'), ref('product.product_attribute_line_3')])]"/>
         </record>
         
         <record id="product_attribute_price_1" model="product.attribute.price">
@@ -301,12 +301,12 @@ FaceTime HD Camera, 1.2 MP Photos</field>
             <field name="uom_id" ref="product_uom_unit"/>
             <field name="uom_po_id" ref="product_uom_unit"/>
             <field name="default_code">A6678</field>
-            <field name="variant_ids" eval="[(6,0,[ref('product.product_attribute_value_1')])]"/>
+            <field name="attribute_value_ids" eval="[(6,0,[ref('product.product_attribute_value_1')])]"/>
         </record>
         <record id="product_product_11b" model="product.product">
             <field name="default_code">A6679</field>
             <field name="product_tmpl_id" ref="product_product_11_product_template"/>
-            <field name="variant_ids" eval="[(6,0,[ref('product.product_attribute_value_2')])]"/>
+            <field name="attribute_value_ids" eval="[(6,0,[ref('product.product_attribute_value_2')])]"/>
         </record>
 
         <record id="product_attribute_line_4" model="product.attribute.line">
@@ -316,7 +316,7 @@ FaceTime HD Camera, 1.2 MP Photos</field>
         </record>
 
         <record id="product_product_11_product_template" model="product.template">
-            <field name="variant_ids" eval="[(6,0,[ref('product.product_attribute_line_4')])]"/>
+            <field name="attribute_line_ids" eval="[(6,0,[ref('product.product_attribute_line_4')])]"/>
         </record>
         
         <record id="product_attribute_price_2" model="product.attribute.price">
index 1b059c4..9b5770a 100644 (file)
@@ -15,7 +15,7 @@
                     <filter string="Consumable" name="consumable" icon="terp-accessories-archiver" domain="[('type','=','consu')]" help="Consumable products"/>
                     <separator/>
                     <filter string="Can be Sold" name="filter_to_sell" icon="terp-accessories-archiver-minus" domain="[('sale_ok','=',1)]"/>
-                    <field string="Product Variant" name="product_variant_ids" filter_domain="['|', ('product_variant_ids.name','ilike',self), ('product_variant_ids.variant_ids.name','ilike',self)]"/>
+                    <field string="Product Variant" name="product_variant_ids" filter_domain="['|', ('product_variant_ids.name','ilike',self), ('product_variant_ids.attribute_value_ids.name','ilike',self)]"/>
                     <field name="company_id"/>
                     <field name="pricelist_id" widget="selection" context="{'pricelist': self}" filter_domain="[]" groups="product.group_sale_pricelist"/> <!-- Keep widget=selection on this field to pass numeric `self` value, which is not the case for regular m2o widgets! -->
                     <group  expand='0' string='Group by...'>
                                 <field name="description_sale" placeholder="note to be displayed on quotations..."/>
                             </page>
                             <page name="variants" string="Variants">
-                                <field name="variant_ids" widget="one2many_list">
+                                <field name="attribute_line_ids" widget="one2many_list">
                                     <tree string="Variants" editable="bottom">
                                         <field name="attribute_id"/>
                                         <field name="value_ids" widget="many2many_tags" domain="[('attribute_id', '=', attribute_id)]" context="{'default_attribute_id': attribute_id}"/>
                    <field name="name" string="Product" filter_domain="['|',('default_code','ilike',self),('name','ilike',self)]"/>
                 </field>
                 <field name="product_variant_ids" position="replace">
-                    <field name="variant_ids"/>
+                    <field name="attribute_value_ids"/>
                 </field>
                 <field name="name" position="after">
                    <field name="product_tmpl_id" string="Product Template"/>
                 <tree string="Product Variants">
                     <field name="default_code"/>
                     <field name="name"/>
-                    <field name="variant_ids" widget="many2many_tags"/>
+                    <field name="attribute_value_ids" widget="many2many_tags"/>
                     <field name="lst_price"/>
                     <field name="price" invisible="not context.get('pricelist',False)"/>
                     <field name="uom_id"/>
                     <field name="product_tmpl_id" class="oe_inline" readonly="1" attrs="{'invisible': [('id', '=', False)]}"/>
                 </field>
                 <xpath expr="//div[@class='oe_title']" position="inside">
-                    <field name="variant_ids" widget="many2many_tags"/>
+                    <field name="attribute_value_ids" widget="many2many_tags"/>
                 </xpath>
                 <page name="variants" position="replace">
                 </page>
             <field name="inherit_id" ref="product.product_template_kanban_view"/>
             <field name="arch" type="xml">
                 <field name="name" position="after">
-                    <field name="variant_ids"/>
+                    <field name="attribute_value_ids"/>
                 </field>
                 <xpath expr="//img[@class='oe_kanban_image']" position="replace">
                     <img t-att-src="kanban_image('product.product', 'image_small', record.id.value)" class="oe_kanban_image"/>
             <field name="model">product.template</field>
             <field name="inherit_id" ref="product.product_template_form_view"/>
             <field name="arch" type="xml">
-                <field name="variant_ids" position="before">
+                <field name="attribute_line_ids" position="before">
                     <div class="oe_right">
                         <button class="oe_inline oe_stat_button" string="Variant Prices"  name="%(product.variants_template_action)d" type="action" icon="fa-strikethrough"/>
                         <button class="oe_inline oe_stat_button" name="%(product.product_variant_action)d" type="action" icon="fa-sitemap">
index 74fd481..00d587d 100644 (file)
@@ -3,7 +3,7 @@
     <lot-line type="fields" name="id">
         <code type="field" name="code"/>
         <product type="field" name="name"/>
-        <variant type="field" name="variant_ids"/>
+        <variant type="field" name="attribute_value_ids"/>
         <price type="field" name="list_price"/>
         <ean13 type="field" name="ean13"/>
         <currency type="field" name="company_id.currency_id.name"/>
index 77082ec..b381472 100644 (file)
@@ -136,11 +136,11 @@ class website_sale(http.Controller):
                 elif value[0] == attrib:
                     ids.append(value[1])
                 else:
-                    domain += [('variant_ids.value_ids', 'in', ids)]
+                    domain += [('attribute_line_ids.value_ids', 'in', ids)]
                     attrib = value[0]
                     ids = [value[1]]
             if attrib:
-                domain += [('variant_ids.value_ids', 'in', ids)]
+                domain += [('attribute_line_ids.value_ids', 'in', ids)]
 
         attrib_set = set([v[1] for v in attrib_values])
         keep = QueryURL('/shop', category=category and int(category), search=search, attrib=attrib_set)
index 2560575..005191d 100644 (file)
@@ -115,7 +115,7 @@ class product_template(osv.Model):
         result = dict.fromkeys(ids, [])
         for obj in self.browse(cr, uid, ids, context=context):
             for p in obj.product_variant_ids:
-                result[obj.id].append([p.id, map(int,p.variant_ids), p.price])
+                result[obj.id].append([p.id, map(int,p.attribute_value_ids), p.price])
         return result
 
     _columns = {
index 2efbbbd..35e028d 100644 (file)
@@ -64,7 +64,7 @@ $(document).ready(function () {
     });
 
     var $form_var = $('form.js_add_cart_variants');
-    var variant_ids = $form_var.data("variant_ids");
+    var variant_ids = $form_var.data("attribute_value_ids");
     $form_var.on('change', 'input, select', function (ev) {
         var values = [];
         $form_var.find("label").removeClass("text-muted css_not_available");
index 2d6dcef..7c8febe 100644 (file)
 
 <template id="product_variants" inherit_id="website_sale.product" optional="enabled" name="Product Variants">
   <xpath expr="//form[@action='/shop/cart/update']" position="replace">
-    <form action="/shop/cart/update" class="js_add_cart_variants" method="POST" t-att-data-variant_ids="product.available_variant_ids">
+    <form action="/shop/cart/update" class="js_add_cart_variants" method="POST" t-att-data-attribute_value_ids="product.available_variant_ids">
         <input type="hidden" name="product_id" t-att-value="int(product.product_variant_ids[0]) if len(product.product_variant_ids) == 1 else '0'"/>
         <ul class="nav nav-pills nav-stacked">
-            <t t-foreach="product.variant_ids" t-as="variant_id">
+            <t t-foreach="product.attribute_line_ids" t-as="variant_id">
               <li t-if="len(variant_id.value_ids) > 1">
 
                 <strong t-field="variant_id.attribute_id.name"/>
 
 <template id="product_attributes" inherit_id="website_sale.product" optional="enabled" name="Product attributes">
   <xpath expr="//p[@t-field='product.description_sale']" position="after">
-    <hr t-if="product.variant_ids"/>
+    <hr t-if="product.attribute_line_ids"/>
     <p class="text-muted">
-      <t t-foreach="product.variant_ids" t-as="variant_id">
+      <t t-foreach="product.attribute_line_ids" t-as="variant_id">
         <t t-set="inc" t-value="0"/>
         <span t-field="variant_id.attribute_id"/>: 
         <t t-foreach="variant_id.value_ids" t-as="value_id"><t t-if="inc">,</t> <span t-field="value_id.name"/><t t-set="inc" t-value="inc+1"/></t>