2016-12-01 1 views
1

ich ein Modul für Odoo 8 baute, um zusätzliche Felder in Standard-CRM-Modul Opportunities Abschnitt hinzufügen, aber ich erhalte die folgende Fehlermeldung:KeyError: ‚crm‘, wenn benutzerdefinierte Modul in Odoo Installation 8

Traceback (most recent call last): 
    File "/opt/odoo/odoo-server/openerp/http.py", line 540, in _handle_exception 
    return super(JsonRequest, self)._handle_exception(exception) 
    File "/opt/odoo/odoo-server/openerp/http.py", line 577, in dispatch 
    result = self._call_function(**self.params) 
    File "/opt/odoo/odoo-server/openerp/http.py", line 313, in _call_function 
    return checked_call(self.db, *args, **kwargs) 
    File "/opt/odoo/odoo-server/openerp/service/model.py", line 118, in wrapper 
    return f(dbname, *args, **kwargs) 
    File "/opt/odoo/odoo-server/openerp/http.py", line 310, in checked_call 
    return self.endpoint(*a, **kw) 
    File "/opt/odoo/odoo-server/openerp/http.py", line 806, in __call__ 
    return self.method(*args, **kw) 
    File "/opt/odoo/odoo-server/openerp/http.py", line 406, in response_wrap 
    response = f(*args, **kw) 
    File "/opt/odoo/odoo-server/addons/web/controllers/main.py", line 948, in call_button 
    action = self._call_kw(model, method, args, {}) 
    File "/opt/odoo/odoo-server/addons/web/controllers/main.py", line 936, in _call_kw 
    return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs) 
    File "/opt/odoo/odoo-server/openerp/api.py", line 268, in wrapper 
    return old_api(self, *args, **kwargs) 
    File "/opt/odoo/odoo-server/openerp/addons/base/module/module.py", line 447, in button_immediate_install 
    return self._button_immediate_function(cr, uid, ids, self.button_install, context=context) 
    File "/opt/odoo/odoo-server/openerp/api.py", line 268, in wrapper 
    return old_api(self, *args, **kwargs) 
    File "/opt/odoo/odoo-server/openerp/addons/base/module/module.py", line 495, in _button_immediate_function 
    registry = openerp.modules.registry.RegistryManager.new(cr.dbname, update_module=True) 
    File "/opt/odoo/odoo-server/openerp/modules/registry.py", line 370, in new 
    openerp.modules.load_modules(registry._db, force_demo, status, update_module) 
    File "/opt/odoo/odoo-server/openerp/modules/loading.py", line 355, in load_modules 
    loaded_modules, update_module) 
    File "/opt/odoo/odoo-server/openerp/modules/loading.py", line 255, in load_marked_modules 
    loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks) 
    File "/opt/odoo/odoo-server/openerp/modules/loading.py", line 152, in load_module_graph 
    models = registry.load(cr, package) 
    File "/opt/odoo/odoo-server/openerp/modules/registry.py", line 163, in load 
    model = cls._build_model(self, cr) 
    File "/opt/odoo/odoo-server/openerp/models.py", line 595, in _build_model 
    original_module = pool[name]._original_module if name in parents else cls._module 
    File "/opt/odoo/odoo-server/openerp/modules/registry.py", line 102, in __getitem__ 
    return self.models[model_name] 
KeyError: 'crm' 

Es scheint wie ein Abhängigkeitsfehler, aber ich habe bereits 'crm' in meine openerp .py Datei hinzugefügt. Ich meine auch Informationen Moduldateien bieten:

__init__.py

import cant_neg_crm 

__openerp__.py

{ 
    'name': 'Cant Neg CRM', 
    'version': '1.0', 
    'category': 'Customer Relationship Management', 
    'summary': 'Leads, Opportunities, Phone Calls', 
    'description': """ 

Info 
==================================================== 

Added : 
------------------------------- 
* Hosting 
""", 
    'author': 'Gigabee', 
    'website': 'https://gigabee.es', 
    'depends': ['base','crm',], 
    'data': [ 
     'cant_neg_crm.xml', 
    ], 
    'installable': True, 
    'application': True, 
    'auto_install': False, 
} 

cant_neg_crm.py

import openerp 
from openerp.osv import fields, osv, orm 
from openerp import models 


class tipo_facturacion(models.Model): 
    _name = "tipo_facturacion" 
    name = fields.char('Tipo', required=True) 

class cant_neg_opp(models.Model): 
     _name = "crm" 
     _inherit = "crm" 
     _columns = { 
     'tiene_dominio': fields.boolean('Tiene dominio(s)'), 
     'su_dominio': fields.char('Dominio(s)'), 

     'modo_facturacion': fields.many2one('tipo_facturacion' ,'Tipo Facturacion'), 
    } 

cant_neg_crm.xml

<?xml version="1.0"?> 
<openerp> 
    <data> 
     <record id="crm_cant_neg_view" model="ir.ui.view"> 
      <field name="name">res.partner.cant_neg_crm.inherit</field> 
      <field name="model">res.partner</field> 
      <field name="inherit_id" ref="crm.crm_case_form_view_oppor" /> 
      <field name="arch" type="xml"> 
      <xpath expr="//page[@string='Internal Notes']" position="after"> 
       <page string="Dominios y Hosting"> 
        <group string="Dominios y Hosting del Cliente"> 
         <field string="¿Tiene dominio?" name="tiene_dominio"/> 
         <field string="Dominio" name="su_dominio" attrs="{'invisible':[('tiene_dominio', '!=', True)], 'required':[('tiene_dominio', '=', True)]}" /> 
        </group>    
      </xpath> 
      </field> 
    </record> 
    </data> 
</openerp> 

Vielen Dank im Voraus für Ihre Hilfe!

Mit freundlichen Grüßen

Antwort

2

Sie erhalten KeyError: 'crm' weil Sie _inherit = 'crm' schreiben, das heißt, es prüft crm Objekt in der Datenbank, aber es ist nicht gefunden.

Sie müssen die folgenden Punkte verbessern.

  1. Es gibt keine crm Objekt. Es ist crm.lead Objekt. Entfernen Sie Name Attribut.

    class cant_neg_opp(models.Model): 
        _inherit = "crm.lead" 
        _columns = { 
         'tiene_dominio': fields.boolean('Tiene dominio(s)'), 
         'su_dominio': fields.char('Dominio(s)'), 
    
         'modo_facturacion': fields.many2one('tipo_facturacion' ,'Tipo Facturacion'), 
        } 
    
  2. Ansicht wechseln Modellnamen von res.partner-crm.lead

    <?xml version="1.0"?> 
    <openerp> 
        <data> 
         <record id="crm_cant_neg_view" model="ir.ui.view"> 
          <field name="name">crm.lead.cant_neg_crm.inherit</field> 
          <field name="model">crm.lead</field> 
          <field name="inherit_id" ref="crm.crm_case_form_view_oppor" /> 
          <field name="arch" type="xml"> 
          <xpath expr="//page[@string='Internal Notes']" position="after"> 
           <page string="Dominios y Hosting"> 
            <group string="Dominios y Hosting del Cliente"> 
             <field string="¿Tiene dominio?" name="tiene_dominio"/> 
             <field string="Dominio" name="su_dominio" attrs="{'invisible':[('tiene_dominio', '!=', True)], 'required':[('tiene_dominio', '=', True)]}" /> 
            </group>    
          </xpath> 
          </field> 
        </record> 
        </data> 
    </openerp> 
    

Für weitere Informationen, können Sie lernen von Odoo 8 Documentation

+0

Vielen Dank ! Es hat perfekt funktioniert! –