Module Manifests

manifest

The manifest file serves to declare a python package as an Odoo module and to specify module metadata.

It is a file called __manifest__.py and contains a single Python dictionary, where each key specifies module metadatum.

{
    'name': "A Module",
    'version': '1.0',
    'depends': ['base'],
    'author': "Author Name",
    'category': 'Category',
    'description': """
    Description text
    """,
    # data files always loaded at installation
    'data': [
        'views/mymodule_view.xml',
    ],
    # data files containing optionally loaded demonstration data
    'demo': [
        'demo/demo_data.xml',
    ],
}

Available manifest fields are:

name (str, required)

the human-readable name of the module

version (str)

this module's version, should follow semantic versioning rules

description (str)

extended description for the module, in reStructuredText

author (str)

name of the module author

website (str)

website URL for the module author

license (str, defaults: LGPL-3)

distribution license for the module. Possible values:

  • GPL-2

  • GPL-2 or any later version

  • GPL-3

  • GPL-3 or any later version

  • AGPL-3

  • LGPL-3

  • Other OSI approved licence

  • OEEL-1 (Odoo Enterprise Edition License v1.0)

  • OPL-1 (Odoo Proprietary License v1.0)

  • Other proprietary

category (str, default: Uncategorized)

classification category within Odoo, rough business domain for the module.

Although using existing categories is recommended, the field is freeform and unknown categories are created on-the-fly. Category hierarchies can be created using the separator / e.g. Foo / Bar will create a category Foo, a category Bar as child category of Foo, and will set Bar as the module's category.

depends (list(str))

Odoo modules which must be loaded before this one, either because this module uses features they create or because it alters resources they define.

When a module is installed, all of its dependencies are installed before it. Likewise dependencies are loaded before a module is loaded.

توجه

Module base is always installed in any Odoo instance. But you still need to specify it as dependency to make sure your module is updated when base is updated.

data (list(str))

List of data files which must always be installed or updated with the module. A list of paths from the module root directory

demo (list(str))

List of data files which are only installed or updated in demonstration mode

auto_install (bool or list(str), default: False)

If True, this module will automatically be installed if all of its dependencies are installed.

It is generally used for "link modules" implementing synergetic integration between two otherwise independent modules.

برای مثال sale_crm به هر دو sale و crm وابسته است و روی auto_install تنظیم شده است. وقتی هر دوی sale و crm نصب باشند، به‌صورت خودکار ردیابی کمپین‌های CRM را به سفارش‌های فروش اضافه می‌کند، بدون آنکه sale یا crm از وجود یکدیگر آگاه باشند.

اگر لیستی باشد، باید زیرمجموعه‌ای از وابستگی‌ها را در بر بگیرد. این ماژول به‌محض اینکه همه وابستگی‌های آن زیرمجموعه نصب شوند، به‌صورت خودکار نصب خواهد شد. وابستگی‌های باقی‌مانده نیز به‌صورت خودکار نصب خواهند شد. اگر لیست خالی باشد، این ماژول همواره صرف‌نظر از وابستگی‌هایش به‌صورت خودکار نصب خواهد شد و آن‌ها نیز نصب خواهند شد.

external_dependencies (dict(key=list(str)))

یک دیکشنری حاوی وابستگی‌های python و/یا باینری.

برای وابستگی‌های python، کلید python باید برای این دیکشنری تعریف شود و فهرستی از ماژول‌های python که باید import شوند به آن اختصاص داده شود.

برای وابستگی‌های باینری، کلید bin باید برای این دیکشنری تعریف شود و فهرستی از نام‌های اجرایی باینری به آن اختصاص داده شود.

اگر ماژول python در ماشین میزبان نصب نشده باشد یا فایل اجرایی باینری در متغیر محیطی PATH ماشین میزبان یافت نشود، ماژول نصب نخواهد شد.

application (bool، پیش‌فرض: False)

اینکه ماژول به‌عنوان یک اپلیکیشن کامل (True) در نظر گرفته شود یا فقط یک ماژول فنی (False) است که برخی قابلیت‌های اضافی را به یک ماژول اپلیکیشن موجود می‌افزاید.

assets (dict)

تعریفی از نحوه بارگذاری همه فایل‌های استاتیک در باندل‌های دارایی مختلف. برای جزئیات بیشتر درباره نحوه توصیف باندل‌ها، صفحه assets را ببینید.

installable (bool پیش‌فرض: True)

اینکه کاربر باید بتواند ماژول را از رابط وب نصب کند یا خیر.

maintainer (str)

شخص یا نهاد مسئول نگهداری این ماژول؛ به‌صورت پیش‌فرض فرض می‌شود که نویسنده، نگهدارنده است.

{pre_init, post_init, uninstall}_hook (str)

هوک‌هایی برای نصب/حذف ماژول؛ مقدار آن‌ها باید رشته‌ای باشد که نمایانگر نام تابعی تعریف‌شده در __init__.py ماژول است.

pre_init_hook یک env را به‌عنوان تنها آرگومان خود می‌گیرد؛ این تابع پیش از نصب ماژول اجرا می‌شود.

post_init_hook یک env را به‌عنوان تنها آرگومان خود می‌گیرد؛ این تابع بلافاصله پس از نصب ماژول اجرا می‌شود.

uninstall_hook یک env را به‌عنوان تنها آرگومان خود می‌گیرد؛ این تابع پس از حذف ماژول اجرا می‌شود.

این هوک‌ها فقط زمانی باید استفاده شوند که راه‌اندازی/پاک‌سازی مورد نیاز برای این ماژول از طریق api بسیار دشوار یا غیرممکن باشد.

active (bool)

منسوخ شده. توسط auto_install جایگزین شده است.