Merge branch '14.0' into 14.0_MIG_web_widget_mermaid

This commit is contained in:
Maxime Chambreuil
2022-11-12 14:21:06 -06:00
committed by GitHub
641 changed files with 71237 additions and 18878 deletions

View File

@@ -1,15 +1,20 @@
# Do NOT update manually; changes here will be overwritten by Copier
_commit: v1.2.0
_commit: v1.6.1
_src_path: gh:oca/oca-addons-repo-template
ci: GitHub
dependency_installation_mode: PIP
generate_requirements_txt: true
include_wkhtmltopdf: false
odoo_version: 14.0
rebel_module_groups: []
org_name: Odoo Community Association (OCA)
org_slug: OCA
rebel_module_groups:
- web_widget_model_viewer
repo_description: "This project aims to deal with modules related to the webclient\
\ of Odoo. You'll find modules that:\n\n - Add facilities to the UI\n - Add widgets\n\
\ - Ease the import/export features\n - Generally add clientside functionality"
repo_name: Web addons for Odoo
repo_slug: web
repo_website: https://github.com/OCA/web
travis_apt_packages: []
travis_apt_sources: []

View File

@@ -4,7 +4,13 @@ env:
# See https://github.com/OCA/odoo-community.org/issues/37#issuecomment-470686449
parserOptions:
ecmaVersion: 2017
ecmaVersion: 2019
overrides:
- files:
- "**/*.esm.js"
parserOptions:
sourceType: module
# Globals available in Odoo that shouldn't produce errorings
globals:

View File

@@ -2,7 +2,12 @@ name: pre-commit
on:
pull_request:
branches:
- "14.0*"
push:
branches:
- "14.0"
- "14.0-ocabot-*"
jobs:
pre-commit:
@@ -12,4 +17,21 @@ jobs:
- uses: actions/setup-python@v4
with:
python-version: "3.10"
- uses: pre-commit/action@v2.0.0
- name: Get python version
run: echo "PY=$(python -VV | sha256sum | cut -d' ' -f1)" >> $GITHUB_ENV
- uses: actions/cache@v1
with:
path: ~/.cache/pre-commit
key: pre-commit|${{ env.PY }}|${{ hashFiles('.pre-commit-config.yaml') }}
- name: Install pre-commit
run: pip install pre-commit
- name: Run pre-commit
run: pre-commit run --all-files --show-diff-on-failure --color=always
- name: Check that all files generated by pre-commit are in git
run: |
newfiles="$(git ls-files --others --exclude-from=.gitignore)"
if [ "$newfiles" != "" ] ; then
echo "Please check-in the following files:"
echo "$newfiles"
exit 1
fi

View File

@@ -8,18 +8,19 @@ jobs:
stale:
runs-on: ubuntu-latest
steps:
# 120+30 day stale policy for PRs
# * Except PRs marked as "no stale"
- name: Stale PRs policy
- name: Stale PRs and issues policy
uses: actions/stale@v4
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
exempt-pr-labels: "no stale"
days-before-stale: 120
days-before-close: 30
days-before-issue-stale: -1
days-before-issue-close: -1
# General settings.
ascending: true
remove-stale-when-updated: true
# Pull Requests settings.
# 120+30 day stale policy for PRs
# * Except PRs marked as "no stale"
days-before-pr-stale: 120
days-before-pr-close: 30
exempt-pr-labels: "no stale"
stale-pr-label: "stale"
stale-pr-message: >
There hasn't been any activity on this pull request in the past 4 months, so
@@ -28,19 +29,12 @@ jobs:
If you want this PR to never become stale, please ask a PSC member to apply
the "no stale" label.
# 180+30 day stale policy for open issues
# * Except Issues marked as "no stale"
- name: Stale Issues policy
uses: actions/stale@v4
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
# Issues settings.
# 180+30 day stale policy for open issues
# * Except Issues marked as "no stale"
days-before-issue-stale: 180
days-before-issue-close: 30
exempt-issue-labels: "no stale,needs more information"
days-before-stale: 180
days-before-close: 30
days-before-pr-stale: -1
days-before-pr-close: -1
remove-stale-when-updated: true
stale-issue-label: "stale"
stale-issue-message: >
There hasn't been any activity on this issue in the past 6 months, so it has
@@ -57,6 +51,7 @@ jobs:
uses: actions/stale@v4
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
ascending: true
only-labels: "needs more information"
exempt-issue-labels: "no stale"
days-before-stale: 15

9
.github/workflows/stale.yml.rej vendored Normal file
View File

@@ -0,0 +1,9 @@
diff a/.github/workflows/stale.yml b/.github/workflows/stale.yml (rejected hunks)
@@ -15,2 +15,3 @@ jobs:
# General settings.
+ ascending: true
remove-stale-when-updated: true
@@ -52,2 +53,3 @@ jobs:
repo-token: ${{ secrets.GITHUB_TOKEN }}
+ ascending: true
only-labels: "needs more information"

81
.github/workflows/test.yml vendored Normal file
View File

@@ -0,0 +1,81 @@
name: tests
on:
pull_request:
branches:
- "14.0*"
push:
branches:
- "14.0"
- "14.0-ocabot-*"
jobs:
unreleased-deps:
runs-on: ubuntu-latest
name: Detect unreleased dependencies
steps:
- uses: actions/checkout@v2
- run: |
for reqfile in requirements.txt test-requirements.txt ; do
if [ -f ${reqfile} ] ; then
result=0
# reject non-comment lines that contain a / (i.e. URLs, relative paths)
grep "^[^#].*/" ${reqfile} || result=$?
if [ $result -eq 0 ] ; then
echo "Unreleased dependencies found in ${reqfile}."
exit 1
fi
fi
done
test:
runs-on: ubuntu-latest
container: ${{ matrix.container }}
name: ${{ matrix.name }}
strategy:
fail-fast: false
matrix:
include:
- container: ghcr.io/oca/oca-ci/py3.6-odoo14.0:latest
include: "web_widget_model_viewer"
makepot: "true"
name: test with Odoo
- container: ghcr.io/oca/oca-ci/py3.6-ocb14.0:latest
include: "web_widget_model_viewer"
name: test with OCB
- container: ghcr.io/oca/oca-ci/py3.6-odoo14.0:latest
exclude: "web_widget_model_viewer"
makepot: "true"
name: test with Odoo
- container: ghcr.io/oca/oca-ci/py3.6-ocb14.0:latest
exclude: "web_widget_model_viewer"
name: test with OCB
services:
postgres:
image: postgres:9.6
env:
POSTGRES_USER: odoo
POSTGRES_PASSWORD: odoo
POSTGRES_DB: odoo
ports:
- 5432:5432
env:
INCLUDE: "${{ matrix.include }}"
EXCLUDE: "${{ matrix.exclude }}"
steps:
- uses: actions/checkout@v2
with:
persist-credentials: false
- name: Install addons and dependencies
run: oca_install_addons
- name: Check licenses
run: manifestoo -d . check-licenses
- name: Check development status
run: manifestoo -d . check-dev-status --default-dev-status=Beta
- name: Initialize test db
run: oca_init_test_database
- name: Run tests
run: oca_run_tests
- uses: codecov/codecov-action@v1
- name: Update .pot files
run: oca_export_and_push_pot https://x-access-token:${{ secrets.GIT_PUSH_TOKEN }}@github.com/${{ github.repository }}
if: ${{ matrix.makepot == 'true' && github.event_name == 'push' && github.repository_owner == 'OCA' }}

View File

