2013-10-09 3 views
0

Вот что: я хотел наследовать древовидное представление (id is «view_employee_tree») moudle - hr: в модуле 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 

Я отслеживал ошибку в течение целого дня. я пошел в файл: \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 код для вывода вар: resaction, и это выход:

выход:

orm_debug: 
Subordinate Hierarchy 
False 

Отлично! Похоже, что ошибка: TypeError: argument of type 'bool' is not iterable имеет смысл. Subordinate Hierarchy это имя из act_window в файле hr_view.xml:

<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

@ Бакуриу Конечно, спасибо за консультацию. Уже сделано. –

ответ

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

Спасибо за путеводитель, firebug –

Смежные вопросы