From 4516b1b02b5befe754c0500e5eb1ed1a5cc2a701 Mon Sep 17 00:00:00 2001
From: Yannick Tivisse <yti@odoo.com>
Date: Wed, 8 Nov 2017 15:21:02 +0100
Subject: [PATCH] [IMP] mrp: Convert yml demo and data files to python

---
 addons/mrp/__manifest__.py       |  3 +--
 addons/mrp/data/mrp_data.xml     | 17 +++++++++++++++++
 addons/mrp/data/mrp_data.yml     | 13 -------------
 addons/mrp/data/mrp_demo.xml     | 26 +++++++++++++++++++++++++-
 addons/mrp/data/mrp_lot_demo.yml | 12 ------------
 5 files changed, 43 insertions(+), 28 deletions(-)
 delete mode 100644 addons/mrp/data/mrp_data.yml
 delete mode 100644 addons/mrp/data/mrp_lot_demo.yml

diff --git a/addons/mrp/__manifest__.py b/addons/mrp/__manifest__.py
index 9766a88bf583..d0ce94ee8147 100644
--- a/addons/mrp/__manifest__.py
+++ b/addons/mrp/__manifest__.py
@@ -15,7 +15,6 @@
         'security/mrp_security.xml',
         'security/ir.model.access.csv',
         'data/mrp_data.xml',
-        'data/mrp_data.yml',
         'wizard/mrp_product_produce_views.xml',
         'wizard/change_production_qty_views.xml',
         'wizard/mrp_workcenter_block_view.xml',
@@ -44,7 +43,7 @@
     ],
     'demo': [
         'data/mrp_demo.xml',
-        'data/mrp_lot_demo.yml'],
+    ],
     'qweb': ['static/src/xml/mrp.xml'],
     'test': [],
     'application': True,
diff --git a/addons/mrp/data/mrp_data.xml b/addons/mrp/data/mrp_data.xml
index 85fffdb3bd9d..771c3c3ca463 100644
--- a/addons/mrp/data/mrp_data.xml
+++ b/addons/mrp/data/mrp_data.xml
@@ -82,5 +82,22 @@
             <field name="manual" eval="False"/>
             <field name="sequence">0</field>
         </record>
+
+        <function model="ir.model.data" name="create">
+            <value model="stock.warehouse" eval="{
+                'name': 'picking_type_manufacturing',
+                'module':'mrp',
+                'model': 'stock.picking.type',
+                'res_id': obj().env.ref('stock.warehouse0').manu_type_id.id,
+            }"/>
+        </function>
+
+        <!-- avoid the xml id and the associated resource being dropped by the orm by manually making a hit on it -->
+        <function model="ir.model.data" name="_update_dummy">
+            <value>stock.picking.type</value>
+            <value>mrp</value>
+            <value>picking_type_manufacturing</value>
+        </function>
     </data>
+
 </odoo>
diff --git a/addons/mrp/data/mrp_data.yml b/addons/mrp/data/mrp_data.yml
deleted file mode 100644
index cc69bbe175b7..000000000000
--- a/addons/mrp/data/mrp_data.yml
+++ /dev/null
@@ -1,13 +0,0 @@
--
-  !python {model: ir.model.data, id: False}: |
-    warehouse = self.env['stock.warehouse'].browse(ref('stock.warehouse0'))
-    #create xml ids for demo data that are widely used in tests or in other codes, for more convenience
-    xml_references = [
-        {'name':'picking_type_manufacturing','module':'mrp', 'model':'stock.picking.type','res_id': warehouse.manu_type_id.id},
-    ]
-    for xml_record in xml_references:
-        xml_ids = self.search([('module', '=', xml_record['module']), ('model', '=', xml_record['model']), ('name', '=', xml_record['name'])]).ids
-        if not xml_ids:
-            self.create(xml_record)
-        #avoid the xml id and the associated resource being dropped by the orm by manually making a hit on it
-        self._update_dummy(xml_record['model'], xml_record['module'], xml_record['name'])
\ No newline at end of file
diff --git a/addons/mrp/data/mrp_demo.xml b/addons/mrp/data/mrp_demo.xml
index b15716264b4a..fcfd0748d4d6 100644
--- a/addons/mrp/data/mrp_demo.xml
+++ b/addons/mrp/data/mrp_demo.xml
@@ -588,7 +588,31 @@
             <field name="date_start" eval="(datetime.now() - timedelta(hours=1)).strftime('%Y-%m-%d %H:%M:%S')"/>
         </record>
 
-
+        <function model="mrp.production" name="action_assign">
+            <value eval="[ref('mrp.mrp_production_laptop_cust')]"/>
+        </function>
+
+        <function model="mrp.product.produce" name="create">
+            <value model="mrp.product.produce" eval="dict(
+                obj().with_context(active_id=ref('mrp.mrp_production_laptop_cust')).default_get(list(obj().fields_get())),
+                **{
+                    'product_qty': obj().env.ref('mrp.mrp_production_laptop_cust').product_qty,
+                    'lot_id': ref('mrp.lot_product_27_0'),
+                }
+            )"/>
+        </function>
+
+        <function model="mrp.product.produce" name="do_produce">
+            <value model="mrp.product.produce" search="[('production_id', '=', obj().env.ref('mrp.mrp_production_laptop_cust').id)]"/>
+        </function>
+
+        <function model="mrp.production" name="post_inventory">
+            <value eval="[ref('mrp.mrp_production_laptop_cust')]"/>
+        </function>
+
+        <function model="mrp.production" name="button_mark_done">
+            <value eval="[ref('mrp.mrp_production_laptop_cust')]"/>
+        </function>
 
     </data>
 </odoo>
diff --git a/addons/mrp/data/mrp_lot_demo.yml b/addons/mrp/data/mrp_lot_demo.yml
deleted file mode 100644
index bb0c54e238ed..000000000000
--- a/addons/mrp/data/mrp_lot_demo.yml
+++ /dev/null
@@ -1,12 +0,0 @@
--
-  !python {model: mrp.production, id: mrp_production_laptop_cust}: |
-    if self.state != 'done':
-        self.action_assign()
-        wiz_obj = self.env['mrp.product.produce']
-        ctx = dict(self.env.context, active_id=self.id)
-        produce_wiz = wiz_obj.with_context(ctx).create({'product_qty': self.product_qty, 'lot_id': ref('lot_product_27_0')})
-        produce_wiz.produce_line_ids.write({'qty_done': produce_wiz.product_qty})
-        #Produce Product,Post Inventory and Set MO Done.
-        produce_wiz.do_produce()
-        self.post_inventory()
-        self.button_mark_done()
-- 
GitLab