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

[IMP] Acces rights & Ruff

- Created new group "Gestion des sessions & séances"
- Access right for this group have been set up so only members from this group can CRUD event sessions
- Access right for all other users (out side of the group) have been downgraded to only read access of event and event sessions
- Session related fields have been set invisible and a new button has apperead to turn enable/disable event session type
- Replaced flake8 and black with Ruff in the pre-commit file
parent 6a1bcae9
Aucune branche associée trouvée
Aucune étiquette associée trouvée
3 requêtes de fusion!4[IMP] Event and website event evolution,!3Draft: [IMP] Acces rights & Ruff,!2Draft: [IMP] Acces rights & Ruff
......@@ -22,6 +22,7 @@ globals:
odoo: readonly
openerp: readonly
owl: readonly
luxon: readonly
# Styling is handled by Prettier, so we only need to enable AST rules;
# see https://github.com/OCA/maintainer-quality-tools/pull/618#issuecomment-558576890
......
......@@ -3,6 +3,7 @@ __pycache__/
*.py[cod]
/.venv
/.pytest_cache
/.ruff_cache
# C extensions
*.so
......
......@@ -12,6 +12,10 @@ exclude: |
/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/|
# You don't usually want a bot to modify your legal texts
(LICENSE.*|COPYING.*)
default_language_version:
......@@ -33,27 +37,25 @@ repos:
language: fail
files: '[a-zA-Z0-9_]*/i18n/en\.po$'
- repo: https://github.com/oca/maintainer-tools
rev: 4cd2b852214dead80822e93e6749b16f2785b2fe
rev: f71041f22b8cd68cf7c77b73a14ca8d8cd190a60
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/myint/autoflake
rev: v1.6.1
hooks:
- id: autoflake
- id: oca-gen-addon-readme
args:
- --expand-star-imports
- --ignore-init-module-imports
- --in-place
- --remove-all-unused-imports
- --remove-duplicate-keys
- --remove-unused-variables
- repo: https://github.com/psf/black
rev: 22.8.0
- --addons-dir=.
- --branch=16.0
- --org-name=lefilament
- --repo-name=template_module
- --if-source-changed
- --keep-source-digest
- repo: https://github.com/OCA/odoo-pre-commit-hooks
rev: v0.0.25
hooks:
- id: black
- id: oca-checks-odoo-module
- id: oca-checks-po
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v2.7.1
hooks:
......@@ -95,27 +97,14 @@ repos:
- id: check-xml
- id: mixed-line-ending
args: ["--fix=lf"]
- repo: https://github.com/asottile/pyupgrade
rev: v2.38.2
hooks:
- id: pyupgrade
args: ["--keep-percent-format"]
- repo: https://github.com/PyCQA/isort
rev: 5.12.0
hooks:
- id: isort
name: isort except __init__.py
args:
- --settings=.
exclude: /__init__\.py$
- repo: https://github.com/PyCQA/flake8
rev: 3.9.2
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.1.3
hooks:
- id: flake8
name: flake8
additional_dependencies: ["flake8-bugbear==21.9.2"]
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
- id: ruff-format
- repo: https://github.com/OCA/pylint-odoo
rev: 7.0.2
rev: v8.0.19
hooks:
- id: pylint_odoo
name: pylint with optional checks
......
......@@ -4,12 +4,12 @@ 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=16.0
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=16.0
[MESSAGES CONTROL]
disable=all
......
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/*"]
[per-file-ignores]
"__init__.py" = ["F401", "I001"] # ignore unused and unsorted imports in __init__.py
"__manifest__.py" = ["B018"] # useless expression
[isort]
section-order = ["future", "standard-library", "third-party", "odoo", "odoo-addons", "first-party", "local-folder"]
[isort.sections]
"odoo" = ["odoo"]
"odoo-addons" = ["odoo.addons"]
[mccabe]
max-complexity = 16
......@@ -25,6 +25,7 @@
"views/event_views.xml",
"views/event_tag_views.xml",
"data/mail_data.xml",
"data/group_session.xml",
# report
],
"assets": {
......
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="group_event_session" model="res.groups">
<field name="name">Gestion des sessions et séances</field>
</record>
</odoo>
......@@ -35,8 +35,7 @@ class Event(models.Model):
required=True,
)
hide_website_event_title = fields.Boolean(
string="Masquer le titre de l'évènement sur le site web",
default=False
string="Masquer le titre de l'évènement sur le site web", default=False
)
# ------------------------------------------------------
......@@ -47,6 +46,13 @@ class Event(models.Model):
for event in self:
event.type_event_cg = event.event_type_id.type_event_cg
# ------------------------------------------------------
# Action button
# ------------------------------------------------------
def active_sessions(self):
self.ensure_one()
self.use_sessions = not self.use_sessions
# ------------------------------------------------------
# Default functions
# ------------------------------------------------------
......@@ -87,7 +93,7 @@ class Event(models.Model):
return super(Event, self)._get_menu_update_fields() + ["website_session"]
def _update_website_menus(self, menus_update_by_field=None):
super(Event, self)._update_website_menus(
record = super(Event, self)._update_website_menus(
menus_update_by_field=menus_update_by_field
)
for event in self:
......@@ -99,6 +105,8 @@ class Event(models.Model):
"website_session", "session_menu_ids", "session"
)
return record
def _get_website_menu_entries(self):
self.ensure_one()
return super(Event, self)._get_website_menu_entries() + [
......
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_event_session__public,event.session.public,model_event_session,,1,0,0,0
event.access_event_event_user,event.event.user,model_event_event,event.group_event_user,1,0,0,0
access_event_session_not_in_group_session,event.session.not.in.group.session,model_event_event,base.group_user,1,0,0,0
access_event_session_group_session,event.session.group.session,model_event_session,cgscop_website_event.group_event_session,1,1,1,1
access_event_session_slot,event.track.session,model_event_session_slot,,1,0,0,0
access_event_session_slot_manager,event.track.session.manager,model_event_session_slot,event.group_event_manager,1,1,1,1
access_res_partner_intervenant,res.partner.intervenant,model_res_partner_intervenant,,1,0,0,0
......
......@@ -23,7 +23,7 @@
<field name="arch" type="xml">
<xpath expr="//field[@name='website_menu']" position="after">
<label for="website_session" string="Showcase Sessions" />
<field name="website_session" />
<field name="website_session" /><!-- Ajouter groups id pour sessions -->
</xpath>
<field name="event_type_id" position="before">
<field name="type_event_cg" />
......@@ -42,4 +42,43 @@
</field>
</field>
</record>
<record id="view_restrict_event_session_form" model="ir.ui.view">
<field name="model">event.event</field>
<field name="name">event session restrict</field>
<field name="inherit_id" ref="event_session.view_event_form_create_sessions" />
<field name="priority">50</field>
<field name="arch" type="xml">
<xpath expr="//header" position="inside">
<button
name="active_sessions"
type="object"
string="Activer les séances"
class="btn-outline-primary"
attrs="{'invisible': [('use_sessions', '=', True)]}"
groups="cgscop_website_event.group_event_session"
/>
<button
name="active_sessions"
type="object"
string="Désactiver les séances"
class="btn-outline-primary"
attrs="{'invisible': [('use_sessions', '!=', True)]}"
groups="cgscop_website_event.group_event_session"
confirm="La désactivation des séances va entrainer la suppression des séances de cet évènement."
/>
</xpath>
<xpath expr="//field[@name='use_sessions']" position="attributes">
<attribute name="invisible">True</attribute>
</xpath>
</field>
</record>
<record model="ir.ui.menu" id="event_session.event_session_menu_report">
<field
name="groups_id"
eval="[(6,0,[ref('cgscop_website_event.group_event_session')])]"
/>
</record>
</odoo>
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