2014-04-30 19 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