模块列表更新后,OpenERP自定义模块未显示

时间:2014-03-07 19:58:12

标签: python openerp

 Put module in addons-path                      [x]
 Technical Features                             [x] 
 Restart openerp-server                         [x] 
 Click the update module list button            [x] 
 Clear the "installed" filter in the search box [x]

我的自定义模块在模块列表中仍然不可见。

但是,可以通过代码找到它:

import openerp

pool       = openerp.modules.registry.RegistryManager.get("test")
cr         = pool.db.cursor()
uid        = openerp.SUPERUSER_ID
module     = pool.get("ir.module.module")
module_id  = module.search(cr,uid,[("name","=","helloworld")])[0]
helloworld = module.browse(cr,uid,module_id)


In [4]: helloworld.name
Out[4]: u'helloworld'

In [7]: helloworld.state
Out[7]: u'uninstalled'

修改

模块结构

chaouche@karabeela ~/CODE/OPENERP/addons/helloworld $ ls
total 20K
-rw-r--r-- 1 chaouche chaouche  222 Mar  7 19:27 client.py
-rw-r--r-- 1 chaouche chaouche   14 Feb 18 16:37 __init__.py
-rw-r--r-- 1 chaouche chaouche  444 Mar  7 20:02 __openerp__.py
-rw-r--r-- 1 chaouche chaouche 4.8K Mar  7 21:14 view.xml
chaouche@karabeela ~/CODE/OPENERP/addons/helloworld $

__openerp__.py

chaouche@karabeela ~/CODE/OPENERP/addons/helloworld $ cat __openerp__.py
{
        "name"        : "Hello World !",
        "author"      : "yassine chaouche",
        "version"     : '0.1',
        "email"       : "yacinechaouche@yahoo.com",
        "website"     : "http://ychaouche.wikispot.org",
        "category"    : "example",
    "description" : "a simple hello world example showing how to create a module",
    "summary"     : "Hello world !",
        "depends"     : ["base"],
        "data"        : ["view.xml"],
        "demo"        : [],
        "installable" : True,
}
chaouche@karabeela ~/CODE/OPENERP/addons/helloworld $

client.py

chaouche@karabeela ~/CODE/OPENERP/addons/helloworld $ cat client.py
from openerp.osv import osv, fields

class client(osv.osv):
    _inherit = "res.partner"
    _columns  = {
        "document" : fields.binary("document")
        }

c = client()
#yassine
print "my module : client is : ",c
chaouche@karabeela ~/CODE/OPENERP/addons/helloworld $

__init__.py

chaouche@karabeela ~/CODE/OPENERP/addons/helloworld $ cat __init__.py
import client
chaouche@karabeela ~/CODE/OPENERP/addons/helloworld $

view.xml

chaouche@karabeela ~/CODE/OPENERP/addons/helloworld $ cat view.xml 
<?xml version="1.0" encoding="utf-8"?>
<!-- we ensure that encoding is set correctly-->
<!-- all of our view must be enclosed in openerp tags -->
<openerp>
  <!-- here we are defining data -->
  <!-- other possible tags are : -->
  <!-- idk                       -->
  <!-- idk                       -->
  <!-- idk                       -->
  <!-- no specs whatsoever       -->
  <data>
   <!-- there are only two possible tags that you can put here                  -->
   <!-- <record> tags and <menuitem> tags                                       -->
   <!-- menuitems create menu items in the general menu on the left             -->
   <!-- an action must be associated with them                                  -->
   <!-- actions are created with a <record> tag with a specific model attribute -->
   <!-- <record model="ir.actions.act_window"> creates an action                -->
   <!-- records are a way of describing a row in the openerp database.          -->
   <!-- the model attribute represents the table that you want to insert to.    -->
   <!-- Records are kind of a SQL insert statement in an XML form               -->
   <!-- that's why there are <field> tags inside <record> tags, they represent  -->
   <!-- columns values.                                                         -->

   <!-- There are only two types of records : view records and action records  -->
   <!-- action records are created with the "ir.actions.act_window"            -->
   <!-- model (which maps to a table).                                         -->
   <!-- ir_act_window is a table in the openerp database, you can fire up      -->
   <!-- pgadmin to check it out. Possible fields for an action record are      -->
   <!-- columns of the ir_act_window table.                                    -->

   <!-- The same goes for the view records. A view record is created with the  -->
   <!-- "ir.ui.view" model which maps to the  ir_ui_view table in the openerp  -->
   <!-- database and fields inside a view record are also values for columns   -->
   <!--  in that table.                                                        -->


   <!-- You can take a look at the xml files in the addons directory for some  -->
   <!-- real life examples.                                                    -->

   <record id="client_form" model="ir.ui.view">
     <!-- Now say we want to change our partner form view to add in a special    -->
     <!-- ui element to upload files. We need to tell OpenERP that we are going  -->
     <!-- to inherit from the current partner form by adding an inherit_id field -->    
     <!-- that will be set to the our partner form ID. But how do we get that    -->
     <!-- ID ?                                                                   -->

     <!-- We must enable developer mode (click on your username, click about     -->
     <!-- openerp, click enable debug mode). After that we go to the sales       -->
     <!-- module and click on a partner (any partner). We should have the form   -->
     <!-- view open. In the middle top we should see a new ui element, a         -->
     <!-- selection box with Debug View #129 inside. Click on that list then     -->
     <!-- select manage views. A popup div opens with all the views that are     -->
     <!-- associated with what we are currently seeing. This gives us view id    -->
     <!-- whichi is res.partner.form. We'll use that as the inherit_id attribute -->

     <field name="name">client.form</field>
     <field name="model">res.partner</field>
     <field name="inherit_id" ref="res.partner.form" />

     <!-- Up until now we haven't written a single line of UI element, we're     -->
     <!-- filling some mandatory fields (columns) that OpenERP uses to manage    -->
     <!-- its views. The real UI code must go inside a special 'arch' field.     -->
     <field name="arch" type="XML">
       <!-- this will store our view structure                                   -->
       <!-- so we need to tell openerp that we would like to add a new page in   -->
       <!-- the notebook that's on the bottom. We simply add the notebook tag    -->
       <!-- and specify that we want to add something to it (not replace it) by  -->
       <!-- setting the position attribute to "inside", meaning all fields       -->
       <!-- following must be place inside the notebook. Other possible values   -->
       <!-- for this attribute are "after", "before" and "replace". "inside"     -->
       <!-- being the default.                                                   -->
       <notebook position="inside">
         <!-- this page will be added to the other pages of the notebook         -->
         <page string="Document">
           <field name="res.partner.document"/>
         </page>
       </notebook>
     </field>
   </record>
  </data>
</openerp>
chaouche@karabeela ~/CODE/OPENERP/addons/helloworld $

1 个答案:

答案 0 :(得分:5)

好的,试试设置 - &gt;更新模块列表。

然后打开设置 - &gt;安装模块,删除&#34;安装&#34;在搜索栏中过滤并搜索您的模块。我希望你能找到它; - )