← Back to team overview

openerp-dev-web team mailing list archive

[Merge] lp:~openerp-dev/openobject-addons/ksa-addons2 into lp:~openerp-dev/openobject-addons/trunk-dev-addons2

 

ksa(OpenERP) has proposed merging lp:~openerp-dev/openobject-addons/ksa-addons2 into lp:~openerp-dev/openobject-addons/trunk-dev-addons2.

Requested reviews:
  OpenERP Core Team (openerp)
Related bugs:
  #500931 No analytic entry is generated finishing one production order
  https://bugs.launchpad.net/bugs/500931
  #543979 product: check uos not necessary
  https://bugs.launchpad.net/bugs/543979
  #623680 [5.0] stock - Stock Inventory with date past
  https://bugs.launchpad.net/bugs/623680
  #674551 "qunatity" in MRP
  https://bugs.launchpad.net/bugs/674551
  #674578 no pdf report "delivery order" in warehouse management
  https://bugs.launchpad.net/bugs/674578
  #675418 account moves with same account in debit and credit
  https://bugs.launchpad.net/bugs/675418
  #677437 Production : done moves should not be re-considered while completing production order
  https://bugs.launchpad.net/bugs/677437
  #680916 "Work center" spelling is inconsistent
  https://bugs.launchpad.net/bugs/680916
  #683231 [6.0][purchase] destination address inside company makes picking to "customer" location
  https://bugs.launchpad.net/bugs/683231
  #687352 remove the domain on the filter field in segment
  https://bugs.launchpad.net/bugs/687352
  #687360 Warehouse : change order of buttons in incoming and outgoingview 
  https://bugs.launchpad.net/bugs/687360
  #690583 stock.picking.test_finished: write() takes at most 6 arguments (8 given)
  https://bugs.launchpad.net/bugs/690583
  #690700 [purchase-stock] Wrong Partner used when invoicing from picking coming from a puchase with sent_to_address
  https://bugs.launchpad.net/bugs/690700
  #691901 [6.0] delivery data.xml contains demo data
  https://bugs.launchpad.net/bugs/691901
  #692461 [6.0] wiki_faq - update problem - reloads template
  https://bugs.launchpad.net/bugs/692461
  #692467 menuitem for price.type object is missing
  https://bugs.launchpad.net/bugs/692467
  #695343 mrp_repair doesn't work with products with lot tracking
  https://bugs.launchpad.net/bugs/695343
  #697554 Custom Reports do not display any values
  https://bugs.launchpad.net/bugs/697554
  #699821 add access group on button used to update stock on product
  https://bugs.launchpad.net/bugs/699821

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/ksa-addons2/+merge/45690

[1] https://bugs.launchpad.net/openobject-addons/+bug/697554
[2] https://bugs.launchpad.net/openobject-addons/+bug/699821
-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/ksa-addons2/+merge/45690
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-addons/ksa-addons2.
=== modified file 'base_report_creator/base_report_creator.py'
--- base_report_creator/base_report_creator.py	2010-12-31 06:26:40 +0000
+++ base_report_creator/base_report_creator.py	2011-01-10 13:24:24 +0000
@@ -23,33 +23,16 @@
 from tools.translate import _
 from tools import ustr
 
-class report_creator(osv.osv):
+class report_result(osv.osv):
     """
     Report Creator
     """
-    _name = "base_report_creator.report"
+    _name = "base_report_creator_report.result"
     _description = "Report"
     model_set_id = False
     #
     # Should request only used fields
     #
-    def export_data(self, cr, uid, ids, fields_to_export, context=None):
-        if context is None:
-            context = {}
-        data_l = self.read(cr, uid, ids, ['sql_query'], context=context)
-        final_datas = []
-        #start Loop
-        for record in data_l:
-            datas = []
-            for key in fields_to_export:
-                value = record.get(key,'')
-                if isinstance(value, tuple):
-                    datas.append(ustr(value[1]))
-                else:
-                    datas.append(ustr(value))
-            final_datas += [datas]
-            #End Loop
-        return {'datas': final_datas}
 
     def fields_get(self, cr, user, fields=None, context=None):
         """
@@ -64,9 +47,9 @@
 
         data = context and context.get('report_id', False) or False
         if (not context) or 'report_id' not in context:
-            return super(report_creator, self).fields_get(cr, user, fields, context)
+            return super(report_result, self).fields_get(cr, user, fields, context)
         if data:
-            report = self.browse(cr, user, data)
+            report = self.pool.get('base_report_creator.report').browse(cr, user, data,context=context)
             models = {}
         #Start Loop
             for model in report.model_ids:
@@ -80,12 +63,8 @@
                     i += 1
                 else:
                     fields['column_count'] = {'readonly': True, 'type': 'integer', 'string': 'Count', 'size': 64, 'name': 'column_count'}
-
             return fields
 
-    #
-    # Should Call self.fields_get !
-    #
     def fields_view_get(self, cr, user, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
         """
         Overrides orm field_view_get.
@@ -98,8 +77,8 @@
 
         data = context and context.get('report_id', False) or False
         if (not context) or 'report_id' not in context:
-            return super(report_creator, self).fields_view_get(cr, user, view_id, view_type, context, toolbar=toolbar, submenu=submenu)
-        report = self.browse(cr, user, data)
+            return super(report_result, self).fields_view_get(cr, user, view_id, view_type, context, toolbar=toolbar, submenu=submenu)
+        report = self.pool.get('base_report_creator.report').browse(cr, user, context.get('report_id'), context=context)
         models = {}
         for model in report.model_ids:
             models[model.model] = self.pool.get(model.model).fields_get(cr, user, context=context)
@@ -192,31 +171,24 @@
         """
         if context is None:
             context = {}
-        data = context.get('report_id', False)
-        res = super(report_creator, self).read(cr, user, ids, fields, context, load)
-        if (not context) or 'report_id' not in context:
-            return res
-        wp = ''
-        for data in res:
-            if not data.get('sql_query'):
-                return res
-            if self.model_set_id:
-                wp = [self._id_get(cr, user, data, context) + (' in (%s)' % (','.join(map(lambda x: "'" + str(x) + "'", ids))))]
-            cr.execute(data['sql_query'])
-            res = cr.dictfetchall()
-            fields_get = self.fields_get(cr, user, None, context)
-            for r in res:
-                for k in r:
-                    r[k] = r[k] or False
-                    field_dict = fields_get.get(k)
-                    field_type = field_dict and field_dict.get('type', False) or False
-                    if field_type and field_type == 'many2one':
-                        if r[k] == False:
-                            continue
-                        related_name = self.pool.get(field_dict.get('relation')).name_get(cr, user, [r[k]], context)[0]
+        report_id = context.get('active_id', False)
+        report = self.pool.get('base_report_creator.report').browse(cr, user, context.get('report_id'), context=context)
+        sql_qry = report.sql_query
+        cr.execute(sql_qry)
+        result = cr.dictfetchall()
+        fields_get = self.fields_get(cr, user, None, context)
+        for r in result:
+            for k in r:
+                r[k] = r[k] or False
+                field_dict = fields_get.get(k)
+                field_type = field_dict and field_dict.get('type', False) or False
+                if field_type and field_type == 'many2one':
+                    if r[k] == False:
+                        continue
+                    if r[k]:
+                        related_name = self.pool.get(field_dict.get('relation')).name_get(cr, user, [r[k]], context)
                         r[k] = related_name
-
-        return res
+        return result
 
     def search(self, cr, user, args, offset=0, limit=None, order=None, context=None, count=False):
         """
@@ -231,9 +203,9 @@
         context_id = context.get('report_id', False)
 
         if (not context) or 'report_id' not in context:
-            return super(report_creator, self).search(cr, user, args, offset, limit, order, context, count)
+            return {}
         if context_id:
-            report = self.browse(cr, user, context_id)
+            report = self.pool.get('base_report_creator.report').browse(cr, user, context_id, context=context)
             i = 0
             fields = {}
             for f in report.field_ids:
@@ -254,10 +226,42 @@
             ctx = context or {}
             ctx['getid'] = True
             sql_query = report.sql_query
-            cr.execute(sql_query, newargs2)
+            cr.execute(sql_query) # TODO: FILTER
             result = cr.fetchall()
             return map(lambda x: x[0], result)
 
+report_result()
+
+
+class report_creator(osv.osv):
+    """
+    Report Creator
+    """
+    _name = "base_report_creator.report"
+    _description = "Report"
+    model_set_id = False
+    #
+    # Should request only used fields
+    #
+    def export_data(self, cr, uid, ids, fields_to_export, context=None):
+        if context is None:
+            context = {}
+        data_l = self.read(cr, uid, ids, ['sql_query'], context=context)
+        final_datas = []
+        #start Loop
+        for record in data_l:
+            datas = []
+            for key in fields_to_export:
+                value = record.get(key,'')
+                if isinstance(value, tuple):
+                    datas.append(ustr(value[1]))
+                else:
+                    datas.append(ustr(value))
+            final_datas += [datas]
+            #End Loop
+        return {'datas': final_datas}
+
+
     def _path_get(self, cr, uid, models, filter_ids=[]):
         """
         @param cr: the current row, from the database cursor,
@@ -465,7 +469,7 @@
             'name': rep.name,
             'view_type': 'form',
             'view_mode': view_mode,
-            'res_model': 'base_report_creator.report',
+            'res_model': 'base_report_creator_report.result',
             'type': 'ir.actions.act_window',
             'context': "{'report_id':%d}" % (rep.id,),
             'nodestroy': True,
@@ -596,3 +600,4 @@
     }
 report_creator_filter()
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+

=== modified file 'stock/product_view.xml'
--- stock/product_view.xml	2010-12-27 12:58:54 +0000
+++ stock/product_view.xml	2011-01-10 13:24:24 +0000
@@ -106,7 +106,7 @@
                         <separator string="Stocks" colspan="4"/>
                         <field name="qty_available"/>
                         <button name="%(action_view_change_product_quantity)d" string="Update" attrs="{'invisible': [('type', '=', 'service')]}"
-                            type="action" icon="gtk-execute" groups = "stock.group_stock_manager,base.group_sale_manager,purchase.group_purchase_manager,stock.group_stock_manager,mrp.group_mrp_manager"/>
+                            type="action" icon="gtk-execute" groups = "stock.group_stock_manager,group_stock_user"/>
                         <newline/>
                         <field name="virtual_available"/>
                     </group>


Follow ups