2014-04-30 20 views
0

我想知道如何从mako模板(在我的报告中显示)从我的openerp 7的表中获取所有记录。 据我所知,在我的mako模板中,我有一个名为objects的迭代器,它是一个browse_record(suri.flete.items_recorrida,1)。从mako模板检索openerp表中的所有记录

我的问题是如何获取表“suri.flete.items_recorrida”的所有记录,然后只在报告中显示en_recorrida和finalizado值为False的项目。

在我的真子模板(flete_rep_webkit.mako):

%for item in objects: 
     <tr> 
      <td>${item.descripcion}</td> 
      <td>${item.origen.nombre}(${item.origen.direccion},${item.origen.localidad})</td> 
      <td>${item.destino.nombre}, (${item.destino.direccion},${item.destino.localidad})</td> 
     </tr> 
    %endfor 

在我的解析器.py文件(flete_webkit.py)

import time 
from report import report_sxw 
from osv import osv 

class flete_webkit(report_sxw.rml_parse): 
    def __init__(self, cr, uid, name, context): 
     super(flete_webkit, self).__init__(cr, uid, name, context=context) 
     self.localcontext.update({ 
      'time': time, 
      'cr':cr, 
      'uid': uid, 
     })   

report_sxw.report_sxw('report.webkit.flete_items_recorrida', 
          'suri.flete.items_recorrida', 
          '/suri/flete/report/flete_rep_webkit.mako', 
          parser=flete_webkit) 

在我看来

<report auto="False" id="flete_webkit" model="suri.flete.items_recorrida" name="webkit.flete" file="suri/flete/report/flete_rep_webkit.mako" string="Reporte prueba" report_type="webkit" /> 

在我的.py文件(flete.py)

class items_recorrida(osv.osv):   
    _name = "suri.flete.items_recorrida" 
    _columns = { 
     'name' : fields.related('descripcion', 'name', type="many2one", relation="suri.flete.items_recorrida", string='Descripcion',context="{'form_view_ref' : 'suri.flete.formulario_flete_items_recorrida', 'tree_view_ref' : 'suri.flete.arbol_flete_items_recorrida'}"), 
     'estado' : fields.boolean('Estado', required=True), 
     'descripcion' : fields.char('Descripcion', size=128, required = True), 
     'documentacion' : fields.char('Documentacion', size=128, required = False), 
     'origen': fields.many2one('res.partner.sedes','Origen', required=True),#FK->res.partner.sedes 
     'destino': fields.many2one('res.partner.sedes','Destino', required=True),#FK->res.partner.sedes 
     'pedido_por': fields.many2one('res.users','Pedido por', required=True),#FK->res.users 
     'id_flete': fields.many2one('suri.flete.recorrida','Numero de flete',required=False),#FK->suri.flete.recorrida   
     'nota': fields.char('Nota',size=128,required=False), 
     'proyecto': fields.many2one('suri.proyectos.proyecto','Proyecto',required=False),#FK->suri.proyectos.proyecto 
     'dimension': fields.char('Dimension Estimada', size=128, required = False), 
     'peso': fields.char('Peso Estimado', size=128, required = False), 
     'fragil': fields.boolean('Es fragil?', required=False), 
     'urgente': fields.boolean('Es urgente?', required=False), 
     'en_recorrida': fields.boolean('Esta en recorrida?', required=False,), 
     'finalizado': fields.boolean('Esta finalizado?', required=False,) 
    } 

    _defaults = { 
    'en_recorrida' : False, 
    'finalizado' : False,  
    } 

    _rec_name = 'descripcion' 

在此先感谢。

回答

0

创建分析器的方法返回所有地方finalizado & en_recorrida是假的记录

import time 
from report import report_sxw 
from osv import osv 

class flete_webkit(report_sxw.rml_parse): 
    def __init__(self, cr, uid, name, context): 
     super(flete_webkit, self).__init__(cr, uid, name, context=context) 
     self.localcontext.update({ 
      'time': time, 
      'cr':cr, 
      'uid': uid, 
      'get_records': self._get_records, 
     })  

    def _get_records(self): 
     rc_ids = self.pool.get('suri.flete.items_recorrida').search(self.cr, self.uid, [('en_recorrida', '=', False),('finalizado', '=', False)]) 
     return self.pool.get('suri.flete.items_recorrida').browse(self.cr, self.uid, rc_ids) 

report_sxw.report_sxw('report.webkit.flete_items_recorrida', 
          'suri.flete.items_recorrida', 
          '/suri/flete/report/flete_rep_webkit.mako', 
          parser=flete_webkit) 

而在你的灰鲭鲨使用它像这样

%for item in get_records(): 
    <tr> 
     <td>${item.descripcion}</td> 
     <td>${item.origen.nombre}(${item.origen.direccion},${item.origen.localidad}) </td> 
     <td>${item.destino.nombre}, (${item.destino.direccion},${item.destino.localidad})</td> 
    </tr> 
%endfor 
+0

您好,感谢您的帮助,我真的很欣赏它!我已经修改了代码,但是它在调试器中引发了这个错误:'File'/usr/lib/python2.7/dist-packages/mako/runtime.py',841行,在_exec_template中 callable_ (上下文,* args,** kwargs) 文件“内存:0xb10e82c”,第43行,在render_body中 %中的项目在get_records()中: TypeError:'未定义'对象不可调用'任何想法是什么错误? – ssaid

+0

别忘了在'__init __。py'中导入你的解析器。 – sajadkk

+0

像一个魅力! – ssaid