-
Notifications
You must be signed in to change notification settings - Fork 41
[16.0] [ADD] volunteer_holiday #578
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: 16.0
Are you sure you want to change the base?
Changes from 4 commits
a6b1a6d
fe0dfa4
79748ee
e7198ae
acc87b7
a584534
130eeb9
5218d91
642f6cf
be54c46
57a9f43
5e83781
e260401
8488f36
15a6db1
e9688bd
8b1dc76
6992be1
432576c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../../../volunteer_holiday |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| import setuptools | ||
|
|
||
| setuptools.setup( | ||
| setup_requires=['setuptools-odoo'], | ||
| odoo_addon=True, | ||
| ) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,62 @@ | ||
| ================= | ||
| Volunteer Holiday | ||
| ================= | ||
|
|
||
| .. | ||
| !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
| !! This file is generated by oca-gen-addon-readme !! | ||
| !! changes will be overwritten. !! | ||
| !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
| !! source digest: sha256:d68150a24904527787d7cde7a5cb68c88f101992b43ec7c25f9a3450eb8d6184 | ||
| !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
|
|
||
| .. |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-beescoop%2FObeesdoo-lightgray.png?logo=github | ||
| :target: https://github.com/beescoop/Obeesdoo/tree/16.0/volunteer_holiday | ||
| :alt: beescoop/Obeesdoo | ||
|
|
||
| |badge1| |badge2| |badge3| | ||
|
|
||
| Add volunteer and company holidays to volunteer app, and manage shifts and generators accordingly. | ||
|
|
||
| **Table of contents** | ||
|
|
||
| .. contents:: | ||
| :local: | ||
|
|
||
| Bug Tracker | ||
| =========== | ||
|
|
||
| Bugs are tracked on `GitHub Issues <https://github.com/beescoop/Obeesdoo/issues>`_. | ||
| In case of trouble, please check there if your issue has already been reported. | ||
| If you spotted it first, help us to smash it by providing a detailed and welcomed | ||
| `feedback <https://github.com/beescoop/Obeesdoo/issues/new?body=module:%20volunteer_holiday%0Aversion:%2016.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 | ||
| ~~~~~~~ | ||
|
|
||
| * Coop IT Easy SC | ||
|
|
||
| Contributors | ||
| ~~~~~~~~~~~~ | ||
|
|
||
| * `Coop IT Easy SC <https://coopiteasy.be>`_: | ||
|
|
||
| * Geneviève Ernould | ||
|
|
||
| Maintainers | ||
| ~~~~~~~~~~~ | ||
|
|
||
| This module is part of the `beescoop/Obeesdoo <https://github.com/beescoop/Obeesdoo/tree/16.0/volunteer_holiday>`_ project on GitHub. | ||
|
|
||
| You are welcome to contribute. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| # SPDX-FileCopyrightText: 2025 Coop IT Easy SC | ||
| # | ||
| # SPDX-License-Identifier: AGPL-3.0-or-later | ||
|
|
||
| from . import models |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| # SPDX-FileCopyrightText: 2026 Coop IT Easy SC | ||
| # | ||
| # SPDX-License-Identifier: AGPL-3.0-or-later | ||
|
|
||
| { | ||
| "name": "Volunteer Holiday", | ||
| "summary": "Add holidays for companies and volunteers", | ||
| "version": "16.0.0.5.0", | ||
| "category": "Volunteer management", | ||
| "website": "https://github.com/beescoop/Obeesdoo", | ||
| "author": "Coop IT Easy SC", | ||
| "license": "AGPL-3", | ||
| "application": False, | ||
| "depends": ["base", "volunteer", "mail"], | ||
| "data": [ | ||
| "data/cron.xml", | ||
| "security/ir.model.access.csv", | ||
| "views/volunteer_shift_generator_views.xml", | ||
| "views/volunteer_company_holiday_view.xml", | ||
| "views/volunteer_menu.xml", | ||
| ], | ||
| "demo": [], | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| from . import controllers | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,19 @@ | ||
| <?xml version="1.0" encoding="utf-8" ?> | ||
| <!-- | ||
| SPDX-FileCopyrightText: 2025 Coop IT Easy SC | ||
|
|
||
| SPDX-License-Identifier: AGPL-3.0-or-later | ||
| --> | ||
| <odoo> | ||
| <!-- Après test, passer en noupdate=1 --> | ||
| <record id="ir_cron_cancel_holiday_shifts" model="ir.cron"> | ||
| <field name="name">Cancel generated shifts during holidays</field> | ||
| <field name="model_id" ref="model_volunteer_company_holiday" /> | ||
| <field name="state">code</field> | ||
| <field name="code">model._cancel_holiday_shift()</field> | ||
| <field name="interval_number">24</field> | ||
| <field name="interval_type">hours</field> | ||
| <field name="numbercall">-1</field> | ||
| <field name="doall" eval="False" /> | ||
| </record> | ||
| </odoo> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| <odoo> | ||
| <data> | ||
| <!-- | ||
| <record id="object0" model="volunteer_holiday.volunteer_holiday"> | ||
| <field name="name">Object 0</field> | ||
| <field name="value">0</field> | ||
| </record> | ||
|
|
||
| <record id="object1" model="volunteer_holiday.volunteer_holiday"> | ||
| <field name="name">Object 1</field> | ||
| <field name="value">10</field> | ||
| </record> | ||
|
|
||
| <record id="object2" model="volunteer_holiday.volunteer_holiday"> | ||
| <field name="name">Object 2</field> | ||
| <field name="value">20</field> | ||
| </record> | ||
|
|
||
| <record id="object3" model="volunteer_holiday.volunteer_holiday"> | ||
| <field name="name">Object 3</field> | ||
| <field name="value">30</field> | ||
| </record> | ||
|
|
||
| <record id="object4" model="volunteer_holiday.volunteer_holiday"> | ||
| <field name="name">Object 4</field> | ||
| <field name="value">40</field> | ||
| </record> | ||
| --> | ||
| </data> | ||
| </odoo> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| # SPDX-FileCopyrightText: 2025 Coop IT Easy SC | ||
| # | ||
| # SPDX-License-Identifier: AGPL-3.0-or-later | ||
|
|
||
| from . import volunteer_company_holiday | ||
| from . import volunteer_shift_recurrent_generator |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,114 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # SPDX-FileCopyrightText: 2025 Coop IT Easy SC | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # SPDX-License-Identifier: AGPL-3.0-or-later | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| from datetime import date, datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| from dateutil.relativedelta import relativedelta | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| from odoo import fields, models | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| class VolunteerCompanyHoliday(models.Model): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| _name = "volunteer.company.holiday" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| _description = "Company Holidays" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| _order = "start_date" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Setting a default Also, |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Fields | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| name = fields.Char(required=True) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| company_id = fields.Many2one( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| comodel_name="res.company", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| string="Company", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| default=lambda self: self.env.user.company_id, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| required=True, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| start_date = fields.Date(required=True) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| end_date = fields.Date(required=True) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Methods | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Retirer la limite de temps, regarder les shifts futurs | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| def _cancel_holiday_shift(self, time_in_months=3): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| """Cancel shifts if they cover holiday period within time range""" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Forcing admin because of clause in volunteer.volunteer_shift.py, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # couldn't run the function otherwise. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Retester avec sudo | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| previous_env = self.env | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| self.env = self.env(user=self.env.ref("base.user_admin")) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Setting the time range we want to work with, here 3 months. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| date_time_range = datetime.today() + relativedelta(months=time_in_months) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| confirmed_future_generated_shifts_in_range = self.env["volunteer.shift"].search( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Here we'll have to include domain where holiday.company_id == shift.company_id | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| [ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ("start_time", ">=", datetime.today()), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ("start_time", "<=", date_time_range), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ("generator_id", "!=", None), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ("state", "=", "confirmed"), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Getting list of shifts to be canceled in case of holidays through generator_id | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Faire la meme chose avec filtered, lambda rec: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| potential_shifts_to_cancel = [] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| for shift in confirmed_future_generated_shifts_in_range: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if not shift.generator_id.is_maintained_during_holiday: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| potential_shifts_to_cancel.append(shift) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| future_company_holidays_in_range = self.env["volunteer.company.holiday"].search( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| [ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ("start_date", ">=", date.today()), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ("start_date", "<=", date_time_range.date()), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Cancel shifts if they're not canceled yet and cover holiday period | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| for shift in potential_shifts_to_cancel: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| for holiday in future_company_holidays_in_range: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| shift.state != "canceled" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| and shift.company_id == holiday.company_id | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| and self._shift_covers_holiday( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| shift.start_time, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| shift.end_time, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| holiday.start_date, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| holiday.end_date, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| shift.write( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "stage_id": self.env.ref( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "volunteer.volunteer_shift_stage_canceled" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ).id | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+84
to
+99
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If your shifts are ordered by Using |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Back to original user | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| self.env = previous_env | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| def _shift_covers_holiday( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
remytms marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| self, shift_start_time, shift_end_time, holiday_start_date, holiday_end_date | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| """Compare two periods of time, return true if they overlap.""" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| shift_start_date = shift_start_time.date() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| shift_end_date = shift_end_time.date() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| shift_start_date >= holiday_start_date | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| and shift_start_date <= holiday_end_date | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| or ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| shift_end_date >= holiday_start_date | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| and shift_start_date <= holiday_end_date | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| or ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| shift_start_date <= holiday_start_date | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| and shift_end_date >= holiday_end_date | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| return True | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if ( | |
| ( | |
| shift_start_date >= holiday_start_date | |
| and shift_start_date <= holiday_end_date | |
| ) | |
| or ( | |
| shift_end_date >= holiday_start_date | |
| and shift_start_date <= holiday_end_date | |
| ) | |
| or ( | |
| shift_start_date <= holiday_start_date | |
| and shift_end_date >= holiday_end_date | |
| ) | |
| ): | |
| return True | |
| return ( | |
| ( | |
| shift_start_date >= holiday_start_date | |
| and shift_start_date <= holiday_end_date | |
| ) | |
| or ( | |
| shift_end_date >= holiday_start_date | |
| and shift_start_date <= holiday_end_date | |
| ) | |
| or ( | |
| shift_start_date <= holiday_start_date | |
| and shift_end_date >= holiday_end_date | |
| ) | |
| ) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, I didn't know about this simplified syntax. It is done.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| # SPDX-FileCopyrightText: 2026 Coop IT Easy SC | ||
| # | ||
| # SPDX-License-Identifier: AGPL-3.0-or-later | ||
|
|
||
| from odoo import fields, models | ||
|
|
||
|
|
||
| class VolunteerShiftRecurrentGenerator(models.Model): | ||
| _inherit = "volunteer.shift.recurrent.generator" | ||
|
|
||
| is_maintained_during_holiday = fields.Boolean("Maintain During Holidays") |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| * `Coop IT Easy SC <https://coopiteasy.be>`_: | ||
|
|
||
| * Geneviève Ernould |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| Add volunteer and company holidays to volunteer app, and manage shifts and generators accordingly. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink | ||
| access_company_holiday_user,CompanyHolidayUser,model_volunteer_company_holiday,volunteer.volunteer_group_user,1,0,0,0 | ||
| access_company_holiday_manager,CompanyHolidayManager,model_volunteer_company_holiday,volunteer.volunteer_group_manager,1,1,0,0 | ||
| access_company_holiday_admin,CompanyHolidayAdmin,model_volunteer_company_holiday,volunteer.volunteer_group_admin,1,1,1,1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You should remove the
controllersdirectory if your have nothing more than the__init__.pyfile in it.