Compare commits

..

1 Commits

Author SHA1 Message Date
Amélie Dieudonné
f0548c755b [IMP] documentation: update many2many_binary widget
The widget now also display an image preview for the files of MIME type "image".
A new option 'reverse_order' has been added to visually reverse the files order.
2024-11-19 13:29:25 +01:00
3286 changed files with 81757 additions and 180616 deletions

1
.gitignore vendored
View File

@@ -2,7 +2,6 @@
*.mo
.*
!.gitattributes
!.weblate.json
# Sphinx build files
_build/

152
.tx/config Normal file
View File

@@ -0,0 +1,152 @@
[main]
host = https://www.transifex.com
[o:odoo:p:odoo-18-doc:r:administration]
file_filter = locale/<lang>/LC_MESSAGES/administration.po
source_file = locale/sources/administration.pot
type = POT
minimum_perc = 0
resource_name = administration
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-18-doc:r:applications]
file_filter = locale/<lang>/LC_MESSAGES/applications.po
source_file = locale/sources/applications.pot
type = POT
minimum_perc = 0
resource_name = applications
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-18-doc:r:essentials]
file_filter = locale/<lang>/LC_MESSAGES/essentials.po
source_file = locale/sources/essentials.pot
type = POT
minimum_perc = 0
resource_name = essentials
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-18-doc:r:finance]
file_filter = locale/<lang>/LC_MESSAGES/finance.po
source_file = locale/sources/finance.pot
type = POT
minimum_perc = 0
resource_name = finance
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-18-doc:r:general]
file_filter = locale/<lang>/LC_MESSAGES/general.po
source_file = locale/sources/general.pot
type = POT
minimum_perc = 0
resource_name = general
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-18-doc:r:hr]
file_filter = locale/<lang>/LC_MESSAGES/hr.po
source_file = locale/sources/hr.pot
type = POT
minimum_perc = 0
resource_name = hr
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-18-doc:r:index]
file_filter = locale/<lang>/LC_MESSAGES/index.po
source_file = locale/sources/index.pot
type = POT
minimum_perc = 0
resource_name = index
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-18-doc:r:inventory_and_mrp]
file_filter = locale/<lang>/LC_MESSAGES/inventory_and_mrp.po
source_file = locale/sources/inventory_and_mrp.pot
type = POT
minimum_perc = 0
resource_name = inventory_and_mrp
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-18-doc:r:marketing]
file_filter = locale/<lang>/LC_MESSAGES/marketing.po
source_file = locale/sources/marketing.pot
type = POT
minimum_perc = 0
resource_name = marketing
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-18-doc:r:productivity]
file_filter = locale/<lang>/LC_MESSAGES/productivity.po
source_file = locale/sources/productivity.pot
type = POT
minimum_perc = 0
resource_name = productivity
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-18-doc:r:sales]
file_filter = locale/<lang>/LC_MESSAGES/sales.po
source_file = locale/sources/sales.pot
type = POT
minimum_perc = 0
resource_name = sales
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-18-doc:r:services]
file_filter = locale/<lang>/LC_MESSAGES/services.po
source_file = locale/sources/services.pot
type = POT
minimum_perc = 0
resource_name = services
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-18-doc:r:user_settings]
file_filter = locale/<lang>/LC_MESSAGES/settings.po
source_file = locale/sources/settings.pot
type = POT
minimum_perc = 0
resource_name = settings
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-18-doc:r:studio]
file_filter = locale/<lang>/LC_MESSAGES/studio.po
source_file = locale/sources/studio.pot
type = POT
minimum_perc = 0
resource_name = studio
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-18-doc:r:websites]
file_filter = locale/<lang>/LC_MESSAGES/websites.po
source_file = locale/sources/websites.pot
type = POT
minimum_perc = 0
resource_name = websites
replace_edited_strings = false
keep_translations = false
source_lang = en

View File

@@ -1,76 +0,0 @@
{
"projects": {
"odoo-19-doc": [
{
"name": "administration",
"filemask": "locale/*/LC_MESSAGES/administration.po",
"new_base": "locale/sources/administration.pot"
},
{
"name": "applications",
"filemask": "locale/*/LC_MESSAGES/applications.po",
"new_base": "locale/sources/applications.pot"
},
{
"name": "essentials",
"filemask": "locale/*/LC_MESSAGES/essentials.po",
"new_base": "locale/sources/essentials.pot"
},
{
"name": "finance",
"filemask": "locale/*/LC_MESSAGES/finance.po",
"new_base": "locale/sources/finance.pot"
},
{
"name": "general",
"filemask": "locale/*/LC_MESSAGES/general.po",
"new_base": "locale/sources/general.pot"
},
{
"name": "hr",
"filemask": "locale/*/LC_MESSAGES/hr.po",
"new_base": "locale/sources/hr.pot"
},
{
"name": "index",
"filemask": "locale/*/LC_MESSAGES/index.po",
"new_base": "locale/sources/index.pot"
},
{
"name": "inventory_and_mrp",
"filemask": "locale/*/LC_MESSAGES/inventory_and_mrp.po",
"new_base": "locale/sources/inventory_and_mrp.pot"
},
{
"name": "marketing",
"filemask": "locale/*/LC_MESSAGES/marketing.po",
"new_base": "locale/sources/marketing.pot"
},
{
"name": "productivity",
"filemask": "locale/*/LC_MESSAGES/productivity.po",
"new_base": "locale/sources/productivity.pot"
},
{
"name": "sales",
"filemask": "locale/*/LC_MESSAGES/sales.po",
"new_base": "locale/sources/sales.pot"
},
{
"name": "services",
"filemask": "locale/*/LC_MESSAGES/services.po",
"new_base": "locale/sources/services.pot"
},
{
"name": "studio",
"filemask": "locale/*/LC_MESSAGES/studio.po",
"new_base": "locale/sources/studio.pot"
},
{
"name": "websites",
"filemask": "locale/*/LC_MESSAGES/websites.po",
"new_base": "locale/sources/websites.pot"
}
]
}
}

View File

