2017-02-08 102 views
1

我有一个V9版本的9模块。我试图让它在V10中安装并出现错误。创建安全组时发生错误。我也尝试从维护工具迁移到V10。Odoo 9模块到V10

> Replace openerp imports to odoo. 
> 
>  Rename __openerp__.py to __manifest__.py 
> 
>  Replace select = True by index = TrueReplace string selectors in XML by name (if possible) or other attribute selector or even another 
> equivalent path/reference. For example, change <group string="x" 
> position="after"> by <group name="x" position="after">Remove <data> 
> and </data> in xml files if noupdate="0" 
> 
>  Replace the <openerp>/</openerp> tags in xml files by <odoo>/</odoo>. 
> 
>  Don't use @api.one with @api.onchange or it will crash. 
> 
>  ... 

下面是错误

File "/home/jason/git/odoo10/odoo/addons/base/ir/ir_model.py", line 1028, in xmlid_lookup 
    raise ValueError('External ID not found in the system: %s' % xmlid) 
ParseError: "<type 'exceptions.ValueError'>: "External ID not found in the system: base.group_sale_salesman_all_leads" while evaluating 
"[(4,ref('base.group_user')),           (4,ref('account.group_account_invoice')),           (4,ref('stock.group_stock_user')),           (4,ref('base.group_sale_salesman_all_leads'))]"" while parsing /home/jason/git/customaddons/layby_order/security/layby_security.xml:5, near 
<record id="group_layby_user" model="res.groups"> 
     <field name="name">Layby User</field> 
     <field name="category_id" ref="base.module_category_sales_management"/> 
     <field name="comment">This is applicable for Layby User.</field> 
     <field name="implied_ids" eval="[(4,ref('base.group_user')),           (4,ref('account.group_account_invoice')),           (4,ref('stock.group_stock_user')),           (4,ref('base.group_sale_salesman_all_leads'))]"/> 
    </record> 

layby_security.xml

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
<data> 

    <record id="group_layby_user" model="res.groups"> 
     <field name="name">Layby User</field> 
     <field name="category_id" ref="base.module_category_sales_management"/> 
     <field name="comment">This is applicable for Layby User.</field> 
     <field name="implied_ids" eval="[(4,ref('base.group_user')), 
             (4,ref('account.group_account_invoice')), 
             (4,ref('stock.group_stock_user')), 
             (4,ref('base.group_sale_salesman_all_leads'))]"/> 
    </record> 

</data> 
</openerp> 

ir.model.access.csv

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink 
access_layby_order,layby.order,model_layby_order,group_layby_user,1,1,1,0 
access_layby_order_line,layby.order.line,model_layby_order_line,group_layby_user,1,1,1,1 

如果我停止服务器并启动它再次尝试安装我得到的第一个错误

File "/home/jason/git/customaddons/layby_order/layby.py", line 147 
     date_order = fields.Date.context_today(self) 
SyntaxError: invalid syntax 

之后,如果我安装我得到的分析错误外部ID未找到。我想我得到的原因是因为安装停止在线147 date_order = fields.Date.context_today(self),但我不知道为什么。

更新

仍停在管线147

date_order = fields.Date.context_today(self)) 

更改为sales_team.group_sale_salesman_all_leads

原来的错误是走了,但现在得到

raise Exception(_('Module loading %s failed: file %s could not be processed:\n %s') % (module, fname, warning_msg)) 
Exception: Module loading layby_order failed: file layby_order/security/ir.model.access.csv could not be processed: 
No matching record found for external id 'model_layby_order' in field 'Object' 
Missing required value for the field 'Object' (model_id) 
No matching record found for external id 'model_layby_order_line' in field 'Object' 
Missing required value for the field 'Object' (model_id) 

回答

2

OCA指南迁移从V9模块后到v10大多是足够的,除了它没有提到过去以base为前缀的几个安全组已经被移动/模块化到它们各自的模块,例如base.group_hr_user,正如您在案例中看到的base.group_sale_salesman_all_leads

解决您的第一个问题,改变你的裁判base.group_sale_salesman_all_leadssales_team.group_sale_salesman_all_leadslayby_security.xml

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
<data> 

    <record id="group_layby_user" model="res.groups"> 
     <field name="name">Layby User</field> 
     <field name="category_id" ref="base.module_category_sales_management"/> 
     <field name="comment">This is applicable for Layby User</field> 
     <field name="implied_ids" eval="[(4,ref('base.group_user')), 
            (4,ref('account.group_account_invoice')), 
            (4,ref('stock.group_stock_user')), 
            (4,ref('sales_team.group_sale_salesman_all_leads'))]"/> 
    </record> 

</data> 
</openerp> 

对于你的第二个问题,如果date_order是要添加到您的类中的字段,这样做,而不是:

date_order = fields.Date(default=fields.Date.context_today) 

否则,如果您实际声明变量而不是新字段,则语法看起来不错,而Odoo 10仍在使用fields.Date.context_today()

您可以look it up on github


编辑:(问题是更新后)

错误可能是因为你缺少你res.groups记录模型声明。

您可以尝试在layby_security.xml中添加<field name="model_id" ref="model_layby_order"/>吗?

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
<data> 

    <record id="group_layby_user" model="res.groups"> 
     <field name="name">Layby User</field> 
     <field name="model_id" ref="model_layby_order"/> 
     <field name="category_id" ref="base.module_category_sales_management"/> 
     <field name="comment">This is applicable for Layby User</field> 
     <field name="implied_ids" eval="[(4,ref('base.group_user')), 
            (4,ref('account.group_account_invoice')), 
            (4,ref('stock.group_stock_user')), 
            (4,ref('sales_team.group_sale_salesman_all_leads'))]"/> 
    </record> 

</data> 
</openerp> 
+0

我更新了我原来的问题。我得到了一个不同的错误,现在无法处理ir.model.access.csv:仍然停在date_order = fields.Date.context_today(self)) – user2379186

+0

我更新了答案!让我知道它是否有帮助。 –

+0

我收到提高ValueError('系统中找不到外部ID:%s'%xmlid) ParseError:解析/ home/jason/git/customaddons/layby_order时系统中找不到外部ID:layby_order.model_layby_order/security/layby_security.xml:5,在 – user2379186