@@ -5,7 +5,7 @@ exclude: |
# Files and folders generated by bots, to avoid loops
^setup/|/static/description/index\.html$|
# We don't want to mess with tool-generated files
.svg$|/tests/([^/]+/)?cassettes/|^.copier-answers.yml$|
.svg$|/tests/([^/]+/)?cassettes/|^.copier-answers.yml$|^.github/|
# Maybe reactivate this when all README files include prettier ignore tags?
^README\.md$|
# Library files can have extraneous formatting (even minimized)
@@ -120,7 +120,7 @@ repos:
name: flake8
additional_dependencies: ["flake8-bugbear==20.1.4"]
- repo: https://github.com/PyCQA/pylint
rev: pylint-2.5.3
rev: v2.11.1
hooks:
- id: pylint
name: pylint with optional checks
@@ -129,7 +129,7 @@ repos:
- --exit-zero
verbose: true
additional_dependencies: &pylint_deps
- pylint-odoo==3.5.0
- pylint-odoo==5.0.5
- id: pylint
name: pylint with mandatory checks
args:

View File

@@ -1,42 +0,0 @@
language: python
cache:
directories:
- $HOME/.cache/pip
- $HOME/.cache/pre-commit
python:
- "3.6"
addons:
postgresql: "9.6"
apt:
packages:
- expect-dev # provides unbuffer utility
stages:
- test
jobs:
include:
- stage: test
env:
- TESTS=1 ODOO_REPO="odoo/odoo" MAKEPOT="1"
- stage: test
env:
- TESTS=1 ODOO_REPO="OCA/OCB"
env:
global:
- VERSION="14.0" TESTS="0" LINT_CHECK="0" MAKEPOT="0"
- MQT_DEP=PIP
install:
- git clone --depth=1 https://github.com/OCA/maintainer-quality-tools.git
${HOME}/maintainer-quality-tools
- export PATH=${HOME}/maintainer-quality-tools/travis:${PATH}
- travis_install_nightly
script:
- travis_run_tests
after_success:
- travis_after_tests_success

View File