@@ -13,10 +13,6 @@ ifndef CURRENT_LANG
CURRENT_LANG = en
endif
ifndef EXPORT_PATH
EXPORT_PATH = locale/sources
endif
SPHINX_BUILD = sphinx-build
CONFIG_DIR = .
SPHINXOPTS = -D project_root=$(ROOT) -D canonical_version=$(CANONICAL_VERSION) \
@@ -39,8 +35,6 @@ endif
#=== Standard rules ===#
.PHONY: all help clean html latexpdf gettext fast static test review
# In first position to build the documentation from scratch by default
all: html
@@ -73,7 +67,7 @@ latexpdf:
gettext:
@echo "Generating translatable files..."
$(SPHINX_BUILD) -c $(CONFIG_DIR) -b gettext $(SOURCE_DIR) $(EXPORT_PATH)
$(SPHINX_BUILD) -c $(CONFIG_DIR) -b gettext $(SOURCE_DIR) locale/sources
@echo "Generation finished."
$(HTML_BUILD_DIR)/_static/style.css: extensions/odoo_theme/static/style.scss extensions/odoo_theme/static/scss/*.scss
@@ -95,8 +89,7 @@ static: $(HTML_BUILD_DIR)/_static/style.css
test:
@python tests/main.py $(SOURCE_DIR)/administration $(SOURCE_DIR)/applications $(SOURCE_DIR)/contributing $(SOURCE_DIR)/developer redirects
# Similar to `test`, but called only manually by content reviewers to specify a path and a max line
# length.
# Similar as `test`, but called only manually by content reviewers to trigger extra checks.
review:
@read -p "Enter relative content path: " path; read -p "Enter max line length (default: 100): " line_length; \
if [ -z "$$path" ]; then echo "Error: Path cannot be empty"; exit 1; fi; \

View File

@@ -1,67 +1,38 @@
# Odoo documentation
## Build the documentation
## Build the documentation locally
### Requirements
- [Git](https://git-scm.com/install)
- [Python 3.10 to 3.14](https://www.python.org/downloads/).
- Git
- Python 3.6, 3.7, or 3.8
- Python dependencies listed in the file `requirements.txt`.
- Make
- Python dependencies from `requirements.txt` (see instructions below)
- A local copy of the [odoo/odoo](https://github.com/odoo/odoo) repository (optional)
- A local copy of the [odoo/upgrade-util](https://github.com/odoo/upgrade-util) repository
(optional)
- A local copy of the [odoo/odoo repository](https://github.com/odoo/odoo) (optional)
- A local copy of the [odoo/upgrade-util repository](https://github.com/odoo/upgrade-util) (optional)
### Quick start
### Instructions
1. Create and activate a virtual environment.
- On Linux and macOS: `python3 -m venv .venv && source .venv/bin/activate`
- On Windows (PowerShell): `py3 -m venv .venv; .\.venv\Scripts\Activate.ps1`
2. Install the Python dependencies: `pip install -r requirements.txt`
3. Build the documentation: `make html` (see more commands with `make help`)
4. Open `documentation/_build/html/index.html` in your web browser.
1. In a terminal, navigate to the root directory of the documentation and build it `make`.
Additional commands are available with `make help`.
2. Open the file `documentation/_build/html/index.html` in your web browser.
3. See [this guide](https://www.odoo.com/documentation/latest/contributing/documentation.html)
for more detailed instructions.
### Additional build options
- `make fast` to build the documentation with a shallow menu (faster).
- `make clean` to delete the build files.
- `make test` to run the guidelines tests.
- `make html CURRENT_LANG=fr` to build the documentation only in French.
- `make html CURRENT_LANG=fr LANGUAGES=en,fr,de` to build the documentation in French and enable the
language switcher, with the specified LANGUAGES as available languages. This command must be
invoked for each CURRENT_LANG you want to build.
- `make html VERSIONS=17.0,18.0,saas-18.4,19.0,master` to build the documentation in the **current
version** and enable the version switcher, with the specified VERSIONS as available versions. This
command must be invoked for each of the VERSIONS you want to build.
The list of available languages can be found in `conf.py`, in the `languages_names` variable.
When building the documentation for a specific language or version, the build files are created in
`documentation/_build/html/<language>/`, `documentation/_build/html/<version>/` or
`documentation/_build/html/<version>/<language>/`.
### Using local Odoo sources
If you have local checkouts of `odoo/odoo` and/or `odoo/upgrade-util`, place them either:
- as siblings of this repository (in the parent directory), or
- inside the `documentation` directory.
When present in one of these locations, the build will include Python docstrings from those
repositories if their version matches the documentation's version.
### Troubleshooting
- Verify your Python version: `python3 --version` (must be 3.103.14)
- Ensure your virtual environment is active and dependencies are installed.
- If you have made changes to the file structure, try `make clean` before building.
- If the language or version switchers redirect to a missing file, check that you have built the
documentation for all available languages and versions.
- The "Developer" documentation is only available in English.
Optional: place your local copy of the `odoo/odoo` and `odoo/upgrade-util` repositories in
the parent directory or in the root directory of the documentation to build the latter
with the documented Python docstrings.
## Contribute to the documentation
For contributions to the content of the documentation, see the
For contributions to the content of the documentation, please refer to the
[Introduction Guide](https://www.odoo.com/documentation/latest/contributing/documentation.html).
To report a content issue, request new content, or ask a question, use the
[issue tracker](https://github.com/odoo/documentation/issues).
To **report a content issue**, **request new content** or **ask a question**, use the
[repository's issue tracker](https://github.com/odoo/documentation/issues).
## Learn More
To learn more about Odoo, in addition to the documentation, have a look at
[the official eLearning](https://odoo.com/slides) and
[Scale-up, The Business Game](https://www.odoo.com/page/scale-up-business-game).

148
conf.py
View File

@@ -21,7 +21,7 @@ copyright = 'Odoo S.A.'
# `version` is the version info for the project being documented, acts as replacement for |version|,
# also used in various other places throughout the built documents.
# `release` is the full version, including a/b/rc tags. Acts as replacement for |release|.
# `release` is the full version, including alpha/beta/rc tags. Acts as replacement for |release|.
version = release = 'master'
# `current_branch` is the technical name of the current branch.
@@ -82,7 +82,6 @@ source_read_replace_vals = {
'CURRENT_MAJOR_VERSION': current_major_version,
'GITHUB_PATH': f'https://github.com/odoo/odoo/blob/{version}',
'GITHUB_ENT_PATH': f'https://github.com/odoo/enterprise/blob/{version}',
'GITHUB_TUTO_PATH': f'https://github.com/odoo/tutorials/blob/{current_major_branch}',
'OWL_PATH': f'https://github.com/odoo/owl/blob/master',
}
@@ -117,7 +116,7 @@ else:
odoo.addons.__path__.append(str(odoo_dir) + '/addons')
from odoo import release as odoo_release # Don't collide with Sphinx's 'release' config option
odoo_version = '.'.join(str(s) for s in odoo_release.version_info[:2]).replace('~', '-') # Change saas~XX.Y to saas-XX.Y
odoo_version = 'master' if odoo_release.ALPHA in odoo_release.version_info else odoo_version
odoo_version = 'master' if 'alpha' in odoo_release.version else odoo_version
if release != odoo_version:
_logger.warning(
"Found Odoo sources in %(directory)s but with version '%(odoo_version)s' incompatible "
@@ -212,9 +211,9 @@ extensions.append('sphinx.ext.graphviz' if shutil.which('dot') else 'graphviz_pl
todo_include_todos = False
intersphinx_mapping = {
'python': ('https://docs.python.org/3/', '../invs/python.inv'),
# apparently local inventories are relative to the source dir?
'werkzeug': ('https://werkzeug.palletsprojects.com/', '../invs/werkzeug.inv'),
'pillow': ('https://pillow.readthedocs.io/en/stable/', None),
'python': ('https://docs.python.org/3/', None),
'werkzeug': ('https://werkzeug.palletsprojects.com/en/2.3.x/', None),
}
github_user = 'odoo'
@@ -228,21 +227,20 @@ sphinx.transforms.i18n.docname_to_domain = (
sphinx.util.i18n.docname_to_domain
) = lambda docname, compact: docname.split('/')[1 if docname.startswith('applications/') else 0]
# The labels used in the version switcher to show the versions provided with the `versions` config
# option. If a provided version has no label, the version string is used as label.
# The version names that should be shown in the version switcher, if the config option `versions`
# is populated. If a version is passed to `versions` but is not listed here, it will not be shown.
versions_names = {
'master': "Master",
'19.0': "Odoo 19",
'saas-18.4': "Odoo 18.4",
'saas-18.3': "Odoo 18.3",
'saas-18.2': "Odoo 18.2",
'18.0': "Odoo 18",
'saas-17.4': "Odoo Online",
'saas-17.2': "Odoo Online",
'17.0': "Odoo 17",
'16.0': "Odoo 16",
'15.0': "Odoo 15",
}
# The labels used in the language switcher to show the languages provided with the `languages`
# config option. If a provided language code has no label, the upper-cased code is used as label.
# The language names that should be shown in the language switcher, if the config option `languages`
# is populated. If a language is passed to `languages` but is not listed here, it will not be shown.
languages_names = {
'de': 'DE',
'en': 'EN',
@@ -331,31 +329,29 @@ latex_documents = [
'terms_of_sale.tex', 'Odoo Terms of Sale', '', 'howto'),
('legal/terms/i18n/enterprise_tex_fr', 'odoo_enterprise_agreement_fr.tex',
"Contrat d'Abonnement Odoo Enterprise", '', 'howto'),
'Odoo Enterprise Subscription Agreement (FR)', '', 'howto'),
('legal/terms/i18n/partnership_tex_fr',
'odoo_partnership_agreement_fr.tex', 'Contrat de Partenariat Odoo', '', 'howto'),
'odoo_partnership_agreement_fr.tex', 'Odoo Partnership Agreement (FR)', '', 'howto'),
('legal/terms/i18n/terms_of_sale_fr', 'terms_of_sale_fr.tex',
'Conditions Générales de Vente Odoo', '', 'howto'),
('legal/terms/i18n/enterprise_tex_nl', 'odoo_enterprise_agreement_nl.tex',
'Odoo Enterprise Abonnementsovereenkomst', '', 'howto'),
'Odoo Enterprise Subscription Agreement (NL)', '', 'howto'),
('legal/terms/i18n/enterprise_tex_de', 'odoo_enterprise_agreement_de.tex',
'Odoo Enterprise Abonnementsvertrag', '', 'howto'),
'Odoo Enterprise Subscription Agreement (DE)', '', 'howto'),
('legal/terms/i18n/terms_of_sale_de', 'terms_of_sale_de.tex',
'Allgemeine Verkaufsbedingungen Odoo', '', 'howto'),
('legal/terms/i18n/enterprise_tex_es', 'odoo_enterprise_agreement_es.tex',
'Acuerdo de suscripción de Odoo Enterprise', '', 'howto'),
'Odoo Enterprise Subscription Agreement (ES)', '', 'howto'),
('legal/terms/i18n/partnership_tex_es',
'odoo_partnership_agreement_es.tex', 'Acuerdo de Colaboración de Odoo', '', 'howto'),
'odoo_partnership_agreement_es.tex', 'Odoo Partnership Agreement (ES)', '', 'howto'),
('legal/terms/i18n/terms_of_sale_es', 'terms_of_sale_es.tex',
'Términos Generales de Venta Odoo', '', 'howto'),
('legal/terms/i18n/enterprise_tex_pt_BR', 'odoo_enterprise_agreement_pt_BR.tex',
'Contrato de Assinatura do Odoo Enterprise', '', 'howto'),
('legal/terms/i18n/terms_of_sale_pt_BR', 'terms_of_sale_pt_BR.tex',
'Termos Gerais de Venda Odoo', '', 'howto'),
'Odoo Enterprise Subscription Agreement (PT)', '', 'howto'),
]
# List of languages that have legal translations (excluding EN). The keys must be in
@@ -386,18 +382,6 @@ def source_read_replace(app, docname, source):
result = result.replace(f"{{{key}}}", app.config.source_read_replace_vals[key])
source[0] = result
def upgrade_util_signature_rewrite(app, domain, objtype, contentnode):
# Same as add_module_names=False but **only** for odoo.upgrade.util functions or classes
signature = contentnode.parent[0]
if objtype == 'function' and signature.astext().startswith(('odoo.upgrade.util.', 'odoo.upgrade.testing.')):
# <odoo.upgrade.util.modules>, <modules_installed>, <(cr, *modules)>
# <odoo.upgrade.testing>, <change_version>, <(version_str)>
signature.pop(0)
if objtype == 'class' and signature.astext().startswith(('class odoo.upgrade.util.', 'class odoo.upgrade.testing.')):
# <class >, <odoo.upgrade.util.pg.>, <PGRegexp>
# <class >, <odoo.upgrade.testing.>, <UpgradeCase>
signature.pop(1)
def setup(app):
# Generate all alternate URLs for each document
app.add_config_value('project_root', None, 'env')
@@ -407,7 +391,6 @@ def setup(app):
app.add_config_value('is_remote_build', None, 'env') # Whether the build is remotely deployed
app.add_config_value('source_read_replace_vals', {}, 'env')
app.connect('source-read', source_read_replace)
app.connect('object-description-transform', upgrade_util_signature_rewrite)
# TODO uncomment after moving to >= v7.2.5 to also substitute placeholders in included files.
# See https://github.com/sphinx-doc/sphinx/commit/ff1831
# app.connect('include-read', source_read_replace)
@@ -447,7 +430,7 @@ def _generate_alternate_urls(app, pagename, templatename, context, doctree):
- The language switcher and related link tags
"""
def canonicalize():
def _canonicalize():
""" Add the canonical URL for the current document in the rendering context.
The canonical version is the last released version of the documentation.
@@ -459,93 +442,94 @@ def _generate_alternate_urls(app, pagename, templatename, context, doctree):
- /documentation/11.0/fr/website.html -> canonical = /documentation/14.0/fr/website.html
"""
# If the canonical version is not set, assume that the project has a single version
canonical_version_ = app.config.canonical_version or app.config.version
canonical_lang_ = 'en' # Always 'en'. Don't take the value of the config option.
context['canonical'] = build_url(version_=canonical_version_, lang_=canonical_lang_)
_canonical_version = app.config.canonical_version or app.config.version
_canonical_lang = 'en' # Always 'en'. Don't take the value of the config option.
context['canonical'] = _build_url(_version=_canonical_version, _lang=_canonical_lang)
def versionize():
def _versionize():
""" Add the pairs of (version, url) for the current document in the rendering context.
The entry 'version' is added by Sphinx in the rendering context.
"""
context['version_display_name'] = versions_names.get(version, version)
context['version_display_name'] = versions_names[version]
# If the list of versions is not set, assume the project has no alternate version.
provided_versions_ = app.config.versions and app.config.versions.split(',') or []
# If the list of versions is not set, assume the project has no alternate version
_provided_versions = app.config.versions and app.config.versions.split(',') or []
# Map alternate versions to their display names and URLs.
context['alternate_versions'] = []
for alternate_version_ in reversed(provided_versions_): # Reverse to show latest first.
if alternate_version_ != version:
display_name_ = versions_names.get(alternate_version_, alternate_version_)
context['alternate_versions'].append((display_name_, build_url(alternate_version_)))
for _alternate_version, _display_name in versions_names.items():
if _alternate_version in _provided_versions and _alternate_version != version:
context['alternate_versions'].append(
(_display_name, _build_url(_alternate_version))
)
def localize():
def _localize():
""" Add the pairs of (lang, code, url) for the current document in the rendering context.
E.g.: ('French', 'fr', 'https://.../fr_BE/...')
The entry 'language' is added by Sphinx in the rendering context.
"""
current_lang_ = app.config.language or 'en'
_current_lang = app.config.language or 'en'
# Replace the context value by its upper-cased value ("FR" instead of "fr")
context['language'] = languages_names.get(current_lang_, current_lang_.upper())
context['language_code'] = current_lang_
context['language'] = languages_names.get(_current_lang, _current_lang.upper())
context['language_code'] = _current_lang
# If the list of languages is not set, assume that the project has no alternate language
provided_languages_ = app.config.languages and app.config.languages.split(',') or []
_provided_languages = app.config.languages and app.config.languages.split(',') or []
# Map alternate languages to their display names and URLs.
context['alternate_languages'] = []
for alternate_lang_ in provided_languages_:
if alternate_lang_ != current_lang_:
display_name_ = languages_names.get(alternate_lang_, alternate_lang_.upper())
for _alternate_lang, _display_name in languages_names.items():
if _alternate_lang in _provided_languages and _alternate_lang != _current_lang:
context['alternate_languages'].append(
(
display_name_,
alternate_lang_.split('_')[0] if alternate_lang_ != 'en' else 'x-default',
build_url(lang_=alternate_lang_),
_display_name,
_alternate_lang.split('_')[0] if _alternate_lang != 'en' else 'x-default',
_build_url(_lang=_alternate_lang),
)
)
# Dynamic generation of localized legal doc links
context['legal_translations'] = legal_translations
def build_url(version_=None, lang_=None):
def _build_url(_version=None, _lang=None):
if app.config.is_remote_build:
# Project root like https://www.odoo.com/documentation
root_ = app.config.project_root
_root = app.config.project_root
else:
# Project root like .../documentation/_build/html/14.0/fr
root_ = re.sub(rf'(/{app.config.version})?(/{app.config.language})?$', '', app.outdir)
_root = re.sub(rf'(/{app.config.version})?(/{app.config.language})?$', '', app.outdir)
# If the canonical version is not set, assume that the project has a single version
canonical_version_ = app.config.canonical_version or app.config.version
version_ = version_ or app.config.version
lang_ = lang_ or app.config.language or 'en'
canonical_page_ = f'{pagename}.html'
_canonical_version = app.config.canonical_version or app.config.version
_version = _version or app.config.version
_lang = _lang or app.config.language or 'en'
_canonical_page = f'{pagename}.html'
# legal translations have different URLs schemes as they are not managed on transifex
# e.g. FR translation of /terms/enterprise => /fr/terms/enterprise_fr
if pagename.startswith('legal/terms/'):
if lang_ in legal_translations and not pagename.endswith(f"_{lang_}"):
if _lang in legal_translations and not pagename.endswith(f"_{_lang}"):
# remove language code for current translation, set target one
page_ = re.sub("_[a-z]{2}$", "", pagename)
if 'terms/i18n' not in page_:
page_ = page_.replace("/terms/", "/terms/i18n/")
canonical_page_ = f'{page_}_{lang_}.html'
elif lang_ == 'en' and pagename.endswith(tuple(f"_{l}" for l in legal_translations)):
_page = re.sub("_[a-z]{2}$", "", pagename)
if 'terms/i18n' not in _page:
_page = _page.replace("/terms/", "/terms/i18n/")
_canonical_page = f'{_page}_{_lang}.html'
elif _lang == 'en' and pagename.endswith(tuple(f"_{l}" for l in legal_translations)):
# remove language code for current translation, link to original EN one
page_ = re.sub("_[a-z]{2}$", "", pagename)
canonical_page_ = f'{page_.replace("/i18n/", "/")}.html'
_page = re.sub("_[a-z]{2}$", "", pagename)
_canonical_page = f'{_page.replace("/i18n/", "/")}.html'
if app.config.is_remote_build:
canonical_page_ = canonical_page_.replace('index.html', '')
_canonical_page = _canonical_page.replace('index.html', '')
return f'{root_}' \
f'{f"/{version_}" if app.config.versions else ""}' \
f'{f"/{lang_}" if lang_ != "en" else ""}' \
f'/{canonical_page_}'
return f'{_root}' \
f'{f"/{_version}" if app.config.versions else ""}' \
f'{f"/{_lang}" if _lang != "en" else ""}' \
f'/{_canonical_page}'
canonicalize()
versionize()
localize()
_canonicalize()
_versionize()
_localize()

View File

@@ -23,7 +23,7 @@ To Odoo Online
#. Create a :ref:`duplicate of the database <on-premise/duplicate>`.
#. In this duplicate, uninstall all **non-standard apps**.
#. Use the database manager to grab a *dump with filestore*.
#. `Create a support ticket <https://www.odoo.com/help-form>`_ including the following:
#. `Submit a support ticket <https://www.odoo.com/help>`_ including the following:
- your **subscription number**,
- the **URL** you want to use for the database (e.g., `company.odoo.com`), and
@@ -33,14 +33,14 @@ To Odoo Online
issues during the process, Odoo might contact you.
.. note::
If you have time constraints, `create a support ticket <https://www.odoo.com/help-form>`_ as soon
as possible to schedule the transfer.
If you have time constraints, `submit a support ticket <https://www.odoo.com/help>`_ as soon as
possible to schedule the transfer.
To Odoo.sh
----------
Follow the instructions found in :ref:`the Import a database section <odoo-sh/create/import>` of the
Odoo.sh *Create a project* documentation.
Follow the instructions found in :ref:`the Import your database section
<odoo_sh_import_your_database>` of the Odoo.sh *Create your project* documentation.
Transferring an Odoo Online database
====================================
@@ -56,20 +56,19 @@ Transferring an Odoo Online database
17.0.
.. tip::
Click the :icon:`fa-gear` (:guilabel:`gear`) button next to the database name on the `Odoo
Online database manager <https://www.odoo.com/my/databases/>`_ to display its version number.
Click the gear icon (:guilabel:`⚙`) next to the database name on the `Odoo Online database
manager <https://www.odoo.com/my/databases/>`_ to display its version number.
.. warning::
If there is an active Odoo subscription linked to the database being migrated, reach out to
the Customer Service Manager or `contact Odoo support <https://www.odoo.com/help>`_ to
the Customer Service Manager or `submit a support ticket <https://www.odoo.com/help>`_ to
complete the subscription transfer.
To on-premise
-------------
#. Download a database backup by signing in to `the Odoo Online database manager
<https://www.odoo.com/my/databases/>`_, clicking the :icon:`fa-gear` (:guilabel:`gear`) button
next to the database name, then selecting :icon:`fa-cloud-download` :guilabel:`Download`. If the
#. Sign in to `the Odoo Online database manager <https://www.odoo.com/my/databases/>`_ and click the
gear icon (:guilabel:`⚙`) next to the database name to :guilabel:`Download` a backup. If the
download fails due to the file being too large, `contact Odoo support
<https://www.odoo.com/help>`_.
#. Restore the database from the database manager on your local server using the backup.
@@ -77,13 +76,12 @@ To on-premise
To Odoo.sh
----------
#. Download a database backup by signing in to `the Odoo Online database manager
<https://www.odoo.com/my/databases/>`_, clicking the :icon:`fa-gear` (:guilabel:`gear`) button
next to the database name, then selecting :icon:`fa-cloud-download` :guilabel:`Download`. If the
#. Sign in to `the Odoo Online database manager <https://www.odoo.com/my/databases/>`_ and click the
gear icon (:guilabel:`⚙`) next to the database name to :guilabel:`Download` a backup. If the
download fails due to the file being too large, `contact Odoo support
<https://www.odoo.com/help>`_.
#. Follow the instructions found in :ref:`the Import a database section <odoo-sh/create/import>` of
the Odoo.sh *Create a project* documentation.
#. Follow the instructions found in :ref:`the Import your database section
<odoo_sh_import_your_database>` of the Odoo.sh *Create your project* documentation.
Transferring an Odoo.sh database
================================
@@ -95,7 +93,7 @@ To Odoo Online
Odoo Online is *not* compatible with **non-standard apps**.
#. Uninstall all **non-standard apps** in a staging build before doing it in the production build.
#. `Create a support ticket <https://www.odoo.com/help-form>`_ including the following:
#. `Create a support ticket <https://www.odoo.com/help>`_ including the following:
- your **subscription number**,
- the **URL** you want to use for the database (e.g., `company.odoo.com`),
@@ -108,8 +106,8 @@ To Odoo Online
issues during the process, Odoo might contact you.
.. note::
- If you have time constraints, `create a support ticket <https://www.odoo.com/help-form>`_ as
soon as possible to schedule the transfer.
- If you have time constraints, `submit a support ticket <https://www.odoo.com/help>`_ as soon as
possible to schedule the transfer.
- Select the **region** closest to most of your users to reduce latency.
- Future **administrator(s)** must have an Odoo.com account.
- The **date and time** you want the database to be up and running are helpful to organize the
@@ -119,5 +117,5 @@ To Odoo Online
To on-premise
-------------
#. Download a :ref:`backup of your Odoo.sh production database <odoo-sh/branches/tabs/backups>`.
#. Download a :ref:`backup of your Odoo.sh production database <odoo_sh_branches_backups>`.
#. Restore the database from the database manager on your local server using the backup.

View File

@@ -62,6 +62,6 @@ The Odoo mobile apps are available for download on the `Google Play Store
<https://apps.apple.com/app/odoo/id1272543640>`_.
.. important::
The iOS app might not be updated and might be deprecated at some point in the future.
The iOS app cannot be updated and will be deprecated at some point in the future.
While the store apps support multi-accounts, they are not compatible with SSO authentication.
While the store apps support multi-accounts, they are not compatible with SS0 authentication.

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -1,57 +1,80 @@
================
Odoo.com account
================
=================
Odoo.com accounts
=================
Open the `Connection & Security page <https://www.odoo.com/my/security>`_ on your Odoo.com account
portal to:
This documentation is dedicated to edits made to an Odoo.com account. The following processes
describe how to delete an Odoo.com account, and how to change the password on an Odoo.com account.
- Change your :guilabel:`Password`.
Delete Odoo.com account
=======================
.. note::
- When you create a database, a user linked to your Odoo.com account is generated on the
database. Changing your Odoo.com account's password will also modify the password used to
sign in with that user to the database.
- You can set a database-specific password for that user by going to the :ref:`database's
settings <users/change-password>`. However, you will still be able to sign in with your
Odoo.com account's password.
To delete an Odoo.com account, start by clicking the profile icon in the upper-right corner
(represented by the username and icon) to reveal a drop-down menu. From the drop-down menu, select
:guilabel:`My Odoo.com account`, which reveals the user portal.
- Enable :guilabel:`Two-factor authentication` using an authenticator app.
From the user portal, the delete option can be accessed by going to :menuselection:`My Account -->
Edit Security Settings --> Delete Account`. It can also be accessed by going to
`https://www.odoo.com/my/home <https://www.odoo.com/my/home>`_.
.. seealso::
Refer to the :doc:`Two-factor authentication documentation <../applications/general/users/2fa>`
for more information. The process to enable it for a database user and for your Odoo.com
account is similar.
.. danger::
Deleting an Odoo account is irreversible. Be careful performing this action, as the Odoo.com
account is **not** retrievable once deleted.
- :guilabel:`Log out from all devices` signed in to your Odoo.com account, except for the current
session.
Upon clicking the :guilabel:`Delete Account` button, a pop-up window appears, requesting
confirmation for the account deletion.
.. tip::
To log out from the current session, click the :icon:`fa-user-circle-o` (:guilabel:`user`)
icon in the top right and select :icon:`fa-sign-out` :guilabel:`Logout`.
.. image:: odoo_account/delete-account.png
:align: center
:alt: Clicking on the Delete Account button will populate a window verifying the change.
- Enable :ref:`developer mode <developer-mode>` to add a :ref:`developer API key
<api/external_api/keys>`.
To confirm the deletion, enter the :guilabel:`Password` and the :guilabel:`Login` for the account
being deleted. Then, click the :guilabel:`Delete Account` button to confirm the deletion.
- :guilabel:`Delete` your account.
.. _odoocom/change_password:
.. danger::
Deleting your Odoo.com account is **irreversible**. Once deleted, your account **cannot be
retrieved**.
Odoo.com account password change
================================
Open the `Account Information page <https://www.odoo.com/my/account>`_ to edit your account details,
including your **email address**.
To change an Odoo.com account password, first login into the Odoo.com user account from the Odoo.com
login page. After logging-in, go to the upper-right corner of the screen, and click the :guilabel:`▼
(down arrow)` icon next to the profile icon. Then, select :guilabel:`My Account`, and a portal
dashboard appears.
To change the Odoo.com password, click on the :guilabel:`Edit Security Settings` link, below the
:menuselection:`Account Security` section. Next, make the necessary changes by typing in the current
:guilabel:`Password`, :guilabel:`New Password`, and verify the new password. Lastly, click on
:guilabel:`Change Password` to complete the password change.
.. note::
- When you create a database, a user linked to your Odoo.com account is generated on the
database. Changing your Odoo.com account's email address does not modify the email address used
to sign in with that user.
- You can set a database-specific email address for that user by clicking your avatar in the
top-right corner of the database and selecting :guilabel:`My Preferences`. You will still need
to sign in to the database using the email address used at the time of the database creation.
- To change the email address used to sign in to a database, `contact Odoo Support
<https://www.odoo.com/help>`_.
If a customer would like to change the login, contact Odoo support `here
<https://www.odoo.com/help>`_.
.. tip::
In addition to the database you create, all databases you are :ref:`invited to join
<users/add-individual>` with your Odoo.com account's email address will be displayed under the
`database manager <https://www.odoo.com/my/databases>`_.
.. note::
Passwords for Odoo.com users and portal users remain separate, even if the same email address is
used.
Add two-factor authentication
=============================
To add two-factor authentication, login into the Odoo.com user account from the Odoo.com login page.
After logging-in, go to the upper-right corner of the screen, and click the :guilabel:`▼ (down
arrow)` icon next to the :guilabel:`profile icon`. Then, select :guilabel:`My Account`, and a portal
dashboard appears.
If the user would like to turn on two-factor authentication (2FA) for Odoo.com access, click on the
:guilabel:`Edit Security Settings` link below the :menuselection:`Account Security` section.
Click on :guilabel:`Enable two-factor authentication` to turn on :abbr:`2FA (two-factor
authentication)`. Then, confirm the current password in the :guilabel:`Password` field. Next, click
on :guilabel:`Confirm Password`. Following that, activate :abbr:`2FA (two-factor authentication)` in
a :abbr:`2FA (two-factor authentication)` app (Google Authenticator, Authy, etc.), by scanning the
:guilabel:`QR code` or entering a :guilabel:`Verification Code`.
Finally, click on :guilabel:`Enable two-factor authentication` to complete the setup.
.. note::
Under :guilabel:`My Account` Odoo.com users can also access the following:
- :guilabel:`My Partner dashboard`
- :guilabel:`My In-App Services`
- :guilabel:`My Apps Dashboard`

View File

@@ -2,179 +2,150 @@
Odoo Online
===========
`Odoo Online <https://www.odoo.com/trial>`_ offers private databases hosted and managed by Odoo.
Odoo Online databases can be accessed using any web browser and do not require a local installation.
They can be used for long-term production or to thoroughly test Odoo, including customizations that
do not require custom code.
.. tip::
To quickly try out Odoo, shared `demo databases <https://demo.odoo.com>`_ are available for
testing. No registration is required; however, each database is only available for a few hours.
`Odoo Online <https://www.odoo.com/trial>`_ provides private databases which are fully managed and
hosted by Odoo. It can be used for long-term production or to test Odoo thoroughly, including
customizations that don't require code.
.. note::
Odoo Online is incompatible with custom modules or modules from the `Odoo Apps Store
<https://apps.odoo.com/apps>`_.
Odoo Online is incompatible with custom modules or the Odoo App Store.
.. _odoo-online/database-manager:
Odoo Online databases are accessed using any web browser and do not require a local installation.
Database manager
================
To quickly try out Odoo, shared `demo <https://demo.odoo.com>`_ instances are available. No
registration is required, but each instance only lives for a few hours.
To manage an Odoo Online database, open to the `database manager
<https://www.odoo.com/my/databases>`_ and sign in as the database administrator.
Database management
===================
.. _odoo-online/domain-names:
To manage a database, go to the `database manager <https://www.odoo.com/my/databases>`_ and sign in
as the database administrator.
Domain names
------------
All the main database management options are available by clicking the database name, except the
upgrade option, which can be accessed by clicking the **arrow in a circle** icon next to the
database name. It is only displayed if an upgrade is available.
:doc:`Configure a custom domain name <../applications/websites/website/configuration/domain_names>`
by selecting a database and clicking :icon:`fa-globe` :guilabel:`Domain Names`.
.. image:: odoo_online/database-manager.png
:alt: Accessing the database management options
.. tip::
:ref:`Register a domain name for free <domain-name/register>`.
- :ref:`odoo_online/upgrade`
- :ref:`odoo_online/duplicate`
- :ref:`odoo_online/rename`
- :ref:`odoo_online/download`
- :ref:`odoo_online/domains`
- :ref:`odoo_online/tags`
- :ref:`odoo_online/delete`
- :ref:`odoo_online/contact-support`
- :ref:`odoo_online/users`
.. _odoo-online/tags:
Tags
----
Add tags to identify and sort databases by selecting a database and clicking :icon:`fa-tags`
:guilabel:`Tags`. In the dialog box, enter a tag, click the :icon:`fa-plus-circle`
(:guilabel:`plus`) button, and click :guilabel:`Save`.
.. tip::
Search for tags in the :icon:`fa-search` search bar at the top right.
.. _odoo-online/hide:
Hide
----
Permanently hide the database from the database manager by selecting it and clicking
:icon:`fa-eye-slash` :guilabel:`Hide`. In the dialog box, click :guilabel:`Yes, I don't need it
anymore`.
.. Note::
It is possible to access a hidden database through its URL.
.. _odoo-online/manage:
Manage
------
Access all other database management options by selecting it and clicking :icon:`fa-gears`
:guilabel:`Manage`.
Switch plans
~~~~~~~~~~~~
Switch `pricing plans <https://www.odoo.com/pricing>`_ by clicking :guilabel:`Switch` under the
desired plan.
.. _odoo-online/upgrade:
.. _odoo_online/upgrade:
Upgrade
~~~~~~~
=======
Launch a :ref:`database upgrade <upgrade-request-test>` by clicking :guilabel:`Upgrade`.
Trigger a database upgrade.
.. note::
This option is only displayed when an upgrade is available.
.. seealso::
For more information about the upgrade process, check out the :ref:`Odoo Online upgrade
documentation <upgrade-request-test>`.
.. _odoo-online/rename:
Rename
~~~~~~
Rename and change the URL of a database by clicking :guilabel:`Rename`. In the dialog box, enter a
:guilabel:`New name` and click :guilabel:`Rename`.
.. _odoo-online/duplicate:
.. _odoo_online/duplicate:
Duplicate
~~~~~~~~~
=========
Create a copy of the database by clicking :guilabel:`Duplicate`. In the dialog box, enter a
:guilabel:`New name` and click :guilabel:`Duplicate`.
Create an exact copy of the database, which can be used to perform testing without compromising
daily operations.
.. important::
- By default, the :guilabel:`For testing purposes` option is enabled. It disables all external
actions (emails, payments, delivery orders, etc.) on the duplicated database.
- Duplicates expire after 15 days.
- A maximum of five duplicates can be created per database. Under extraordinary circumstances,
contact `Odoo Support <https://www.odoo.com/help>`_ to extend the limit.
- By checking :guilabel:`For testing purposes`, all external actions (emails, payments, delivery
orders, etc.) are disabled by default on the duplicated database.
- Duplicated databases expire automatically after 15 days.
- A maximum of five duplicates can be made per database. Under extraordinary circumstances,
contact `support <https://www.odoo.com/help>`_ to raise the limit.
.. _odoo-online/download:
.. _odoo_online/rename:
Download a backup
~~~~~~~~~~~~~~~~~
Rename
======
Download a ZIP file containing a database backup by clicking :guilabel:`Download Backup`.
Rename the database and its URL.
.. _odoo_online/download:
Download
========
Download a ZIP file containing a backup of the database.
.. note::
- Databases are backed up daily as per the `Odoo Cloud Hosting SLA
<https://www.odoo.com/cloud-sla>`_.
- If the :guilabel:`Download Backup` option is disabled, it means the database is too large to be
downloaded using the database manager. Contact `Odoo Support <https://www.odoo.com/help>`_ to
request an alternative download solution.
Databases are backed up daily as per the `Odoo Cloud Hosting SLA
<https://www.odoo.com/cloud-sla>`_.
.. _odoo-online/activity-logs:
.. _odoo_online/domains:
View admin activity logs
~~~~~~~~~~~~~~~~~~~~~~~~
View the logs of all actions taken by Odoo employees or the database administrator on the database
by clicking :guilabel:`View Admin Activity Logs`.
.. note::
Actions taken by Odoo employees are typically the result of requests submitted to Odoo support,
done within the context of a quick start project, or necessary to maintain the database.
.. _odoo-online/transfer-ownership:
Transfer ownership
~~~~~~~~~~~~~~~~~~
Create a support ticket to request a database ownership transfer by clicking :guilabel:`Transfer
Ownership`.
.. _odoo-online/delete:
Delete
~~~~~~
Delete the database and close its related subscription by clicking :guilabel:`Delete`. In the dialog
box, click :guilabel:`Delete`.
.. danger::
All the database's data will be deleted instaneously for all users and **cannot be restored**. It
is recommended to :ref:`download a backup <odoo-online/download>` before deleting a database.
.. note::
After deletion, the database's name becomes available to anyone.
.. _odoo-online/web-services:
Web services
Domain names
============
To retrieve a list of all databases displayed under the `database manager
<https://www.odoo.com/my/databases>`_ programmatically, call the `list` method of the
`odoo.database` model via an :doc:`external JSON-2 API <../developer/reference/external_api>` call.
Use a custom :doc:`domain name </applications/websites/website/configuration/domain_names>` to
access the database via another URL.
.. example::
.. code:: python
.. tip::
You can :ref:`register a domain name for free <domain-name/register>`.
import requests
.. _odoo_online/tags:
APIKEY = "your_apikey"
Tags
====
requests.post(
"https://www.odoo.com/json/2/odoo.database/list",
headers={
"Authorization": f"bearer {APIKEY}",
"X-Odoo-Database": "openerp",
}
json={},
)
Add tags to easily identify and sort your databases.
.. tip::
You can search for tags in the search bar.
.. _odoo_online/delete:
Delete
======
Delete a database instantly.
.. danger::
Deleting a database means that all data is permanently lost. The deletion is instant and applies
to all users. It is recommended to create a backup of the database before deleting it.
Carefully read the warning message and only proceed if the implications of deleting a database are
fully understood.
.. image:: odoo_online/delete.png
:alt: The warning message displayed before deleting a database
.. note::
- Only an administrator can delete a database.
- The database name is immediately made available to anyone.
- Deleting a database if it has expired or is linked to a subscription is impossible. In that
case, contact `Odoo Support <https://www.odoo.com/help>`_.
.. _odoo_online/contact-support:
Contact us
==========
Access the `Odoo.com support page <https://www.odoo.com/help>`_ with the database's details already
pre-filled.
.. _odoo_online/users:
Invite / remove users
=====================
To invite users, fill out the new user's email address and click :guilabel:`Invite`. To add multiple
users, click :guilabel:`Add more users`.
.. image:: odoo_online/invite-users.png
:alt: Inviting a user on a database
To remove users, select them and click :guilabel:`Remove`.
.. seealso::
- :doc:`/applications/general/users`
- :doc:`odoo_accounts`

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@@ -1,16 +1,12 @@
:show-content:
:show-toc:
:nosearch:
=======
Odoo.sh
=======
Odoo.sh is the official cloud platform for hosting and managing Odoo applications. It offers a
range of features such as web shell, module dependencies, continuous integration, and SSH access.
.. toctree::
:titlesonly:
odoo_sh/getting_started
odoo_sh/first_module
odoo_sh/advanced
odoo_sh/overview
odoo_sh/getting_started
odoo_sh/advanced

View File

@@ -147,7 +147,7 @@ with a browser, but you can for instance:
.. code-block:: bash
$ odoo-bin -i sale --stop-after-init
$ odoo-bin -i sale --without-demo=all --stop-after-init
* update a module,
@@ -163,6 +163,7 @@ with a browser, but you can for instance:
In the above commands, the argument:
* ``--without-demo=all`` prevents demo data to be loaded for all modules
* ``--stop-after-init`` will immediately shutdown the server instance after it completed the operations you asked.
More options are available and detailed in the

View File

@@ -1,51 +1,8 @@
:show-content:
:nosearch:
===============
Getting started
===============
Main components
---------------
When working with Odoo.sh, it is important to understand the main components involved. While they
are all interconnected, each one plays a distinct role in the development and deployment of Odoo
applications:
- **GitHub repository**: a version-controlled space where the Odoo applications' source code is
stored. It tracks every change, supports collaboration, and can be either public or private.
.. image:: getting_started/github-repository.png
:alt: Example of a GitHub repository
- **Odoo.sh project**: a Platform as a Service (PaaS) that integrates with GitHub and enables
streamlined development, testing, and deployment of Odoo applications. It includes tools such as
automated backups, staging environments, and continuous integration pipelines.
.. image:: getting_started/odoo-sh-project.png
:alt: Example of an Odoo.sh project
- **Odoo database**: a database stores all the operational data used and generated by Odoo
applications, such as business records, configurations, and user data.
.. image:: getting_started/odoo-database.png
:alt: Example of an Odoo database
Together, they form a cohesive pipeline from code development to a live business use.
User types
----------
Odoo.sh involves different types of users, each with a specific role in the project lifecycle:
- GitHub users: developers with access to the GitHub repository linked to the Odoo.sh project.
Access to the repository does not automatically make someone a collaborator on the Odoo.sh
project.
- Odoo.sh collaborators: individuals managing the Odoo.sh project. Each collaborator must be
linked to a GitHub user. However, collaborators are not the same as database users.
- Database users: end-users of the deployed Odoo database. They interact with the live system but
are not involved in development or project management.
===========
Get started
===========
.. toctree::
:titlesonly:
@@ -56,3 +13,4 @@ Odoo.sh involves different types of users, each with a specific role in the proj
getting_started/status
getting_started/settings
getting_started/online-editor
getting_started/first_module

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 727 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 759 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 403 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 378 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 330 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

View File

@@ -1,137 +1,124 @@
.. _odoosh-gettingstarted-builds:
======
Builds
======
In Odoo.sh, a build is a database loaded by an Odoo server (`odoo/odoo
<https://github.com/odoo/odoo>`_ and `odoo/enterprise <https://github.com/odoo/enterprise>`_)
running on a specific revision of your project repository in a containerized environment. Its
purpose is to test the proper behavior of the server, the database, and the features associated with
that revision.
.. _odoo-sh/builds/overview:
Overview
========
.. image:: builds/builds-overview.png
:alt: Overiew of the builds
In Odoo.sh, a build is considered as a database loaded by an Odoo server
(`odoo/odoo <https://github.com/odoo/odoo>`_ & `odoo/enterprise
<https://github.com/odoo/enterprise>`_) running on a specific revision of your project repository in
a containerized environment. Its purpose is to test the well-behavior of the server, the database
and the features with this revision.
In the :guilabel:`Builds` overview, a row represents a branch, and a cell within that row represents
a build of that branch.
.. image:: builds/interface-builds.png
:align: center
Most builds are created after pushes to your GitHub repository branches. They can also be created
through other operations, such as importing a database on Odoo.sh or requesting a rebuild for a
branch in your project.
In this view, a row represents a branch, and a cell of a row represents a build of this branch.
Builds can have three possible statuses:
Most of the time, builds are created following pushes on your Github repository branches.
They can be created as well when you do other operations,
such as importing a database on Odoo.sh or asking a rebuild for a branch in your project.
- A build is considered **successful** if no errors or warnings occur during its creation.
Successful builds are highlighted in **green**.
- A build is considered **almost successful** if warnings occur, but there are no errors. Almost
successful builds are highlighted in **yellow**.
- A build is considered **failed** if errors occur during its creation. Failed builds are
highlighted in **red**.
A build is considered successful if no errors or warnings come up during its creation.
A successful build is highlighted in green.
.. note::
Builds do not always create a database from scratch. For instance, when pushing a change on the
production branch, the created build starts the server with your new revision and tries to load
the current production database on it.
A build is considered failed if errors come up during its creation.
A failed build is highlighted in red.
.. _odoo-sh/builds/stages:
If warnings come up during the creation, but there are no errors, the build is considered almost
successful. It is highlighted in yellow to notify the developer warnings were raised.
Builds do not always create a database from scratch. For instance, when pushing a change on the
production branch, the build created just starts the server with your new revision and tries to load
the current production database on it. If no errors come up, the build is considered successful, and
otherwise failed.
Stages
======
.. _odoo-sh/builds/stages/production:
Production
----------
The first build of a production branch creates a database from scratch. If this build is successful,
this database will become the production database of your project.
The first build of a production branch creates a database from scratch.
If this build is successful, this database is considered as the production database of your project.
From then on, pushes to the production branch will create new builds that attempt to load the
database using a server running the new revision.
From then, pushes on the production branch will create new builds that attempt to load the database
using a server running with the new revision.
If the build is successful or almost successful, the production database will run with this build
and its associated revision.
If the build is successful, or has warnings but no errors, the production database will now run with
this build, along with the revision associated to this build.
If the build fails to load or update the database, the previous successful build is reused to load
the database. In that case, the database continues to run using the previous successful revision.
If the build fails to load or update the database, then the previous successful build is re-used to
load the database, and therefore the database will run using a server running with the previous
successful revision.
.. note::
The build used to run the production database is always the first in the builds list. If a build
fails, it is placed after the build currently running the production database.
.. _odoo-sh/builds/stages/staging:
The build used to run the production database is always the first of the builds list. If a build
fails, it is put after the build currently running the production database.
Staging
-------
Staging builds duplicate the production database and attempt to load this copy using the revisions
of the staging branches.
Staging builds duplicate the production database,
and try to load this duplicate with the revisions of the staging branches.
Each time you push a new revision to a staging branch, the resulting build uses a fresh copy of the
production database. Databases are not reused between builds of the same branch. This ensures that:
Each time you push a new revision on a staging branch, the build created uses a new copy of the
production database. The databases are not re-used between builds of the same branch. This ensures:
- Staging builds use databases that closely match the current production state, so your tests are
not performed on outdated data.
- You can freely experiment within a staging database. When you want to start over with a new copy
of the production database, you can request a rebuild.
* staging builds use databases that are close to what the production looks like, so you do not make
your tests with outdated data,
However, this also means that if you make configuration changes in a staging database and do not
apply them in production, those changes will not be present in the next build of the same staging
branch.
* you can play around as much as you want in the same staging database, and you can then ask for a
rebuild when you want to restart with a new copy of the production.
.. _odoo-sh/builds/stages/development:
Nevertheless, this means that if you make configuration changes in staging databases and do not
apply them in the production, they will not be passed on the next build of the same staging branch.
Development
-----------
Development builds create new databases, load the demo data, and run the unit tests.
Development builds create new databases, load the demo data and run the unit tests.
A build will be considered failed if tests fail during installation, as they are designed to raise
errors when something is wrong.
A build will be considered failed and highlighted in red if tests fail during the installation,
as they are meant to raise errors if something wrong occurs.
If all tests pass and no errors occur, the build is considered successful.
If all tests pass, and there is no error, the build will be considered successful.
.. note::
Depending on the list of modules to install and test, a development build can take up to one hour
to be ready. This is due to the large number of tests included in the default Odoo module suite.
.. _odoo-sh/builds/stages/features:
According to the list of modules to install and test, a development build can take up to 1 hour to
be ready. This is due to the large number of tests set in the default Odoo modules suite.
Features
========
The production branch always appears first. Other branches are ordered by the time of their last
created build. The stage highlighted in purple corresponds to the stage selected in the
:guilabel:`Branches` menu.
The production branch will always appear first, and then the other branches are ordered by last
build created. You can filter out the branches.
.. tip::
You can filter branches using the search bar.
.. image:: builds/interface-builds-branches.png
:align: center
.. image:: builds/branches-menu.png
:alt: The branches menu
For each branch, you can access the last build's database using the *Connect* link and jump to the
branch code using the *Github* link. For other branches than the production, you can create a new
build which will use the latest revision of the branch using the link *rebuild*. This last link is
not available when there is already a build in progress for the branch.
For each branch, you can:
.. image:: builds/interface-builds-build.png
:align: center
- Access the latest build's database by clicking :guilabel:`Connect`.
- Jump to the branch's code by clicking :guilabel:`Github`.
- Create a new build by clicking :guilabel:`Rebuild`. It uses the latest revision of the branch (it
is not available if a build is already in progress for that branch).
For each build, you can access the revision changes using the button with the Github icon. You can
access the build's database as the administrator using the *Connect* button. Also, you can access
the database with another user using the *Connect as* button, in the dropdown menu of the *Connect*
button.
For each build, you can:
.. _odoosh-gettingstarted-builds-download-dump:
- View the revision changes by clicking the :icon:`fa-github` (:guilabel:`GitHub`) icon.
- Access the build's database as the administrator by clicking :guilabel:`Connect` or as another
user by clicking the :icon:`fa-caret-down` (:guilabel:`More Actions`) button next to
:guilabel:`Connect` and selecting :guilabel:`Connect as`.
- Access the same tools as in the branches view by clicking the :icon:`fa-caret-down`
(:guilabel:`More Actions`) button next to :guilabel:`Connect` and selecting :guilabel:`Logs`,
:guilabel:`Web Shell`, :guilabel:`Editor`, :guilabel:`Outgoing e-mails` (for the staging and
development stages), :guilabel:`Monitoring`, and :guilabel:`Download DB dump` (for the production
and staging stages).
.. image:: builds/interface-builds-build-dropdown.png
:align: center
.. image:: builds/builds-options.png
:alt: A build's options
.. _odoosh-gettingstarted-builds-dropdown-menu:
In the dropdown menu of the build, you can access the same features than in :ref:`the branches view
<odoosh-gettingstarted-branches-tabs>`: *Logs*, *Web Shell*, *Editor*, *Outgoing e-mails*. You also
have the possibility to *Download a dump* of the build's database.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -1,192 +1,205 @@
================
Create a project
================
Deploy a platform
.. _odoosh-gettingstarted-create:
===================
Create your project
===================
Deploy your platform
====================
Go to `Odoo.sh <https://www.odoo.sh/>`_ and hit the *Deploy your platform* button.
.. image:: create/deploy.png
:align: center
Sign in with Github
===================
Sign in with your Github account. If you do not have an account yet, hit the *Create an account*
link.
.. image:: create/github-signin.png
:align: center
Authorize Odoo.sh
=================
#. Visit `Odoo.sh <https://www.odoo.sh>`_ and click :guilabel:`Deploy your platform`.
Grant Odoo.sh the required accesses to your account by clicking the *Authorize* button.
.. image:: create/deploy-button.png
:alt: The Deploy your platform button on Odoo.sh
.. image:: create/github-authorize.png
:align: center
#. Sign in with a `GitHub <https://github.com>`_ account.
Odoo.sh basically needs:
.. image:: create/github-sign-in.png
:alt: Signing in to GitHub
* to know your Github login and email,
* to create a new repository in case you decide to start from scratch,
* to read your existing repositories, including the ones of your organizations, in case you want to
start from an existing repository,
* to create a webhook to be notified each time you push changes,
* to commit changes to make your deployment easier, merging branches or adding new `submodules
<https://git-scm.com/book/en/v2/Git-Tools-Submodules>`_ for example.
#. Authorize Odoo.sh by clicking :guilabel:`Authorize odoo` twice.
Submit your project
===================
.. image:: create/github-authorize.png
:alt: Granting Odoo.sh permissions to perform actions and access data on GitHub
Choose if you want to start from scratch by creating a new repository, or if you want to use an
existing repository.
.. image:: create/github-authorize.png
:alt: Granting Odoo.sh additional permissions to perform actions and access data on GitHub
Then, choose a name or select the repository you want to use.
.. note::
Odoo.sh requests GitHub to:
Choose the Odoo version you want to use. If you plan to import an existing database or an existing
set of applications, you might need to choose the according version. If you start from scratch, use
the latest version.
- Access your GitHub login and email.
- Create a new repository, in case you start from scratch.
- Access existing repositories, including organization ones, in case you start from an
existing repository.
- Create a webhook to notify you each time changes are pushed.
- Commit changes for easier deployment.
Enter your *subscription code*. This is also called *subscription referral*, *contract number* or
*activation code*.
#. Fill in the :guilabel:`Deploy your platform` form and click :guilabel:`Deploy`:
It should be the code of your Enterprise subscription that includes Odoo.sh.
- :guilabel:`Github repository`: to create a new repository, choose :guilabel:`New repository`
and enter a name; to use an existing one, choose :guilabel:`Existing repository` and select it.
- :guilabel:`Odoo Version`: select the major version of Odoo you want to use.
Partners can use their partnership codes to start a trial. Should their clients start a project,
they ought to get an Enterprise subscription including Odoo.sh and use its subscription code. The
partner will get 50% of the amount back as commission. Contact your sales representative or account
manager in order to get it.
.. tip::
- Use the latest major version of Odoo version when creating a new repository. If you are
planning to import an existing database or applications, it might be required that their
versions match.
- If you are starting on Odoo Online and plan to migrate to Odoo.sh later, create your
database using `odoo.com/start-lts <https://www.odoo.com/start-lts>`_ to ensure
compatibility, as minor versions are not supported by Odoo.sh.
When submitting the form, if you are notified your subscription is not valid, it either means:
- :guilabel:`Subscription Code`: enter your Odoo Enterprise subscription code that includes
Odoo.sh. It is also sometimes called the *subscription referral*, *contract number*, or
*activation code*.
* it is not an existing subscription,
* it is not a partnership subscription,
* it is an enterprise subscription, but which does not include Odoo.sh,
* it is neither a partnership subscription or an enterprise subscription (e.g. an online
subscription).
.. tip::
Partners can use their partnership codes to initiate a trial (trial builds are limited to 1
GB storage and two staging). If a client proceeds to start a project, they must subscribe
to an Odoo Enterprise plan that includes Odoo.sh hosting and use their subscription code.
In case of doubt with your subscription, please contact the `Odoo support
<https://www.odoo.com/help>`_.
- :guilabel:`Hosting location`: select the region where your platform will be hosted.
.. image:: create/deploy-form.png
:align: center
.. image:: create/deploy-form.png
:alt: The Deploy your platform form
You're done !
=============
.. _odoo-sh/create/import:
You can start using Odoo.sh. Your first build is about to be created. You will soon be able to
connect to your first database.
Import a database
=================
.. image:: create/deploy-done.png
:align: center
Once your platform is deployed, you can import a database into your Odoo.sh project, provided it
uses a :doc:`supported version <../../supported_versions>` of Odoo.
.. _odoo_sh_import_your_database:
.. note::
Due to `Odoo's backup policy <https://www.odoo.com/cloud-sla>`_, the import process requires
**four times** the size of your database dump in available storage. For example, a 10 GB dump
file will require at least 40 GB of available space. We recommend allocating **more than four
times×** the dump size temporarily, then reducing storage after the import is complete.
Import your database
====================
If your project is a trial created with a partnership code, you can only import database dumps up
to **1 GB** in size.
You can import your database in your Odoo.sh project as long as it is in a :doc:`supported version
</administration/supported_versions>` of Odoo.
Push modules in production
--------------------------
Push your modules in production
-------------------------------
If you are using community or custom modules, add them to a branch in your GitHub repository.
If you use community or custom modules, add them in a branch in your Github repository.
Databases hosted on the Odoo.com online platform do not have any custom modules.
Users of these databases can therefore skip this step.
.. note::
Databases hosted on Odoo Online do not support custom modules.
You can structure your modules as you wish, Odoo.sh will automatically detect the folders containing
Odoo addons. For instance, you can put all your modules folder in the root directory of your
repository, or group the modules in folders by categories that you define (accounting, project,
...).
Odoo.sh automatically detects folders containing Odoo modules. You can organize them however you
prefer. For example, you can place them directly in the root directory of your repository or group
them by category (e.g., `accounting`, `project`, etc.).
For community modules available in public Git repositories,
you can also consider to add them using :ref:`Submodules <odoosh-advanced-submodules>`.
For publicly available community modules, you may also consider using :doc:`submodules
<../advanced/submodules>`.
Then, either :ref:`make this branch the production branch <odoosh-gettingstarted-branches-stages>`,
or :ref:`merge it into your production branch <odoosh-gettingstarted-branches-mergingbranches>`.
Download a backup
-----------------
.. tabs::
On-premise databases
~~~~~~~~~~~~~~~~~~~~
.. group-tab:: On-premise
Access the URL :file:`/web/database/manager` of your on-premise database and download a backup.
Go to `/web/database/manager` on your on-premise Odoo instance and click :icon:`fa-floppy-o`
:guilabel:`Backup`.
.. Warning::
.. image:: create/on-premise-manager.png
:alt: The on-premise web manager interface
If you cannot access the database manager, it may have been disabled by your system administrator.
See the :ref:`database manager security documentation <db_manager_security>`.
Select :guilabel:`zip (includes filestore)` as the :guilabel:`Backup Format`.
You will need the master password of your database server. If you do not have it, contact your
system administrator.
.. image:: create/on-premise-backup.png
:alt: Downloading an on-premise database backup
.. image:: create/create-import-onpremise-backup.png
:align: center
.. note::
- You will need the :guilabel:`Master Password` of your Odoo server. If you do not have it,
contact your system administrator.
- If you cannot access the database manager, it may have been disabled by your system
administrator. Refer to the :ref:`database manager security documentation
<db_manager_security>`.
Choose a zip including the filestore as the backup format.
.. group-tab:: Odoo Online
.. image:: create/create-import-onpremise-backup-dialog.png
:align: center
Log in to your portal account and navigate to the `My Databases page
<https://www.odoo.com/my/databases>`_, and download a backup by clicking the :icon:`fa-gear`
(:guilabel:`gear`) icon, then :icon:`fa-cloud-download` :guilabel:`Download`.
Odoo Online databases
~~~~~~~~~~~~~~~~~~~~~
.. image:: create/odoo-online-backup.png
:alt: Downloading an Odoo Online database backup
`Access your databases manager <https://accounts.odoo.com/my/databases/manage>`_ and download a
backup of your database.
.. warning::
Only major versions of Odoo are compatible with Odoo.sh.
.. image:: create/create-import-online-backup.png
:align: center
.. Warning::
Online versions (e.g. *saas-**) are not supported on Odoo.sh.
Upload the backup
-----------------
In your Odoo.sh project, navigate to the :guilabel:`Backups` tab of your :guilabel:`Production`
branch, and click :guilabel:`Import Database` to upload the backup you previously downloaded.
Then, in your Odoo.sh project, in the backups tab of your production branch, import the backup you
just downloaded.
.. image:: create/import-database.png
:alt: Importing a database backup on Odoo.sh
.. image:: create/create-import-production.png
:align: center
Once the import is complete, you can access the database using the :guilabel:`Connect` button in the
branch's :guilabel:`History` tab.
Once the backup imported, you can access the database using the *Connect* button in the history of
the branch.
.. important::
Importing a backup **overwrites all data** currently in the branch. Consider downloading a manual
backup beforehand if you want to preserve the existing data.
.. image:: create/create-import-production-done.png
:align: center
Check outgoing email servers
----------------------------
Check your outgoing email servers
---------------------------------
Odoo.sh provides a default email server. To use it, ensure that **no outgoing mail server is
enabled** in your database by enabling :ref:`developer mode <developer-mode>` and navigating to
:menuselection:`Settings --> Technical --> Email: Outgoing Mail Servers`
There is a default mail server provided with Odoo.sh.
To use it, there must be no enabled outgoing mail server configured in your database in
:menuselection:`Settings --> Technical --> Outgoing Mail Servers` (:ref:`Developer mode
<developer-mode>` must be activated).
After importing your database, all configured outgoing mail servers are **disabled**, and the
default Odoo.sh server is used.
After the import of your database, all outgoing email servers are disabled so you use the Odoo.sh
email server provided by default.
.. warning::
Port **25** is and will remain closed. If connecting to an external SMTP server, use port **465**
or **587**.
Port 25 is (and will stay) closed. If you want to connect to an external SMTP server, you should
use ports 465 and 587.
Check scheduled actions
-----------------------
Check your scheduled actions
----------------------------
Scheduled actions are **disabled by default** after importing your database. This prevents your
newly imported database from performing potentially disruptive operations such as:
All scheduled actions are disabled after the import.
- sending queued emails,
- triggering mass mailings, or
- syncing with third-party services (e.g., calendars, cloud storage).
This is to prevent your newly imported database to perform actions that could impact your running
production, such as sending the mails remaining in the queue, processing mass mailings, or
third-party services synchronization (Calendars, files hosting, ...).
If you intend to use this imported database in production, **re-enable** only the scheduled actions
you need by enabling :ref:`developer mode <developer-mode>` and going to :menuselection:`Settings
--> Technical --> Automation: Scheduled Actions`.
If you plan to make the imported database your production, enable the scheduled actions you need.
You can check what is enabled in the database of origin and enable the same actions in the imported
database. Scheduled actions are located under :menuselection:`Settings --> Technical --> Automation
--> Scheduled Actions`.
Register the subscription
-------------------------
Register your subscription
--------------------------
After import, the database is considered a **duplicate** and will be unlinked from your enterprise
subscription.
Your subscription is unlinked after the import.
.. note::
You are allowed only one active database per subscription.
The imported database is considered a duplicate by default and the enterprise subscription is
therefore removed, as you can only have one database linked per subscription.
If you intend to make the imported database your production environment:
#. Unlink your previous database from the subscription.
#. Register the new one.
Refer to the :doc:`database registration documentation <../../on_premise>` for step-by-step
instructions.
If you plan to make it your production, unlink your former database from the subscription, and
register the newly imported database. Read the :doc:`database registration documentation
<../../on_premise>` for instructions.

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

View File

@@ -7,7 +7,7 @@ Overview
This chapter helps you to create your first Odoo module and deploy it in your Odoo.sh project.
This tutorial requires you created a project on Odoo.sh, and
This tutorial requires :ref:`you created a project on Odoo.sh <odoosh-gettingstarted-create>`, and
you know your Github repository's URL.
Basic use of Git and Github is explained.
@@ -85,7 +85,7 @@ From the Odoo.sh editor, in a terminal:
$ odoo-bin scaffold my_module ~/src/user/
Or, from your computer, if you have an installation of Odoo:
Or, from your computer, if you have an :doc:`installation of Odoo <../../on_premise/source>`:
.. code-block:: bash
@@ -304,8 +304,6 @@ you have to install it manually as explained in the
:ref:`above section about installing your module in staging databases
<odoosh-gettingstarted-firstmodule-productiondata-install>`.
.. _odoo-sh/module/add:
Add a change
============
@@ -483,16 +481,15 @@ Add
.. code-block:: python
@api.model
def create(self, vals_list):
for vals in vals_list:
if 'name' in vals:
vals['name'] = unidecode(vals['name'])
return super().create(vals_list)
def create(self, values):
if 'name' in values:
values['name'] = unidecode(values['name'])
return super(my_module, self).create(values)
def write(self, vals):
if 'name' in vals:
vals['name'] = unidecode(vals['name'])
return super().write(vals)
def write(self, values):
if 'name' in values:
values['name'] = unidecode(values['name'])
return super(my_module, self).write(values)
Adding a Python dependency requires a module version increase for the platform to install it.

Some files were not shown because too many files have changed in this diff Show More