2016-05-09 9 views
2

Odooモジュールには、常に2つのファイル__init__.py__openerp__.pyがあります。モジュールから名前のないdictをインポートする

dhl_module 
      |-- controller 
      |-- models 
      |-- views 
      |-- __init__.py 
      |-- __openerp__.py 

ファイル__openerp__.pyには、名前に割り当てないでdictが含まれています。このdictは、モジュールに関する情報を格納します。それは次のようになります。

# -*- coding: utf-8 -*- 
{ 
    'name': "DHL connector", 
    # used as subtitle 
    'summary': "Configuration for DHL connector ", 
    'description': """ DHL connector 
    """, 
    'author': "me", 
    'website': "mysite.com", 
    'category': 'Technical Settings', 
    # Change the version every release for apps. 
    'version': '0.0.1', 
    # any module necessary for this one to work correctly 
    'depends': [], 
    # always loaded 
    'data': ['views/dhl.xml', ], 
    # only loaded in demonstration mode 
    'demo': [], 
    # only loaded in test 
    'test': [], 
    'installable': True, 
    'application': True, 
} 

__openerp__.pyモジュールからOdooまたは私はこの辞書にアクセスするにはどうすればよいですか? dict変数は名前に割り当てられません。どのようにインポートできますか?

+0

だから、 '__openerp __ py'は思えません。有効なPythonファイルにすること。 – linusg

+2

@linusg:Pythonは有効ですが、新しい名前は作成されません。 –

+1

@MartijnPietersああ、情報ありがとう!私はそれをチェックし、Pythonインタプリタは何もしません。 – linusg

答えて

6

OpenERPはそのモジュールをインポートする必要はありません。彼らはただのテキストとしてファイルを読むことができたし、ちょうどeval()内容を評価:

>>> text = '''\ 
... # -*- coding: utf-8 -*- 
... { 
...  'name': "DHL connector", 
...  # used as subtitle 
...  'summary': "Configuration for DHL connector ", 
...  'description': """ DHL connector 
...  """, 
...  'author': "me", 
...  'website': "mysite.com", 
...  'category': 'Technical Settings', 
...  # Change the version every release for apps. 
...  'version': '0.0.1', 
...  # any module necessary for this one to work correctly 
...  'depends': [], 
...  # always loaded 
...  'data': ['views/dhl.xml', ], 
...  # only loaded in demonstration mode 
...  'demo': [], 
...  # only loaded in test 
...  'test': [], 
...  'installable': True, 
...  'application': True, 
... } 
... ''' 
>>> eval(text) 
{'website': 'mysite.com', 'description': ' DHL connector\n ', 'demo': [], 'depends': [], 'data': ['views/dhl.xml'], 'category': 'Technical Settings', 'name': 'DHL connector', 'author': 'me', 'summary': 'Configuration for DHL connector ', 'application': True, 'version': '0.0.1', 'test': [], 'installable': True} 

そして、それはexactly what OpenERP does次のとおりです。

MANIFEST = '__openerp__.py' 

# ... 

terp_file = mod_path and opj(mod_path, MANIFEST) or False 

# ... 

f = tools.file_open(terp_file) 
try: 
    info.update(eval(f.read())) 
finally: 
    f.close() 
+0

私はそれを理解しました。ありがとうMartijn !!! – qvpham

関連する問題