@@ -1,10 +0,0 @@
# OCA Guidelines
Please follow the official guide from the
[OCA Guidelines page](https://odoo-community.org/page/contributing).
## Project Specific Guidelines
<!-- /!\ do not modify above this line -->
This project does not have specific coding guidelines.

View File

@@ -1,5 +1,7 @@
[![Runbot Status](https://runbot.odoo-community.org/runbot/badge/flat/162/14.0.svg)](https://runbot.odoo-community.org/runbot/repo/github-com-oca-web-162)
[![Build Status](https://travis-ci.com/OCA/web.svg?branch=14.0)](https://travis-ci.com/OCA/web)
[![Runboat](https://img.shields.io/badge/runboat-Try%20me-875A7B.png)](https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=14.0)
[![Pre-commit Status](https://github.com/OCA/web/actions/workflows/pre-commit.yml/badge.svg?branch=14.0)](https://github.com/OCA/web/actions/workflows/pre-commit.yml?query=branch%3A14.0)
[![Build Status](https://github.com/OCA/web/actions/workflows/test.yml/badge.svg?branch=14.0)](https://github.com/OCA/web/actions/workflows/test.yml?query=branch%3A14.0)
[![codecov](https://codecov.io/gh/OCA/web/branch/14.0/graph/badge.svg)](https://codecov.io/gh/OCA/web)
[![Translation Status](https://translation.odoo-community.org/widgets/web-14-0/-/svg-badge.svg)](https://translation.odoo-community.org/engage/web-14-0/?utm_source=widget)
@@ -24,37 +26,58 @@ Available addons
----------------
addon | version | maintainers | summary
--- | --- | --- | ---
[support_branding](support_branding/) | 14.0.1.0.0 | | Adds your branding to an Odoo instance
[web_access_rule_buttons](web_access_rule_buttons/) | 14.0.1.0.0 | | Disable Edit button if access rules prevent this action
[web_action_conditionable](web_action_conditionable/) | 14.0.1.0.1 | | web_action_conditionable
[web_advanced_search](web_advanced_search/) | 14.0.1.0.1 | | Easier and more powerful searching tools
[web_company_color](web_company_color/) | 14.0.1.0.0 | | Web Company Color
[web_calendar_color_field](web_calendar_color_field/) | 14.0.1.0.0 | | Calendar Color Field
[web_calendar_slot_duration](web_calendar_slot_duration/) | 14.0.1.0.0 | [![Yajo](https://github.com/Yajo.png?size=30px)](https://github.com/Yajo) | Customizable calendar slot durations
[web_company_color](web_company_color/) | 14.0.1.2.0 | | Web Company Color
[web_copy_confirm](web_copy_confirm/) | 14.0.1.0.0 | | Show confirmation dialogue before copying records
[web_decimal_numpad_dot](web_decimal_numpad_dot/) | 14.0.1.0.0 | | Allows using numpad dot to enter period decimal separator
[web_dialog_size](web_dialog_size/) | 14.0.1.0.0 | | A module that lets the user expand a dialog box to the full screen width.
[web_domain_field](web_domain_field/) | 14.0.1.0.0 | | Use computed field as domain
[web_drop_target](web_drop_target/) | 14.0.1.0.0 | | Allows to drag files into Odoo
[web_disable_export_group](web_disable_export_group/) | 14.0.1.0.0 | | Web Disable Export Group
[web_domain_field](web_domain_field/) | 14.0.1.0.1 | | Use computed field as domain
[web_drop_target](web_drop_target/) | 14.0.1.1.1 | | Allows to drag files into Odoo
[web_environment_ribbon](web_environment_ribbon/) | 14.0.1.0.0 | | Web Environment Ribbon
[web_group_expand](web_group_expand/) | 14.0.1.0.0 | | Group Expand Buttons
[web_ir_actions_act_multi](web_ir_actions_act_multi/) | 14.0.1.0.0 | | Enables triggering of more than one action on ActionManager
[web_ir_actions_act_view_reload](web_ir_actions_act_view_reload/) | 14.0.1.0.0 | | Enables reload of the current view via ActionManager
[web_ir_actions_act_window_message](web_ir_actions_act_window_message/) | 14.0.1.0.0 | | Show a message box to users
[web_listview_range_select](web_listview_range_select/) | 14.0.1.0.0 | | Enables selecting a range of records using the shift key
[web_m2x_options](web_m2x_options/) | 14.0.1.0.0 | | web_m2x_options
[web_m2x_options](web_m2x_options/) | 14.0.1.1.0 | | web_m2x_options
[web_m2x_options_manager](web_m2x_options_manager/) | 14.0.1.1.0 | | Adds an interface to manage the "Create" and "Create and Edit" options for specific models and fields.
[web_no_bubble](web_no_bubble/) | 14.0.1.0.0 | | Remove the bubbles from the web interface
[web_notify](web_notify/) | 14.0.1.0.0 | | Send notification messages to user
[web_refresher](web_refresher/) | 14.0.1.0.0 | | Web Refresher
[web_responsive](web_responsive/) | 14.0.1.0.2 | [![Yajo](https://github.com/Yajo.png?size=30px)](https://github.com/Yajo) [![Tardo](https://github.com/Tardo.png?size=30px)](https://github.com/Tardo) | Responsive web client, community-supported
[web_notify](web_notify/) | 14.0.1.0.1 | | Send notification messages to user
[web_pwa_oca](web_pwa_oca/) | 14.0.1.0.0 | [![eLBati](https://github.com/eLBati.png?size=30px)](https://github.com/eLBati) | Make Odoo a PWA
[web_refresher](web_refresher/) | 14.0.2.0.0 | | Web Refresher
[web_responsive](web_responsive/) | 14.0.1.2.0 | [![Yajo](https://github.com/Yajo.png?size=30px)](https://github.com/Yajo) [![Tardo](https://github.com/Tardo.png?size=30px)](https://github.com/Tardo) | Responsive web client, community-supported
[web_search_with_and](web_search_with_and/) | 14.0.1.0.0 | | Use AND conditions on omnibar search
[web_send_message_popup](web_send_message_popup/) | 14.0.1.0.0 | | Web Send Message as Popup
[web_sheet_full_width](web_sheet_full_width/) | 14.0.1.0.1 | | Use the whole available screen width when displaying sheets
[web_switch_context_warning](web_switch_context_warning/) | 14.0.1.0.0 | | Show a warning if current user, company or database have been switched in another tab or window.
[web_timeline](web_timeline/) | 14.0.1.0.0 | [![tarteo](https://github.com/tarteo.png?size=30px)](https://github.com/tarteo) | Interactive visualization chart to show events in time
[web_timeline](web_timeline/) | 14.0.2.0.0 | [![tarteo](https://github.com/tarteo.png?size=30px)](https://github.com/tarteo) | Interactive visualization chart to show events in time
[web_tree_dynamic_colored_field](web_tree_dynamic_colored_field/) | 14.0.1.0.0 | | Allows you to dynamically color fields on tree views
[web_tree_image_tooltip](web_tree_image_tooltip/) | 14.0.1.0.0 | | Show images in tree views via tooltip
[web_tree_many2one_clickable](web_tree_many2one_clickable/) | 14.0.1.0.1 | | Open the linked resource when clicking on their name
[web_tree_many2one_clickable](web_tree_many2one_clickable/) | 14.0.1.0.2 | | Open the linked resource when clicking on their name
[web_view_calendar_list](web_view_calendar_list/) | 14.0.1.0.0 | | Show calendars as a List
[web_widget_bokeh_chart](web_widget_bokeh_chart/) | 14.0.2.3.1 | [![LoisRForgeFlow](https://github.com/LoisRForgeFlow.png?size=30px)](https://github.com/LoisRForgeFlow) | This widget allows to display charts using Bokeh library.
[web_widget_char_size](web_widget_char_size/) | 14.0.1.0.1 | | Add size option to Char widget
[web_widget_child_selector](web_widget_child_selector/) | 14.0.1.0.1 | | Widget used for navigation on hierarchy fields
[web_widget_ckeditor](web_widget_ckeditor/) | 14.0.1.0.2 | [![ivantodorovich](https://github.com/ivantodorovich.png?size=30px)](https://github.com/ivantodorovich) | Provides a widget for editing HTML fields using CKEditor
[web_widget_domain_editor_dialog](web_widget_domain_editor_dialog/) | 14.0.1.0.1 | | Recovers the Domain Editor Dialog functionality
[web_widget_dropdown_dynamic](web_widget_dropdown_dynamic/) | 14.0.1.0.0 | | This module adds support for dynamic dropdown widget
[web_widget_image_download](web_widget_image_download/) | 14.0.1.0.0 | | Allows to download any image from its widget
[web_widget_image_webcam](web_widget_image_webcam/) | 14.0.1.0.1 | | Allows to take image with WebCam
[web_widget_many2one_simple](web_widget_many2one_simple/) | 14.0.1.0.0 | [![Tardo](https://github.com/Tardo.png?size=30px)](https://github.com/Tardo) | Simple many2one widget
[web_widget_model_viewer](web_widget_model_viewer/) | 14.0.1.0.0 | [![eLBati](https://github.com/eLBati.png?size=30px)](https://github.com/eLBati) | Easily display interactive 3D models on the web & in AR
[web_widget_mpld3_chart](web_widget_mpld3_chart/) | 14.0.1.0.0 | | This widget allows to display charts using MPLD3 library.
[web_widget_numeric_step](web_widget_numeric_step/) | 14.0.1.0.0 | | Web Widget Numeric Step
[web_widget_open_tab](web_widget_open_tab/) | 14.0.1.0.0 | | Allow to open record from trees on new tab from tree views
[web_widget_plotly_chart](web_widget_plotly_chart/) | 14.0.1.0.0 | [![robyf70](https://github.com/robyf70.png?size=30px)](https://github.com/robyf70) | Allow to draw plotly charts.
[web_widget_text_markdown](web_widget_text_markdown/) | 14.0.1.0.0 | | Widget to text fields that adds markdown support
[web_widget_url_advanced](web_widget_url_advanced/) | 14.0.1.0.1 | | This module extends URL widget for displaying anchors with custom labels.
[web_widget_x2many_2d_matrix](web_widget_x2many_2d_matrix/) | 14.0.1.0.1 | | Show list fields as a matrix
[web_widget_x2many_2d_matrix](web_widget_x2many_2d_matrix/) | 14.0.1.1.0 | | Show list fields as a matrix
[//]: # (end addons)
@@ -66,7 +89,7 @@ addon | version | maintainers | summary
## Licenses
This repository is licensed under [AGPL-3.0](LICENSE).
However, each module can have a totally different license, as long as they adhere to OCA
However, each module can have a totally different license, as long as they adhere to Odoo Community Association (OCA)
policy. Consult each module's `__manifest__.py` file, which contains a `license` key
that explains its license.

View File

@@ -1,3 +1,4 @@
# generated from manifests external_dependencies
bokeh==2.3.1
mpld3
plotly==5.4.0

View File

@@ -1 +1 @@
14.0.20210921.0
14.0.20221021.0

View File

@@ -8,24 +8,33 @@ setuptools.setup(
description="Meta package for oca-web Odoo addons",
version=version,
install_requires=[
'odoo14-addon-support_branding',
'odoo14-addon-web_access_rule_buttons',
'odoo14-addon-web_action_conditionable',
'odoo14-addon-web_advanced_search',
'odoo14-addon-web_calendar_color_field',
'odoo14-addon-web_calendar_slot_duration',
'odoo14-addon-web_company_color',
'odoo14-addon-web_copy_confirm',
'odoo14-addon-web_decimal_numpad_dot',
'odoo14-addon-web_dialog_size',
'odoo14-addon-web_disable_export_group',
'odoo14-addon-web_domain_field',
'odoo14-addon-web_drop_target',
'odoo14-addon-web_environment_ribbon',
'odoo14-addon-web_group_expand',
'odoo14-addon-web_ir_actions_act_multi',
'odoo14-addon-web_ir_actions_act_view_reload',
'odoo14-addon-web_ir_actions_act_window_message',
'odoo14-addon-web_listview_range_select',
'odoo14-addon-web_m2x_options',
'odoo14-addon-web_m2x_options_manager',
'odoo14-addon-web_no_bubble',
'odoo14-addon-web_notify',
'odoo14-addon-web_pwa_oca',
'odoo14-addon-web_refresher',
'odoo14-addon-web_responsive',
'odoo14-addon-web_search_with_and',
'odoo14-addon-web_send_message_popup',
'odoo14-addon-web_sheet_full_width',
'odoo14-addon-web_switch_context_warning',
@@ -33,15 +42,28 @@ setuptools.setup(
'odoo14-addon-web_tree_dynamic_colored_field',
'odoo14-addon-web_tree_image_tooltip',
'odoo14-addon-web_tree_many2one_clickable',
'odoo14-addon-web_view_calendar_list',
'odoo14-addon-web_widget_bokeh_chart',
'odoo14-addon-web_widget_char_size',
'odoo14-addon-web_widget_child_selector',
'odoo14-addon-web_widget_ckeditor',
'odoo14-addon-web_widget_domain_editor_dialog',
'odoo14-addon-web_widget_dropdown_dynamic',
'odoo14-addon-web_widget_image_download',
'odoo14-addon-web_widget_image_webcam',
'odoo14-addon-web_widget_many2one_simple',
'odoo14-addon-web_widget_model_viewer',
'odoo14-addon-web_widget_mpld3_chart',
'odoo14-addon-web_widget_numeric_step',
'odoo14-addon-web_widget_open_tab',
'odoo14-addon-web_widget_plotly_chart',
'odoo14-addon-web_widget_text_markdown',
'odoo14-addon-web_widget_url_advanced',
'odoo14-addon-web_widget_x2many_2d_matrix',
],
classifiers=[
'Programming Language :: Python',
'Framework :: Odoo',
'Framework :: Odoo :: 14.0',
]
)

View File

@@ -0,0 +1 @@
../../../../support_branding

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1 @@
../../../../web_action_conditionable

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1 @@
../../../../web_calendar_color_field

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1 @@
../../../../web_calendar_slot_duration

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1 @@
../../../../web_disable_export_group

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1 @@
../../../../web_ir_actions_act_window_message

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1 @@
../../../../web_m2x_options_manager

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1 @@
../../../../web_pwa_oca

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1 @@
../../../../web_search_with_and

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1 @@
../../../../web_view_calendar_list

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1 @@
../../../../web_widget_char_size

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1 @@
../../../../web_widget_child_selector

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1 @@
../../../../web_widget_ckeditor

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1 @@
../../../../web_widget_domain_editor_dialog

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1 @@
../../../../web_widget_image_download

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1 @@
../../../../web_widget_image_webcam

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1 @@
../../../../web_widget_many2one_simple

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1 @@
../../../../web_widget_model_viewer

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1 @@
../../../../web_widget_open_tab

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1 @@
../../../../web_widget_plotly_chart

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1 @@
../../../../web_widget_text_markdown

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1,80 @@
================
Support Branding
================
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
:target: https://github.com/OCA/web/tree/14.0/support_branding
:alt: OCA/web
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/web-14-0/web-14-0-support_branding
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/162/14.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
If you run an Odoo support company and you support customers without an OPW,
you can brand the Odoo instance accordingly using this module. This module will
add a support company url to profile menu under, `Support`. Moreover,
it will add a button to mail exception messages to your support email address.
**Table of contents**
.. contents::
:local:
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/web/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/web/issues/new?body=module:%20support_branding%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* Therp BV
* Sunflower IT
Contributors
~~~~~~~~~~~~
* Holger Brunn <hbrunn@therp.nl>
* Stefan Rijnhart <srijnhart@therp.nl>
* Robert Rottermann <robert@redo2oo.ch>
* Kevin Kamau <kevin@sunflowerweb.nl>
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
This module is part of the `OCA/web <https://github.com/OCA/web/tree/14.0/support_branding>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

@@ -0,0 +1,7 @@
# Copyright 2012-2015 Therp BV (<http://therp.nl>)
# Copyright 2016 - Tecnativa - Angel Moya <odoo@tecnativa.com>
# Copyright 2017 - redO2oo - Robert Rottermann <robert@redO2oo.ch>
# Copyright 2021 Sunflower IT
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import models

View File

@@ -0,0 +1,24 @@
# Copyright 2012-2015 Therp BV (<http://therp.nl>)
# Copyright 2016 - Tecnativa - Angel Moya <odoo@tecnativa.com>
# Copyright 2017 - redO2oo - Robert Rottermann <robert@redO2oo.ch>
# Copyright 2021 Sunflower IT (<https://www.sunflowerweb.nl>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Support Branding",
"summary": "Adds your branding to an Odoo instance",
"category": "Hidden/Tools",
"version": "14.0.1.0.0",
"license": "AGPL-3",
"author": "Therp BV,Sunflower IT,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/web",
"depends": ["web", "base_setup"],
"qweb": [
"static/src/xml/base.xml",
],
"data": ["views/asset.xml", "views/res_config_settings.xml"],
"demo": [
"demo/ir_config_parameter_data.xml",
],
"installable": True,
}

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data noupdate="0">
<record id="demo_config_parameter_company_name" model="ir.config_parameter">
<field name="key">support_company</field>
<field name="value">Odoo Community Association</field>
</record>
<record id="demo_config_parameter_company_url" model="ir.config_parameter">
<field name="key">support_company_url</field>
<field name="value">https://odoo-community.org</field>
</record>
<record id="demo_config_parameter_company_color" model="ir.config_parameter">
<field name="key">support_branding_color</field>
<field name="value">#fff</field>
</record>
<record id="demo_config_parameter_support_email" model="ir.config_parameter">
<field name="key">support_email</field>
<field name="value">oca@example.com</field>
</record>
<record id="demo_config_parameter_release" model="ir.config_parameter">
<field name="key">support_release</field>
<field name="value">14.0</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * support_branding
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 10:05+0000\n"
"PO-Revision-Date: 2015-01-30 10:05+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: support_branding
#: model:ir.ui.view,arch_db:support_branding.menu_secondary
msgid ", supported by"
msgstr ", ondersteund door"
#. module: support_branding
#. openerp-web
#: code:addons/support_branding/static/src/js/support_branding.js:88
#, python-format
msgid "Email to %s"
msgstr "E-mail naar %s"
#. module: support_branding
#. openerp-web
#: code:addons/support_branding/static/src/xml/base.xml:12
#, python-format
msgid "Email to support company"
msgstr "E-mail naar ondersteunend bedrijf"
#. module: support_branding
#. openerp-web
#: code:addons/support_branding/static/src/xml/base.xml:10
#, python-format
msgid "Please fill in how you produced this error..."
msgstr "Beschrijft u alstublieft de stappen om deze fout te reproduceren..."
#. module: support_branding
#: model:ir.ui.view,arch_db:support_branding.menu_secondary
#, fuzzy
msgid "Version"
msgstr "Versie "

View File

@@ -0,0 +1,51 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * support_branding
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-02 10:23+0200\n"
"PO-Revision-Date: 2015-08-02 10:24+0200\n"
"Last-Translator: Matjaz Mozetic <m.mozetic@matmoz.si>\n"
"Language-Team: \n"
"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
"%100==4 ? 2 : 3);\n"
"X-Generator: Poedit 1.8.2\n"
#. module: support_branding
#: model:ir.ui.view,arch_db:support_branding.menu_secondary
msgid ", supported by"
msgstr ", podpora"
#. module: support_branding
#. openerp-web
#: code:addons/support_branding/static/src/js/support_branding.js:88
#, python-format
msgid "Email to %s"
msgstr "E-pošta za %s"
#. module: support_branding
#. openerp-web
#: code:addons/support_branding/static/src/xml/base.xml:12
#, fuzzy, python-format
msgid "Email to support company"
msgstr "E-pošta za družbo"
#. module: support_branding
#. openerp-web
#: code:addons/support_branding/static/src/xml/base.xml:10
#, python-format
msgid "Please fill in how you produced this error..."
msgstr "Opišite, kako ste prišli do te napake..."
#. module: support_branding
#: model:ir.ui.view,arch_db:support_branding.menu_secondary
#, fuzzy
msgid "Version"
msgstr "Verzija"

View File

@@ -0,0 +1,179 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * support_branding
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: support_branding
#: model_terms:ir.ui.view,arch_db:support_branding.support_res_config_settings_view_form
msgid ""
"Add a branding color\n"
" e.g #b163a3"
msgstr ""
#. module: support_branding
#: model_terms:ir.ui.view,arch_db:support_branding.support_res_config_settings_view_form
msgid ""
"Add the support company URL\n"
" e.g https://odoo-community.org"
msgstr ""
#. module: support_branding
#: model_terms:ir.ui.view,arch_db:support_branding.support_res_config_settings_view_form
msgid ""
"Add the support company name\n"
" e.g Odoo Community Association (OCA)"
msgstr ""
#. module: support_branding
#: model_terms:ir.ui.view,arch_db:support_branding.support_res_config_settings_view_form
msgid ""
"Add the support email to send issues\n"
" e.g info@helpdesksupport.com"
msgstr ""
#. module: support_branding
#: model_terms:ir.ui.view,arch_db:support_branding.support_res_config_settings_view_form
msgid "Add the support release"
msgstr ""
#. module: support_branding
#: model:ir.model.fields,field_description:support_branding.field_res_config_settings__support_branding_color
msgid "Branding color"
msgstr ""
#. module: support_branding
#: model:ir.model.fields,field_description:support_branding.field_res_config_settings__support_company
msgid "Company Name"
msgstr ""
#. module: support_branding
#: model:ir.model.fields,field_description:support_branding.field_res_config_settings__support_company_url
msgid "Company URL"
msgstr ""
#. module: support_branding
#: model:ir.model,name:support_branding.model_res_config_settings
msgid "Config Settings"
msgstr ""
#. module: support_branding
#: model_terms:ir.ui.view,arch_db:support_branding.support_res_config_settings_view_form
msgid "Creates an error (i.e ZeroDivisionError) to test support branding"
msgstr ""
#. module: support_branding
#: model:ir.model.fields,field_description:support_branding.field_res_config_settings__display_name
msgid "Display Name"
msgstr ""
#. module: support_branding
#. openerp-web
#: code:addons/support_branding/static/src/js/support_branding.js:0
#, python-format
msgid "Email to %s"
msgstr ""
#. module: support_branding
#. openerp-web
#: code:addons/support_branding/static/src/xml/base.xml:0
#, python-format
msgid ""
"Email to support\n"
" company"
msgstr ""
#. module: support_branding
#. openerp-web
#: code:addons/support_branding/static/src/xml/base.xml:0
#, python-format
msgid "For Support visit our"
msgstr ""
#. module: support_branding
#: model:ir.model.fields,field_description:support_branding.field_res_config_settings__id
msgid "ID"
msgstr ""
#. module: support_branding
#: model:ir.model.fields,field_description:support_branding.field_res_config_settings____last_update
msgid "Last Modified on"
msgstr ""
#. module: support_branding
#. openerp-web
#: code:addons/support_branding/static/src/xml/base.xml:0
#, python-format
msgid "Please fill in how you produced this error..."
msgstr ""
#. module: support_branding
#: model_terms:ir.ui.view,arch_db:support_branding.support_res_config_settings_view_form
msgid "Support Company Settings"
msgstr ""
#. module: support_branding
#: model_terms:ir.ui.view,arch_db:support_branding.support_res_config_settings_view_form
msgid "Support Settings"
msgstr ""
#. module: support_branding
#: model:ir.model.fields,field_description:support_branding.field_res_config_settings__support_email
msgid "Support email"
msgstr ""
#. module: support_branding
#: model:ir.model.fields,field_description:support_branding.field_res_config_settings__support_release
msgid "Support release"
msgstr ""
#. module: support_branding
#. openerp-web
#: code:addons/support_branding/static/src/xml/base.xml:0
#, python-format
msgid "Technical Support By"
msgstr ""
#. module: support_branding
#: model_terms:ir.ui.view,arch_db:support_branding.support_res_config_settings_view_form
msgid "Test Support Branding"
msgstr ""
#. module: support_branding
#: model_terms:ir.ui.view,arch_db:support_branding.support_res_config_settings_view_form
msgid ""
"The below button generates a\n"
" division by zero python error which\n"
" allows a user to test the modules\n"
" functionality."
msgstr ""
#. module: support_branding
#. openerp-web
#: code:addons/support_branding/static/src/xml/base.xml:0
#, python-format
msgid "Use HTML Editor"
msgstr ""
#. module: support_branding
#. openerp-web
#: code:addons/support_branding/static/src/xml/base.xml:0
#, python-format
msgid "or mail us at"
msgstr ""
#. module: support_branding
#. openerp-web
#: code:addons/support_branding/static/src/xml/base.xml:0
#, python-format
msgid "website"
msgstr ""

View File

@@ -0,0 +1,4 @@
# Copyright 2021 Sunflower IT
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from . import res_config_settings

View File

@@ -0,0 +1,39 @@
# Copyright 2021 Sunflower IT
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import fields, models
class ResConfigSettings(models.TransientModel):
_inherit = "res.config.settings"
def get_values(self):
res = super(ResConfigSettings, self).get_values()
param_obj = self.env["ir.config_parameter"].sudo()
res.update(
support_company=param_obj.get_param("support_company"),
support_company_url=param_obj.get_param("support_company_url"),
support_email=param_obj.get_param("support_email"),
support_release=param_obj.get_param("support_release"),
support_branding_color=param_obj.get_param("support_branding_color"),
)
return res
def set_values(self):
res = super(ResConfigSettings, self).set_values()
param_obj = self.env["ir.config_parameter"].sudo()
param_obj.set_param("support_company", self.support_company)
param_obj.set_param("support_company_url", self.support_company_url)
param_obj.set_param("support_email", self.support_email)
param_obj.set_param("support_release", self.support_release)
param_obj.set_param("support_branding_color", self.support_branding_color)
return res
support_company = fields.Char(string="Company Name")
support_company_url = fields.Char(string="Company URL")
support_branding_color = fields.Char(string="Branding color")
support_email = fields.Char(string="Support email")
support_release = fields.Char(string="Support release")
def test_support_branding_error(self):
return 9 / 0

View File

@@ -0,0 +1,4 @@
* Holger Brunn <hbrunn@therp.nl>
* Stefan Rijnhart <srijnhart@therp.nl>
* Robert Rottermann <robert@redo2oo.ch>
* Kevin Kamau <kevin@sunflowerweb.nl>

View File

@@ -0,0 +1,4 @@
If you run an Odoo support company and you support customers without an OPW,
you can brand the Odoo instance accordingly using this module. This module will
add a support company url to profile menu under, `Support`. Moreover,
it will add a button to mail exception messages to your support email address.

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -0,0 +1,426 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.15.1: http://docutils.sourceforge.net/" />
<title>Support Branding</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="support-branding">
<h1 class="title">Support Branding</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/web/tree/14.0/support_branding"><img alt="OCA/web" src="https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/web-14-0/web-14-0-support_branding"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/162/14.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p>If you run an Odoo support company and you support customers without an OPW,
you can brand the Odoo instance accordingly using this module. This module will
add a support company url to profile menu under, <cite>Support</cite>. Moreover,
it will add a button to mail exception messages to your support email address.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#bug-tracker" id="id1">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="id2">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="id3">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="id4">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="id5">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#id1">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/web/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/web/issues/new?body=module:%20support_branding%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#id2">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#id3">Authors</a></h2>
<ul class="simple">
<li>Therp BV</li>
<li>Sunflower IT</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#id4">Contributors</a></h2>
<ul class="simple">
<li>Holger Brunn &lt;<a class="reference external" href="mailto:hbrunn&#64;therp.nl">hbrunn&#64;therp.nl</a>&gt;</li>
<li>Stefan Rijnhart &lt;<a class="reference external" href="mailto:srijnhart&#64;therp.nl">srijnhart&#64;therp.nl</a>&gt;</li>
<li>Robert Rottermann &lt;<a class="reference external" href="mailto:robert&#64;redo2oo.ch">robert&#64;redo2oo.ch</a>&gt;</li>
<li>Kevin Kamau &lt;<a class="reference external" href="mailto:kevin&#64;sunflowerweb.nl">kevin&#64;sunflowerweb.nl</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#id5">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/web/tree/14.0/support_branding">OCA/web</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,20 @@
.support-branding-submit-form {
display: inline;
margin: 0;
width: 100%;
}
.support-statement {
margin: 10px 0 10px 0;
}
.support-statement .note-editor {
height: 230px;
overflow: scroll;
}
.support-desc {
resize: block;
max-height: 139px;
box-sizing: border-box;
}

View File

@@ -0,0 +1,33 @@
odoo.define("support_branding.ResConfigEdition", function (require) {
"use strict";
var ResConfigEdition = require("base_setup.ResConfigEdition");
ResConfigEdition.include({
willStart: function () {
var self = this;
var def_1 = this._rpc({
model: "ir.config_parameter",
method: "get_param",
args: ["support_company"],
}).then(function (name) {
self.support_cp_name = name;
});
var def_2 = this._rpc({
model: "ir.config_parameter",
method: "get_param",
args: ["support_company_url"],
}).then(function (url) {
self.support_cp_url = url;
});
var def_3 = this._rpc({
model: "ir.config_parameter",
method: "get_param",
args: ["support_email"],
}).then(function (email) {
self.support_cp_email = email;
});
return $.when(this._super.apply(this, arguments), def_1, def_2, def_3);
},
});
});

View File

@@ -0,0 +1,195 @@
/* Copyright 2012-2015 Therp
* Copyright 2016 - Tecnativa - Angel Moya <odoo@tecnativa.com>
* Copyright 2017 - redO2oo - Robert Rottermann <robert@redO2oo.ch>
* Copyright 2018 - Therp BV
* Copyright 2021 - Sunflower IT
* License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */
odoo.define("support_branding.CrashManager", function (require) {
"use strict";
var CrashManager = require("web.CrashManager").CrashManager;
var session = require("web.session");
var core = require("web.core");
var Wysiwyg = require("web_editor.wysiwyg.root");
var _t = core._t;
CrashManager.include({
init: function () {
var self = this;
$.when(this._super.apply(this, arguments)).then(function () {
self._rpc({
model: "ir.config_parameter",
method: "get_param",
args: ["support_company"],
}).then(function (name) {
self.support_cp_name = name;
});
self._rpc({
model: "ir.config_parameter",
method: "get_param",
args: ["support_company_url"],
}).then(function (url) {
self.support_cp_url = url;
});
self._rpc({
model: "ir.config_parameter",
method: "get_param",
args: ["support_email"],
}).then(function (email) {
self.support_cp_email = email;
});
self._rpc({
model: "ir.config_parameter",
method: "get_param",
args: ["support_release"],
}).then(function (release) {
self.support_cp_release = release;
});
self._rpc({
model: "ir.config_parameter",
method: "get_param",
args: ["support_branding_color"],
}).then(function (color) {
self.support_cp_color = color;
});
});
},
show_error: function (error) {
var self = this;
this.wysiwyg = new Wysiwyg(self, {});
var subject =
session.username +
"@" +
session.db +
"[" +
session.server +
"]:" +
error.message;
var body = error.data.debug;
var inputs =
"" +
'<input type="hidden" name="subject" autocomplete="off" ' +
"value=" +
subject +
"/>\n" +
'<input type="hidden" class="sp-body" name="body" ' +
'autocomplete="off" value=\'' +
body +
"'/>";
return this._super.apply(this, arguments).opened(function () {
var $form = $(".support-branding-submit-form");
var $statement = $(".support-statement");
var $description = $(".support-desc");
var $button = $(".support-btn");
var $use_html_ck = $("#use_html_checker");
var $close_btn = $(".close");
var $body = $(".sp-body");
var $header = $form.parents(".modal-dialog").find(".modal-header");
var $footer = $form.parents(".modal-dialog").find(".modal-footer");
// Self.wysiwyg.attachTo($description);
$statement.prepend(inputs);
if (self.support_cp_email) {
if (self.support_cp_name) {
var title = "Support by " + self.support_cp_name;
$('<h3 class="text-primary">' + title + "</h3>").insertBefore(
".support-branding-submit-form"
);
$button.text(
_.str.sprintf(_t("Email to %s"), self.support_cp_name)
);
}
$form
.parents(".modal")
.find(".modal-body")
.css("max-height", "70vh");
$use_html_ck.on("change", function () {
if (this.checked) {
if (self.wysiwyg.isDestroyed()) {
self.wysiwyg = new Wysiwyg(self, {});
self.wysiwyg.attachTo($description);
} else self.wysiwyg.attachTo($description);
} else {
self.wysiwyg.destroy();
$(".support-statement").append($description);
if ($description.is(":hidden"))
$description.css({display: "block"});
}
});
$button.on("click", function (ev) {
var $btn = $(this);
if (!$description.val()) {
$description.parent().addClass("oe_form_invalid");
ev.preventDefault();
return;
}
ev.preventDefault();
var error_code = "";
var body_html = "";
var desc =
self.wysiwyg.$editor && self.wysiwyg.$editor.length
? self.wysiwyg.getValue()
: $description.val();
desc = `<div>${desc}</div>`;
error_code = `<pre>${body}</pre>`;
body_html = `<div>${desc}<br/>${error_code}</div>`;
var params = {
state: "outgoing",
auto_delete: true,
email_to: self.support_cp_email,
subject: subject,
body_html: body_html,
};
self._rpc({
model: "mail.mail",
method: "create",
args: [params],
}).then(
function (mail_id) {
if (mail_id) {
self._rpc({
model: "mail.mail",
method: "send",
args: [mail_id],
}).then(function () {
self.do_notify(
"Success",
"Support mail created!"
);
$close_btn.click();
});
}
},
function () {
$body.val(desc + "\n\n" + $body.val());
$btn.unbind("click");
$btn.click();
}
);
});
} else {
$description.css({display: "none"});
$button.css({display: "none"});
}
$form.prependTo($footer);
// Hide "Ok" button since we have close on the dialog top
// Allow send email btn to close once done.
$footer.find("button:eq(1)").css({display: "none"});
if (self.support_cp_color) {
$header.css({background: self.support_cp_color});
$footer.css({background: self.support_cp_color});
} else {
$header.css({background: ""});
$footer.css({background: ""});
}
});
},
});
});

View File

@@ -0,0 +1,27 @@
odoo.define("support_branding.UserMenu", function (require) {
"use strict";
var user_menu = require("web.UserMenu");
user_menu.include({
_onMenuSupport: function () {
var url = this.support_url || "https://www.odoo.com/buy";
window.open(url, "_blank");
},
willStart: function () {
var self = this;
var def = self
._rpc({
model: "ir.config_parameter",
method: "get_param",
args: ["support_company_url"],
})
.then(function (site) {
if (site && site !== "") {
self.support_url = site;
}
});
return $.when(this._super.apply(this, arguments), def);
},
});
});

View File

@@ -0,0 +1,80 @@
odoo.define("support_branding.crash_manager_tests", function (require) {
"use strict";
/* global QUnit*/
const CrashManager = require("web.CrashManager").CrashManager;
const testUtils = require("web.test_utils");
const createActionManager = testUtils.createActionManager;
QUnit.module("support_branding", {}, function () {
QUnit.test("Error Dialog is created", async function (assert) {
// No of assertion expected.
assert.expect(5);
// Create action manager to trigger error dialog
var actionManager = await createActionManager({
services: {
crash_manager: CrashManager,
},
});
// Check if action with crash manager service was created.
assert.notOk(
_.isEmpty(actionManager),
"Action manager with " +
"crash manager service should be created and not empty"
);
// Test custom error
const error = {
type: "Support Branding Odoo Client Error",
message: "Message",
data: {
debug: "Traceback",
},
};
// NB: This will use the saved res.config settings of support
// branding containing the support mail. It is fetched in crash
// manager init function as saved in res.config settings.
// attached is a default data xml with sample data.
actionManager.call("crash_manager", "show_error", error);
await testUtils.nextTick();
var $mail_dialog = "form.support-branding-submit-form";
// Confirm if we have a form and its required elements.
assert.containsOnce(
$,
$mail_dialog,
"Error dialog should be opened and showing mail section on footer"
);
assert.containsOnce(
$,
".support-desc",
"We should have a textarea to add our issues"
);
assert.containsOnce(
$,
"button.support-btn",
"We should have a send mail button to send support mail"
);
// Add a test text mail.
$(".support-desc").val(
"Send this as a test mail to configured support mail"
);
// Try to send mail, by default a popup will be triggered
// defaulting to form call of 'mailto'.
await testUtils.dom.click($("button.support-btn"), {allowInvisible: true});
// Close error dialog
await testUtils.dom.click($("button.close"), {allowInvisible: true});
// Confirm dialog was closed
assert.containsNone($, $mail_dialog, "Error Dialog should be closed");
actionManager.destroy();
});
});
});

View File

@@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8" ?>
<templates>
<t t-extend="CrashManager.error">
<t t-jquery="div.o_error_detail" t-operation="after">
<div class="container">
<form
class="support-branding-submit-form oe_form"
enctype="text/plain"
method="get"
>
<div class="form-check">
<input
class="form-check-input"
type="checkbox"
name="use_html_checker"
id="use_html_checker"
/>
<label class="form-check-label" for="use_html_checker">
Use HTML Editor
</label>
</div>
<div class="support-statement oe_form_field_text oe_form_required">
<textarea
name="description"
autocomplete="off"
placeholder="Please fill in how you produced this error..."
class="support-desc"
/>
</div>
<button class="support-btn btn btn-primary">Email to support
company
</button>
</form>
</div>
</t>
</t>
<t t-extend="res_config_edition">
<t t-jquery="div#edition" t-operation="after">
<t
t-if="widget.support_cp_name and widget.support_cp_url and widget.support_cp_email"
>
<div class="col-12 o_setting_box" id="edition">
<div class="o_setting_right_pane">
<div class="user-heading">
<h3>
Technical Support By
<t t-esc="widget.support_cp_name" />
</h3>
</div>
<div class="tab-content">
<div
role="tabpanel"
id="settings"
class="tab-pane active text-muted o_web_settings_compact_subtitle"
>
<small>For Support visit our
<a
target="_blank"
t-attr-href="{{widget.support_cp_url}}"
style="text-decoration: underline;"
>
website
</a>
or mail us at
<a
target="_blank"
t-attr-href="mailto:{{widget.support_cp_email}}"
style="text-decoration: underline;"
>
<t t-esc="widget.support_cp_email" />
</a>
</small>
</div>
</div>
</div>
</div>
</t>
</t>
</t>
</templates>

View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<template
id="assets_backend"
name="support_branding assets"
inherit_id="web.assets_backend"
>
<xpath expr="." position="inside">
<link
rel="stylesheet"
type="text/css"
href="/support_branding/static/src/css/support_branding.css"
/>
<script
type="text/javascript"
src="/support_branding/static/src/js/user_menu.js"
/>
<script
type="text/javascript"
src="/support_branding/static/src/js/res_config_edition.js"
/>
<script
type="text/javascript"
src="/support_branding/static/src/js/support_branding.js"
/>
</xpath>
</template>
<template
id="support_branding_qunit_suite_tests"
name="Support Branding tests"
inherit_id="web.qunit_suite_tests"
>
<xpath expr="//script[last()]" position="after">
<script
type="text/javascript"
src="/support_branding/static/src/tests/support_branding_tests.js"
/>
</xpath>
</template>
</odoo>

View File

@@ -0,0 +1,112 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="support_res_config_settings_view_form" model="ir.ui.view">
<field name="name">support.res.config.settings.view.form</field>
<field name="model">res.config.settings</field>
<field name="priority" eval="10" />
<field name="inherit_id" ref="base.res_config_settings_view_form" />
<field name="arch" type="xml">
<xpath expr="//div[hasclass('settings')]" position="inside">
<div
class="app_settings_block"
data-string="Support Settings"
string="Support Settings"
data-key="support_branding"
>
<h2>Support Company Settings</h2>
<div
class="row mt16 o_settings_container"
id="support_company_settings"
>
<div class="col-12 col-lg-6 o_setting_box">
<div class="content-group">
<div class="row mt16">
<div class="o_setting_right_pane">
<!-- Support Details -->
<!-- Name -->
<label for="support_company" />
<div class="text-muted">
Add the support company name
e.g Odoo Community Association (OCA)
</div>
<div class="content-group">
<div class="mt16">
<field name="support_company" />
</div>
</div>
<br />
<!-- URL -->
<label for="support_company_url" />
<div class="text-muted">
Add the support company URL
e.g https://odoo-community.org
</div>
<div class="content-group">
<div class="mt16">
<field name="support_company_url" />
</div>
</div>
<br />
<!-- Branding Color -->
<label for="support_branding_color" />
<div class="text-muted">
Add a branding color
e.g #b163a3
</div>
<div class="content-group">
<div class="mt16">
<field name="support_branding_color" />
</div>
</div>
<br />
<!-- Email -->
<label for="support_email" />
<div class="text-muted">
Add the support email to send issues
e.g info@helpdesksupport.com
</div>
<div class="content-group">
<div class="mt16">
<field name="support_email" />
</div>
</div>
<br />
<!-- Release -->
<label for="support_release" />
<div class="text-muted">
Add the support release
</div>
<div class="content-group">
<div class="mt16">
<field name="support_release" />
</div>
</div>
<br /> <br />
<div class="text-muted">
The below button generates a
division by zero python error which
allows a user to test the modules
functionality.
</div>
<br />
<button
name="test_support_branding_error"
string="Test Support Branding"
class="oe_highlight"
type="object"
data-toggle="tooltip"
title="Creates an error (i.e ZeroDivisionError) to test support branding"
/>
<br /> <br />
</div>
</div>
</div>
</div>
</div>
</div>
</xpath>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,22 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_access_rule_buttons
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2021-10-13 20:46+0000\n"
"Last-Translator: Corneliuus <cornelius@clk-it.de>\n"
"Language-Team: none\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.3.2\n"
#. module: web_access_rule_buttons
#: model:ir.model,name:web_access_rule_buttons.model_base
msgid "Base"
msgstr "Basis"

View File

@@ -0,0 +1,93 @@
========================
web_action_conditionable
========================
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
:target: https://github.com/OCA/web/tree/14.0/web_action_conditionable
:alt: OCA/web
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/web-14-0/web-14-0-web_action_conditionable
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/162/14.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
Add support for conditions on create and delete actions on One2Many fields.
**Table of contents**
.. contents::
:local:
Usage
=====
Odoo by default support:
::
<tree delete="false" create="false">
with this module you can:
::
<tree delete="state=='draft'" create="state!='sent'">
It works in any tree view, so you can use it in One2many.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/web/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/web/issues/new?body=module:%20web_action_conditionable%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* Cristian Salamea
Contributors
~~~~~~~~~~~~
* Cristian Salamea <cristian.salamea@gmail.com>
* André Paramés <github@andreparames.com> (https://www.acsone.eu/)
* Alexandre Díaz <alexandre.diaz@tecnativa.com>
* Sudhir Arya <sudhir@erpharbor.com>
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
This module is part of the `OCA/web <https://github.com/OCA/web/tree/14.0/web_action_conditionable>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

View File

@@ -0,0 +1,11 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "web_action_conditionable",
"version": "14.0.1.0.1",
"depends": ["base", "web"],
"data": ["templates/assets.xml"],
"author": "Cristian Salamea,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/web",
"license": "AGPL-3",
"installable": True,
}

View File

@@ -0,0 +1,14 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"

View File

@@ -0,0 +1,15 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<="
"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"

View File

@@ -0,0 +1,13 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

View File

@@ -0,0 +1,14 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=1; plural=0;\n"

View File

@@ -0,0 +1,4 @@
* Cristian Salamea <cristian.salamea@gmail.com>
* André Paramés <github@andreparames.com> (https://www.acsone.eu/)
* Alexandre Díaz <alexandre.diaz@tecnativa.com>
* Sudhir Arya <sudhir@erpharbor.com>

View File

@@ -0,0 +1 @@
Add support for conditions on create and delete actions on One2Many fields.

View File

@@ -0,0 +1,13 @@
Odoo by default support:
::
<tree delete="false" create="false">
with this module you can:
::
<tree delete="state=='draft'" create="state!='sent'">
It works in any tree view, so you can use it in One2many.

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -0,0 +1,435 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.15.1: http://docutils.sourceforge.net/" />
<title>web_action_conditionable</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="web-action-conditionable">
<h1 class="title">web_action_conditionable</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/web/tree/14.0/web_action_conditionable"><img alt="OCA/web" src="https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/web-14-0/web-14-0-web_action_conditionable"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/162/14.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p>Add support for conditions on create and delete actions on One2Many fields.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#usage" id="id1">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="id2">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="id3">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="id4">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="id5">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="id6">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#id1">Usage</a></h1>
<p>Odoo by default support:</p>
<pre class="literal-block">
&lt;tree delete=&quot;false&quot; create=&quot;false&quot;&gt;
</pre>
<p>with this module you can:</p>
<pre class="literal-block">
&lt;tree delete=&quot;state=='draft'&quot; create=&quot;state!='sent'&quot;&gt;
</pre>
<p>It works in any tree view, so you can use it in One2many.</p>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#id2">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/web/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/web/issues/new?body=module:%20web_action_conditionable%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#id3">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#id4">Authors</a></h2>
<ul class="simple">
<li>Cristian Salamea</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#id5">Contributors</a></h2>
<ul class="simple">
<li>Cristian Salamea &lt;<a class="reference external" href="mailto:cristian.salamea&#64;gmail.com">cristian.salamea&#64;gmail.com</a>&gt;</li>
<li>André Paramés &lt;<a class="reference external" href="mailto:github&#64;andreparames.com">github&#64;andreparames.com</a>&gt; (<a class="reference external" href="https://www.acsone.eu/">https://www.acsone.eu/</a>)</li>
<li>Alexandre Díaz &lt;<a class="reference external" href="mailto:alexandre.diaz&#64;tecnativa.com">alexandre.diaz&#64;tecnativa.com</a>&gt;</li>
<li>Sudhir Arya &lt;<a class="reference external" href="mailto:sudhir&#64;erpharbor.com">sudhir&#64;erpharbor.com</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#id6">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/web/tree/14.0/web_action_conditionable">OCA/web</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,42 @@
/* global py */
/* Copyright 2019 Alexandre Díaz
* License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */
odoo.define("web.web_action_conditionable", function (require) {
"use strict";
var FieldOne2Many = require("web.relational_fields").FieldOne2Many;
FieldOne2Many.include({
init: function () {
var self = this;
try {
return this._super.apply(this, arguments);
} catch (error) {
var arch = this.view && this.view.arch;
if (arch) {
["create", "delete"].forEach(function (item) {
if (!_.has(arch.attrs, item)) {
return;
}
var expr = arch.attrs[item];
try {
self.activeActions[item] = py
.evaluate(py.parse(py.tokenize(expr)), self.recordData)
.toJSON();
} catch (ignored) {
console.log(
"[web_action_conditionable] unrecognized expr '" +
expr +
"', ignoring"
);
}
});
this.editable = arch.attrs.editable;
}
if (this.attrs.columnInvisibleFields) {
this._processColumnInvisibleFields();
}
}
},
});
});

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<template
id="assets_backend"
name="action conditionable assets"
inherit_id="web.assets_backend"
>
<xpath expr="." position="inside">
<script
type="text/javascript"
src="/web_action_conditionable/static/src/js/field_one2many.js"
/>
</xpath>
</template>
</odoo>

View File

@@ -0,0 +1,24 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_advanced_search
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2021-10-03 00:43+0000\n"
"Last-Translator: Alessandro Fiorino <alessandro.fiorino@digitaldomus.it>\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.3.2\n"
#. module: web_advanced_search
#. openerp-web
#: code:addons/web_advanced_search/static/src/xml/web_advanced_search.xml:0
#, python-format
msgid "Add Advanced Filter"
msgstr "Aggiungi Filtro Avanzato"

View File

@@ -8,7 +8,6 @@ odoo.define("web_advanced_search.RelationalOwl", function (require) {
const FieldMany2One = relationalFields.FieldMany2One;
const FieldManagerMixin = require("web.FieldManagerMixin");
const {useListener} = require("web.custom_hooks");
/* global owl */
const {Component} = owl;
const {xml} = owl.tags;

View File

@@ -0,0 +1,98 @@
====================
Calendar Color Field
====================
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
:target: https://github.com/OCA/web/tree/14.0/web_calendar_color_field
:alt: OCA/web
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/web-14-0/web-14-0-web_calendar_color_field
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/162/14.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
This is a technical module. It doesn't do anything on its own.
Odoo introduced a mechanism to set the desired color for a calendar filter,
through the field's `color` attribute.
Unfortunately, this only works for filters, but not if we want to use the
calendar's `color` attribute.
This module makes the appropiate changes so that the filter's color is used, if available.
**Table of contents**
.. contents::
:local:
Usage
=====
Set a color attribute value on any many2one calendar field set as filter and
set the calendar's color attribute to use the same many2one field.
Example:
.. code-block:: xml
<calendar color="category_id">
<field name="category_id" filter="1" color="kanban_color"/>
</calendar>
- `category_id` is a `Many2one` field in your record.
- `kanban_color` is an integer field in your category record.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/web/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/web/issues/new?body=module:%20web_calendar_color_field%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* Iván Todorovich
Contributors
~~~~~~~~~~~~
* Iván Todorovich <ivan.todorovich@gmail.com>
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
This module is part of the `OCA/web <https://github.com/OCA/web/tree/14.0/web_calendar_color_field>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

View File

@@ -0,0 +1,16 @@
# Copyright 2019 Iván Todorovich
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Calendar Color Field",
"version": "14.0.1.0.0",
"category": "Web",
"website": "https://github.com/OCA/web",
"author": "Iván Todorovich, Odoo Community Association (OCA)",
"license": "AGPL-3",
"depends": [
"web",
],
"data": [
"views/assets.xml",
],
}

View File

@@ -0,0 +1,14 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"

View File

@@ -0,0 +1,13 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

View File

@@ -0,0 +1 @@
* Iván Todorovich <ivan.todorovich@gmail.com>

View File

@@ -0,0 +1,9 @@
This is a technical module. It doesn't do anything on its own.
Odoo introduced a mechanism to set the desired color for a calendar filter,
through the field's `color` attribute.
Unfortunately, this only works for filters, but not if we want to use the
calendar's `color` attribute.
This module makes the appropiate changes so that the filter's color is used, if available.

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