2013-10-09 53 views
0

這是事情:我想繼承模塊-hr中的樹視圖(id是「view_employee_tree」):hr_contract模塊。 這裏是我的代碼:TypeError:參數類型'bool'在openerp中是不可迭代的

<record id="hr_contract_hr_employee_tree" model="ir.ui.view"> 
       <field name="name">hr.contract.hr.employee.tree</field> 
       <field name="model">hr.employee</field> 
       <field name="inherit_id" ref="hr.view_employee_tree"/> 
       <field name="arch" type="xml"> 
        <field name="work_phone" position="after"> 
         <field name="contract_ids"/> 
        </field> 
       </field> 
      </record> 

後,我更新模塊(小時,hr_contract),我得到的錯誤如下:)

OpenERP Server Error Client Traceback (most recent call last): 

File "d:\Program Files\OpenERP7.0-20130726-231403\Server\server\openerp\addons\web\http.py", line 204, in dispatch 
File "d:\Program Files\OpenERP7.0-20130726-231403\Server\server\openerp\addons\web\controllers\main.py", line 1128, in call_kw 
File "d:\Program Files\OpenERP7.0-20130726-231403\Server\server\openerp\addons\web\controllers\main.py", line 1120, in _call_kw 
File "d:\Program Files\OpenERP 
     7.0-20130726-231403\Server\server\openerp\addons\web\session.py", line 42, in proxy 
File "d:\Program Files\OpenERP 
     7.0-20130726-231403\Server\server\openerp\addons\web\session.py", line 30, in proxy_method File "d:\Program Files\OpenERP 
     7.0-20130726-231403\Server\server\openerp\addons\web\session.py", line 103, in send 


Server Traceback (most recent call last): 

File "d:\Program Files\OpenERP 
     7.0-20130726-231403\Server\server\openerp\addons\web\session.py", line 89, in send 
File "D:\Program Files\OpenERP 
     7.0-20130726-231403\Server\server\.\openerp\netsvc.py", line 292, in dispatch_rpc 
File "D:\Program Files\OpenERP 
     7.0-20130726-231403\Server\server\.\openerp\service\web_services.py", line 626, in dispatch 
File "D:\Program Files\OpenERP 
     7.0-20130726-231403\Server\server\.\openerp\osv\osv.py", line 188, in execute_kw 
File "D:\Program Files\OpenERP 
     7.0-20130726-231403\Server\server\.\openerp\osv\osv.py", line 131, in wrapper 
File "D:\Program Files\OpenERP 
     7.0-20130726-231403\Server\server\.\openerp\osv\osv.py", line 197, in execute 
File "D:\Program Files\OpenERP 
     7.0-20130726-231403\Server\server\.\openerp\osv\osv.py", line 185, in execute_cr 
File "D:\Program Files\OpenERP 
     7.0-20130726-231403\Server\server\.\openerp\osv\orm.py", line 2290, in fields_view_get 
File "D:\Program Files\OpenERP 
     7.0-20130726-231403\Server\server\.\openerp\osv\orm.py", line 2270, in clean TypeError: 
    argument of type 'bool' is not iterable 

我一直在跟蹤這個bug了一整天。我去了文件:\openerp\osv\orm.py,並獲得線附近2270代碼:

  ir_values_obj = self.pool.get('ir.values') 
      resprint = ir_values_obj.get(cr, user, 'action', 
        'client_print_multi', [(self._name, False)], False, 
        context) 
      resaction = ir_values_obj.get(cr, user, 'action', 
        'client_action_multi', [(self._name, False)], False, 
        context) 

      resrelate = ir_values_obj.get(cr, user, 'action', 
        'client_action_relate', [(self._name, False)], False, 
        context) 

      #I added this for output 
      for action in resaction: 
       print 'orm debug : ' 
       print 'action[1]:',action[1] 
       print 'action[2]',action[2] 

      resaction = [clean(action) for action in resaction 
         if view_type == 'tree' or not action[2].get('multi')] 
      resprint = [clean(print_) for print_ in resprint 
         if view_type == 'tree' or not print_[2].get('multi')] 
      #When multi="True" set it will display only in More of the list view 
      resrelate = [clean(action) for action in resrelate 
         if (action[2].get('multi') and view_type == 'tree') or (not action[2].get('multi') and view_type == 'form')] 

      for x in itertools.chain(resprint, resaction, resrelate): 
       x['string'] = x['name'] 

我加入print代碼輸出VAR:resaction,這是輸出:

輸出:

orm_debug: 
Subordinate Hierarchy 
False 

非常好!看來錯誤:TypeError: argument of type 'bool' is not iterable是有道理的。 Subordinate Hierarchy是文件hr_view.xml在act_window的名字:

<record id="action2" model="ir.actions.act_window"> 
     <field name="name">Subordinate Hierarchy</field> 
     <field name="type">ir.actions.act_window</field> 
     <field name="res_model">hr.employee</field> 
     <field name="domain">[('id','in',active_ids)]</field> 
     <field name="view_type">tree</field> 
     <field name="view_id" ref="view_partner_tree2"/> 
     <field name="view_id" ref="view_employee_tree"/> 
</record> 

但是,什麼是真正的問題? 我做錯了什麼?

任何幫助是高度讚賞!提前致謝!!

+0

做**不**使用引號顯示錯誤信息,否則它們會變成一堆真正難以理解的文本。他們應該像代碼一樣排版。 – Bakuriu

+0

@Bakuriu當然,謝謝你的建議。已經完成。 –

回答

0

把兩者聯繫起來的觀點是這樣的:

<record id="action2" model="ir.actions.act_window"> 
     <field name="name">Subordinate Hierarchy</field> 
     <field name="type">ir.actions.act_window</field> 
     <field name="res_model">hr.employee</field> 
     <field name="domain">[('id','in',active_ids)]</field> 
     <field name="view_type">tree</field> 
</record> 

    <record model="ir.actions.act_window.view" id="action_action2_tree2"> 
     <field name="sequence" eval="1"/> 
     <field name="view_mode">tree</field> 
     <field name="view_id" ref="view_partner_tree2"/> 
     <field name="act_window_id" ref="action2"/> 
    </record> 
    <record model="ir.actions.act_window.view" id="action_action2_tree1"> 
     <field name="sequence" eval="2"/> 
     <field name="view_mode">tree</field> 
     <field name="view_id" ref="view_employee_tree"/> 
     <field name="act_window_id" ref="action2"/> 
    </record> 

這應該解決這個問題。

謝謝

+0

感謝您的指導,螢火蟲 –

相關問題