XML文件中noupdate的含义

经常会在OpenERP的xml源文件里看到 <data noupdate=”0″>或<data noupdate=”1″>这样的tag,一直不知道这个标签对其中包含的数据有什么样的影响。

一般noupdate=’0’都用在demo_xml或init_xml中,

今天阅读base模块的语法时,发现 base/ security/ base_security.xml 文件里既有noupdate=”0″又有noupdate=”1″的记录,而这个文件是作为 init_xml使用的。

仔细读了一下文档 http://doc.openerp.com/v6.1/developer/11_upgrade_and_migration.html#upgrading,总结如下:

init的过程只 修改、添加、删除 noupdate=’1′ 的记录

update的过程 修改、添加、删除 noupdate=”0″的记录

noupdate的默认值是”0″

我们在界面上选择某个模块,并点击【升级】按钮时,是执行的update过程。对之前由xml导入又被用户在界面上修改的数据,系统如何处理,取决于导入这条记录的xml文件里data标签的noupdate值。而不是之前认为的__openerp__.py里是作为 init_xml载入还是update_xml载入。

为了避免数据丢失,openerp在升级模块时对py文件里移除的字段,并不在postgresql中删除。

结合base_security.xml这个文件,做个实验:

  1. 新建数据库,改成扩展视图,给admin用户设置技术特性权限(这样才能看到base模块)。
  2. 修改partner manager组的名称为 partner manager NEW
  3. 修改partner 规则的名称为 partner NEW
  4. 升级base模块
  5. 现在系统里有partner NEW规则和partner manager组(后者被升级程序更新了)