Skip to content
Extraits de code Groupes Projets
Valider ac34aa5a rédigé par Benjamin - Le Filament's avatar Benjamin - Le Filament
Parcourir les fichiers

[WIP] init module

parent
Branches
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Affichage de avec 969 ajouts et 0 suppression
# Configuration for known file extensions
[*.{css,js,json,less,md,py,rst,sass,scss,xml,yaml,yml}]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.{json,yml,yaml,rst,md}]
indent_size = 2
# Do not configure editor for libs and autogenerated content
[{*/static/{lib,src/lib}/**,*/static/description/index.html,*/readme/../README.rst}]
charset = unset
end_of_line = unset
indent_size = unset
indent_style = unset
insert_final_newline = false
trim_trailing_whitespace = false
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
/.venv
/.pytest_cache
/.ruff_cache
# C extensions
*.so
# Distribution / packaging
.Python
env/
bin/
build/
develop-eggs/
dist/
eggs/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg
*.eggs
.copier-answers.yml
# Windows installers
*.msi
# Debian packages
*.deb
# Redhat packages
*.rpm
# MacOS packages
*.dmg
*.pkg
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.cache
nosetests.xml
coverage.xml
# Translations
*.mo
# Pycharm
.idea
# Eclipse
.settings
# Visual Studio cache/options directory
.vs/
.vscode
# OSX Files
.DS_Store
# Django stuff:
*.log
# Mr Developer
.mr.developer.cfg
.project
.pydevproject
# Rope
.ropeproject
# Sphinx documentation
docs/_build/
# Backup files
*~
*.swp
# OCA rules
!static/lib/
exclude: |
(?x)
# NOT INSTALLABLE ADDONS
# END NOT INSTALLABLE ADDONS
# 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$|^.github/|^eslint.config.cjs|^prettier.config.cjs|
# Maybe reactivate this when all README files include prettier ignore tags?
^README\.md$|
# Library files can have extraneous formatting (even minimized)
/static/(src/)?lib/|
# Repos using Sphinx to generate docs don't need prettying
^docs/_templates/.*\.html$|
# Don't bother non-technical authors with formatting issues in docs
readme/.*\.(rst|md)$|
# Ignore build and dist directories in addons
/build/|/dist/|
# Ignore test files in addons
/tests/samples/.*|
# You don't usually want a bot to modify your legal texts
(LICENSE.*|COPYING.*)
default_language_version:
python: python3
node: "22.9.0"
repos:
- repo: local
hooks:
# These files are most likely copier diff rejection junks; if found,
# review them manually, fix the problem (if needed) and remove them
- id: forbidden-files
name: forbidden files
entry: found forbidden files; remove them
language: fail
files: "\\.rej$"
- id: en-po-files
name: en.po files cannot exist
entry: found a en.po file
language: fail
files: '[a-zA-Z0-9_]*/i18n/en\.po$'
- repo: https://github.com/oca/maintainer-tools
rev: bf9ecb9938b6a5deca0ff3d870fbd3f33341fded
hooks:
# update the NOT INSTALLABLE ADDONS section above
- id: oca-update-pre-commit-excluded-addons
- id: oca-fix-manifest-website
args: ["https://le-filament.com"]
- repo: https://github.com/OCA/odoo-pre-commit-hooks
rev: v0.0.33
hooks:
- id: oca-checks-odoo-module
- id: oca-checks-po
args:
- --disable=po-pretty-format
- repo: local
hooks:
- id: prettier
name: prettier (with plugin-xml)
entry: prettier
args:
- --write
- --list-different
- --ignore-unknown
types: [text]
files: \.(css|htm|html|js|json|jsx|less|md|scss|toml|ts|xml|yaml|yml)$
language: node
additional_dependencies:
- "prettier@3.3.3"
- "@prettier/plugin-xml@3.4.1"
- repo: local
hooks:
- id: eslint
name: eslint
entry: eslint
args:
- --color
- --fix
verbose: true
types: [javascript]
language: node
additional_dependencies:
- "eslint@9.12.0"
- "eslint-plugin-jsdoc@50.3.1"
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
hooks:
- id: trailing-whitespace
# exclude autogenerated files
exclude: /README\.rst$|\.pot?$
- id: end-of-file-fixer
# exclude autogenerated files
exclude: /README\.rst$|\.pot?$
- id: debug-statements
- id: fix-encoding-pragma
args: ["--remove"]
- id: check-case-conflict
- id: check-docstring-first
- id: check-executables-have-shebangs
- id: check-merge-conflict
# exclude files where underlines are not distinguishable from merge conflicts
exclude: /README\.rst$|^docs/.*\.rst$
- id: check-symlinks
- id: check-xml
- id: mixed-line-ending
args: ["--fix=lf"]
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.6.8
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
- id: ruff-format
- repo: https://github.com/OCA/pylint-odoo
rev: v9.1.3
hooks:
- id: pylint_odoo
name: pylint with optional checks
args:
- --rcfile=.pylintrc
- --exit-zero
verbose: true
- id: pylint_odoo
args:
- --rcfile=.pylintrc-mandatory
[MASTER]
load-plugins=pylint_odoo
score=n
[ODOOLINT]
readme-template-url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst"
manifest-required-authors=Le Filament
manifest-required-keys=license
manifest-deprecated-keys=description,active
license-allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3
valid-odoo-versions=18.0
[MESSAGES CONTROL]
disable=all
# This .pylintrc contains optional AND mandatory checks and is meant to be
# loaded in an IDE to have it check everything, in the hope this will make
# optional checks more visible to contributors who otherwise never look at a
# green travis to see optional checks that failed.
# .pylintrc-mandatory containing only mandatory checks is used the pre-commit
# config as a blocking check.
enable=anomalous-backslash-in-string,
api-one-deprecated,
api-one-multi-together,
assignment-from-none,
attribute-deprecated,
class-camelcase,
dangerous-default-value,
dangerous-view-replace-wo-priority,
development-status-allowed,
duplicate-id-csv,
duplicate-key,
duplicate-xml-fields,
duplicate-xml-record-id,
eval-referenced,
eval-used,
incoherent-interpreter-exec-perm,
license-allowed,
manifest-author-string,
manifest-deprecated-key,
manifest-required-author,
manifest-required-key,
manifest-version-format,
method-compute,
method-inverse,
method-required-super,
method-search,
openerp-exception-warning,
pointless-statement,
pointless-string-statement,
print-used,
redundant-keyword-arg,
redundant-modulename-xml,
reimported,
relative-import,
return-in-init,
rst-syntax-error,
sql-injection,
too-few-format-args,
translation-field,
translation-required,
unreachable,
use-vim-comment,
wrong-tabs-instead-of-spaces,
xml-syntax-error,
attribute-string-redundant,
character-not-valid-in-resource-link,
consider-merging-classes-inherited,
context-overridden,
create-user-wo-reset-password,
dangerous-filter-wo-user,
dangerous-qweb-replace-wo-priority,
deprecated-data-xml-node,
deprecated-openerp-xml-node,
duplicate-po-message-definition,
except-pass,
file-not-used,
invalid-commit,
manifest-maintainers-list,
missing-newline-extrafiles,
missing-readme,
missing-return,
odoo-addons-relative-import,
old-api7-method-defined,
po-msgstr-variables,
po-syntax-error,
renamed-field-parameter,
resource-not-exist,
str-format-used,
test-folder-imported,
translation-contains-variable,
translation-positional-used,
unnecessary-utf8-coding-comment,
website-manifest-key-not-valid-uri,
xml-attribute-translatable,
xml-deprecated-qweb-directive,
xml-deprecated-tree-attribute,
external-request-timeout,
# messages that do not cause the lint step to fail
consider-merging-classes-inherited,
create-user-wo-reset-password,
dangerous-filter-wo-user,
deprecated-module,
file-not-used,
invalid-commit,
missing-manifest-dependency,
missing-newline-extrafiles,
missing-readme,
no-utf8-coding-comment,
odoo-addons-relative-import,
old-api7-method-defined,
redefined-builtin,
too-complex,
unnecessary-utf8-coding-comment
[REPORTS]
msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
output-format=colorized
reports=no
[MASTER]
load-plugins=pylint_odoo
score=n
[ODOOLINT]
readme-template-url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst"
manifest-required-authors=Le Filament
manifest-required-keys=license
manifest-deprecated-keys=description,active
license-allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3
valid-odoo-versions=18.0
[MESSAGES CONTROL]
disable=all
enable=anomalous-backslash-in-string,
api-one-deprecated,
api-one-multi-together,
assignment-from-none,
attribute-deprecated,
class-camelcase,
dangerous-default-value,
dangerous-view-replace-wo-priority,
development-status-allowed,
duplicate-id-csv,
duplicate-key,
duplicate-xml-fields,
duplicate-xml-record-id,
eval-referenced,
eval-used,
incoherent-interpreter-exec-perm,
license-allowed,
manifest-author-string,
manifest-deprecated-key,
manifest-required-author,
manifest-required-key,
manifest-version-format,
method-compute,
method-inverse,
method-required-super,
method-search,
openerp-exception-warning,
pointless-statement,
pointless-string-statement,
print-used,
redundant-keyword-arg,
redundant-modulename-xml,
reimported,
relative-import,
return-in-init,
rst-syntax-error,
sql-injection,
too-few-format-args,
translation-field,
translation-required,
unreachable,
use-vim-comment,
wrong-tabs-instead-of-spaces,
xml-syntax-error,
attribute-string-redundant,
character-not-valid-in-resource-link,
consider-merging-classes-inherited,
context-overridden,
create-user-wo-reset-password,
dangerous-filter-wo-user,
dangerous-qweb-replace-wo-priority,
deprecated-data-xml-node,
deprecated-openerp-xml-node,
duplicate-po-message-definition,
except-pass,
file-not-used,
invalid-commit,
manifest-maintainers-list,
missing-newline-extrafiles,
missing-readme,
missing-return,
odoo-addons-relative-import,
old-api7-method-defined,
po-msgstr-variables,
po-syntax-error,
renamed-field-parameter,
resource-not-exist,
str-format-used,
test-folder-imported,
translation-contains-variable,
translation-positional-used,
unnecessary-utf8-coding-comment,
website-manifest-key-not-valid-uri,
xml-attribute-translatable,
xml-deprecated-qweb-directive,
xml-deprecated-tree-attribute,
external-request-timeout
[REPORTS]
msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
output-format=colorized
reports=no
target-version = "py310"
fix = true
[lint]
extend-select = [
"B",
"C90",
"E501", # line too long (default 88)
"I", # isort
"UP", # pyupgrade
]
exclude = ["setup/*"]
[format]
exclude = ["setup/*"]
[lint.per-file-ignores]
"__init__.py" = ["F401", "I001"] # ignore unused and unsorted imports in __init__.py
"__manifest__.py" = ["B018"] # useless expression
[lint.isort]
section-order = ["future", "standard-library", "third-party", "odoo", "odoo-addons", "first-party", "local-folder"]
[lint.isort.sections]
"odoo" = ["odoo"]
"odoo-addons" = ["odoo.addons"]
[lint.mccabe]
max-complexity = 16
Ce diff est replié.
# CGScop Extranet - Portal Blog
## Description
Ajoute une gestion interne de blog en fonction des Unions Régionales.
## Credits
Le développement de ce module a été financé par / The development of this module has been financially supported by:
- CGSCop (https://www.les-scop.coop/)
## Contributors
* Prénom <prenom@le-filament.com>
## Maintainer
[![Le Filament](https://le-filament.com/img/logo-lefilament.png)](https://le-filament.com)
This module is maintained by Le Filament
## Licenses
This repository is licensed under [AGPL-3.0](LICENSE).
from . import controllers
from . import models
{
"name": "CGScop Extranet - Portal Blog",
"summary": "CGScop Extranet Blog",
"author": "Le Filament",
"website": "https://le-filament.com",
"category": "Extranet Scop",
"version": "18.0.0.1.0",
"license": "AGPL-3",
"depends": ["scopext_portal"],
"data": [
# security
"security/security_rules.xml",
"security/ir.model.access.csv",
# datas
# templates
"templates/blog_templates.xml",
"templates/portal_layout.xml",
# views
"views/scop_portal_blog.xml",
"views/scop_portal_blog_category.xml",
# menus
"views/menus.xml",
],
"installable": True,
"auto_install": False,
}
from . import portal
# Copyright 2024- Le Filament (https://le-filament.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
from odoo.http import request, route
from odoo.addons.scopext_portal.controllers.portal import Extranet
class ExtranetBlog(Extranet):
# ------------------------------------------------------
# Routes
# ------------------------------------------------------
@route(
["/coop/ur", "/coop/ur/<model('scop.portal.blog'):blog_page>"],
type="http",
auth="user",
methods=["GET"],
website=True,
)
def coop_ur_blog(self, blog_page=False):
ur_id = request.env.user.partner_id.ur_id
if not ur_id:
return request.render("http_routing.404")
category_ids = request.env[
"scop.portal.blog.category"
].get_portal_blog_categories(ur_id)
values = {
"category_ids": category_ids,
}
if not category_ids:
return request.render("http_routing.404")
if blog_page:
values["page_id"] = blog_page
return request.render("scopext_portal_blog.blog_page", values)
return request.render("scopext_portal_blog.blog_home", values)
jsdoc = require("eslint-plugin-jsdoc");
const config = [{
plugins: {
jsdoc,
},
languageOptions: {
globals: {
_: "readonly",
$: "readonly",
fuzzy: "readonly",
jQuery: "readonly",
moment: "readonly",
odoo: "readonly",
openerp: "readonly",
owl: "readonly",
luxon: "readonly",
},
ecmaVersion: 2024,
sourceType: "script",
},
rules: {
"accessor-pairs": "warn",
"array-callback-return": "warn",
"callback-return": "warn",
"capitalized-comments": ["warn", "always", {
ignoreConsecutiveComments: true,
ignoreInlineComments: true,
}],
complexity: ["warn", 15],
"constructor-super": "warn",
"dot-notation": "warn",
eqeqeq: "warn",
"global-require": "warn",
"handle-callback-err": "warn",
"id-blacklist": "warn",
"id-match": "warn",
"init-declarations": "error",
"max-depth": "warn",
"max-nested-callbacks": "warn",
"max-statements-per-line": "warn",
"no-alert": "warn",
"no-array-constructor": "warn",
"no-caller": "warn",
"no-case-declarations": "warn",
"no-class-assign": "warn",
"no-cond-assign": "error",
"no-const-assign": "error",
"no-constant-condition": "warn",
"no-control-regex": "warn",
"no-debugger": "error",
"no-delete-var": "warn",
"no-div-regex": "warn",
"no-dupe-args": "error",
"no-dupe-class-members": "error",
"no-dupe-keys": "error",
"no-duplicate-case": "error",
"no-duplicate-imports": "error",
"no-else-return": "warn",
"no-empty-character-class": "warn",
"no-empty-function": "error",
"no-empty-pattern": "error",
"no-empty": "warn",
"no-eq-null": "error",
"no-eval": "error",
"no-ex-assign": "error",
"no-extend-native": "warn",
"no-extra-bind": "warn",
"no-extra-boolean-cast": "warn",
"no-extra-label": "warn",
"no-fallthrough": "warn",
"no-func-assign": "error",
"no-global-assign": "error",
"no-implicit-coercion": ["warn", {
allow: ["~"],
}],
"no-implicit-globals": "warn",
"no-implied-eval": "warn",
"no-inline-comments": "warn",
"no-inner-declarations": "warn",
"no-invalid-regexp": "warn",
"no-irregular-whitespace": "warn",
"no-iterator": "warn",
"no-label-var": "warn",
"no-labels": "warn",
"no-lone-blocks": "warn",
"no-lonely-if": "error",
"no-mixed-requires": "error",
"no-multi-str": "warn",
"no-native-reassign": "error",
"no-negated-condition": "warn",
"no-negated-in-lhs": "error",
"no-new-func": "warn",
"no-new-object": "warn",
"no-new-require": "warn",
"no-new-symbol": "warn",
"no-new-wrappers": "warn",
"no-new": "warn",
"no-obj-calls": "warn",
"no-octal-escape": "warn",
"no-octal": "warn",
"no-param-reassign": "warn",
"no-path-concat": "warn",
"no-process-env": "warn",
"no-process-exit": "warn",
"no-proto": "warn",
"no-prototype-builtins": "warn",
"no-redeclare": "warn",
"no-regex-spaces": "warn",
"no-restricted-globals": "warn",
"no-restricted-imports": "warn",
"no-restricted-modules": "warn",
"no-restricted-syntax": "warn",
"no-return-assign": "error",
"no-script-url": "warn",
"no-self-assign": "warn",
"no-self-compare": "warn",
"no-sequences": "warn",
"no-shadow-restricted-names": "warn",
"no-shadow": "warn",
"no-sparse-arrays": "warn",
"no-sync": "warn",
"no-this-before-super": "warn",
"no-throw-literal": "warn",
"no-undef-init": "warn",
"no-undef": "error",
"no-unmodified-loop-condition": "warn",
"no-unneeded-ternary": "error",
"no-unreachable": "error",
"no-unsafe-finally": "error",
"no-unused-expressions": "error",
"no-unused-labels": "error",
"no-unused-vars": "error",
"no-use-before-define": "error",
"no-useless-call": "warn",
"no-useless-computed-key": "warn",
"no-useless-concat": "warn",
"no-useless-constructor": "warn",
"no-useless-escape": "warn",
"no-useless-rename": "warn",
"no-void": "warn",
"no-with": "warn",
"operator-assignment": ["error", "always"],
"prefer-const": "warn",
radix: "warn",
"require-yield": "warn",
"sort-imports": "warn",
"spaced-comment": ["error", "always"],
strict: ["error", "function"],
"use-isnan": "error",
"jsdoc/check-tag-names": "warn",
"jsdoc/check-types": "warn",
"jsdoc/require-param-description": "off",
"jsdoc/require-return": "off",
"jsdoc/require-return-description": "off",
"jsdoc/require-return-type": "off",
"valid-typeof": "warn",
yoda: "warn",
},
settings: {
jsdoc: {
tagNamePreference: {
arg: "param",
argument: "param",
augments: "extends",
constructor: "class",
exception: "throws",
func: "function",
method: "function",
prop: "property",
return: "returns",
virtual: "abstract",
yield: "yields",
},
preferredTypes: {
array: "Array",
bool: "Boolean",
boolean: "Boolean",
number: "Number",
object: "Object",
str: "String",
string: "String",
},
},
},
}, {
files: ["**/*.esm.js"],
languageOptions: {
ecmaVersion: 2024,
sourceType: "module",
},
}];
module.exports = config
from . import scop_portal_blog
from . import scop_portal_blog_category
# © 2019 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class ScopPortalBlog(models.Model):
_name = "scop.portal.blog"
_inherit = ["mail.thread"]
_description = "Portal Blog Page"
_order = "sequence, name"
# ------------------------------------------------------
# Fields declaration
# ------------------------------------------------------
name = fields.Char(
"Titre",
required=True,
tracking=1,
)
sequence = fields.Integer()
active = fields.Boolean("Actif", tracking=1, default=True)
category_id = fields.Many2one(
comodel_name="scop.portal.blog.category",
string="Catégorie",
tracking=1,
ondelete="cascade",
required=True,
)
# TODO: Ajouter la valeur par défaut
ur_id = fields.Many2one(
comodel_name="union.regionale",
string="Union Régionale",
tracking=1,
)
is_published = fields.Boolean("Publié", tracking=1, default=False)
content = fields.Html("Contenu")
# ------------------------------------------------------
# Action
# ------------------------------------------------------
def action_publish(self):
for blog in self:
blog.is_published = True
def action_unpublish(self):
for blog in self:
blog.is_published = False
# © 2019 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models
class ScopPortalBlogCategory(models.Model):
_name = "scop.portal.blog.category"
_description = "Portal Blog Category"
_order = "sequence, name"
# ------------------------------------------------------
# Fields declaration
# ------------------------------------------------------
name = fields.Char("Nom", required=True)
active = fields.Boolean("Actif", default=True)
sequence = fields.Integer(default=10)
color = fields.Char("Couleur")
logo = fields.Image()
page_ids = fields.One2many(
comodel_name="scop.portal.blog", inverse_name="category_id", string="Catégorie"
)
# TODO: Ajouter la valeur par défaut
ur_id = fields.Many2one(
comodel_name="union.regionale",
string="Union Régionale",
)
# ------------------------------------------------------
# Common functions
# ------------------------------------------------------
@api.model
def get_portal_blog_categories(self, ur_id):
"""
Retourne les catégories à afficher sur le portail pour une UR donnée
:param obj ur_id: union.regionale
:return: category_ids liste des catégories
"""
category_ids = self.page_ids.search(
[("is_published", "=", True), ("ur_id", "=", ur_id.id)]
).mapped("category_id")
return category_ids
/** @type {import('prettier').Config} */
const config = {
// https://github.com/prettier/prettier/issues/15388#issuecomment-1717746872
plugins: [require.resolve("@prettier/plugin-xml")],
bracketSpacing: false,
printWidth: 88,
proseWrap: "always",
semi: true,
trailingComma: "es5",
xmlWhitespaceSensitivity: "preserve",
};
module.exports = config;
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_scop_portal_blog_group_portal,access_scop_portal_blog_group_portal,model_scop_portal_blog,base.group_portal,1,0,0,0
access_scop_portal_blog_group_editor,access_scop_portal_blog_group_editor,model_scop_portal_blog,group_portal_blog_editor,1,1,1,1
access_scop_portal_blog_category_group_portal,access_scop_portal_blog_category_group_portal,model_scop_portal_blog_category,base.group_portal,1,0,0,0
access_scop_portal_blog_category_group_editor,access_scop_portal_blog_category_group_editor,model_scop_portal_blog_category,group_portal_blog_editor,1,1,1,1
<?xml version="1.0" ?>
<odoo>
<!--
Category
-->
<record id="module_scop_portal_blog" model="ir.module.category">
<field name="name">Blog Interne</field>
<field name="sequence">10</field>
</record>
<!--
Group user
-->
<record id="group_portal_blog_editor" model="res.groups">
<field name="name">Editeur UR</field>
<field name="category_id" ref="module_scop_portal_blog" />
</record>
<record id="group_portal_blog_admin" model="res.groups">
<field name="name">Administrateur</field>
<field name="implied_ids" eval="[(4, ref('group_portal_blog_editor'))]" />
<field name="category_id" ref="module_scop_portal_blog" />
<field
name="users"
eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"
/>
</record>
<!--
Rules
-->
<!-- Editeur -->
<!-- TODO: valider le fonctionnement -->
<!-- <record id="scop_portal_blog_editor_ur_rule" model="ir.rule">-->
<!-- <field name="name">Scop Portal: UR Rule</field>-->
<!-- <field name="model_id" ref="model_scop_portal_blog" />-->
<!-- <field name="domain_force">[('ur_id', 'in', company_id.ur_id + [False])]</field>-->
<!-- <field name="groups" eval="[(6, 0, [ref('scopext_portal_blog.group_portal_blog_editor')])]"/>-->
<!-- <field name="perm_read" eval="True" />-->
<!-- <field name="perm_write" eval="True" />-->
<!-- <field name="perm_create" eval="True" />-->
<!-- <field name="perm_unlink" eval="True" />-->
<!-- </record>-->
<!-- <record id="scop_portal_blog_category_editor_ur_rule" model="ir.rule">-->
<!-- <field name="name">Scop Portal Category: UR Rule</field>-->
<!-- <field name="model_id" ref="model_scop_portal_blog_category" />-->
<!-- <field name="domain_force">[('ur_id', 'in', company_id.ur_id + [False])]</field>-->
<!-- <field name="groups" eval="[(6, 0, [ref('scopext_portal_blog.group_portal_blog_editor')])]"/>-->
<!-- <field name="perm_read" eval="True" />-->
<!-- <field name="perm_write" eval="True" />-->
<!-- <field name="perm_create" eval="True" />-->
<!-- <field name="perm_unlink" eval="True" />-->
<!-- </record>-->
<!-- Admin -->
<record id="scop_portal_blog_admin_ur_rule" model="ir.rule">
<field name="name">Scop Portal: Admin Rule</field>
<field name="model_id" ref="model_scop_portal_blog" />
<field name="domain_force">[(1, '=', 1)]</field>
<field
name="groups"
eval="[(6, 0, [ref('scopext_portal_blog.group_portal_blog_admin')])]"
/>
<field name="perm_read" eval="True" />
<field name="perm_write" eval="True" />
<field name="perm_create" eval="True" />
<field name="perm_unlink" eval="True" />
</record>
<record id="scop_portal_blog_category_admin_ur_rule" model="ir.rule">
<field name="name">Scop Portal Category: Admin Rule</field>
<field name="model_id" ref="model_scop_portal_blog_category" />
<field name="domain_force">[(1, '=', 1)]</field>
<field
name="groups"
eval="[(6, 0, [ref('scopext_portal_blog.group_portal_blog_admin')])]"
/>
<field name="perm_read" eval="True" />
<field name="perm_write" eval="True" />
<field name="perm_create" eval="True" />
<field name="perm_unlink" eval="True" />
</record>
</odoo>
static/description/icon.png

8,95 ko

0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter