Skip to content
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

[17.0][MIG] base_time_window: Migration to 17.0 #3030

Open
wants to merge 33 commits into
base: 17.0
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
5e2f149
Create module base_time_window
grindtildeath Mar 30, 2020
b2623a4
Import files from Acsone
lmignon Mar 30, 2020
f563cd8
Adapt module to v13.0 and new usage
grindtildeath Mar 31, 2020
5f684c8
Adapt test module
grindtildeath Apr 1, 2020
ab591d8
Fixes and ROADMAP
grindtildeath Apr 3, 2020
0988fb3
[IMP] base_time_window: black, isort
grindtildeath Apr 15, 2020
c7e19ad
[UPD] Update base_time_window.pot
oca-travis Apr 15, 2020
bb3b09d
[UPD] README.rst
OCA-git-bot Apr 15, 2020
a7350a1
[ADD] icon.png
OCA-git-bot Apr 15, 2020
dbff62d
[MIG] base_time_window: Migration to 14.0
dzungtran89 Jan 11, 2021
60b12c6
[UPD] Update base_time_window.pot
oca-travis Jun 21, 2021
b26a5a7
base_time_window: Disallow hours > 23
mmequignon Sep 15, 2021
55d8cb6
[UPD] Update base_time_window.pot
oca-travis Jan 12, 2022
88a628f
base_time_window 14.0.1.0.1
OCA-git-bot Jan 12, 2022
5c76d86
[MIG] base_time_window: Migration to 15.0
JasminSForgeFlow Jul 8, 2022
ea237ca
[UPD] Update base_time_window.pot
Jul 15, 2022
f1fde98
[UPD] README.rst
OCA-git-bot Jul 15, 2022
4b1016f
Added translation using Weblate (Spanish (Argentina))
ibuioli Sep 4, 2022
26b7078
Translated using Weblate (Spanish (Argentina))
ibuioli Sep 4, 2022
07a82c8
[16.0][MIG] - base_time_window
sbejaoui Feb 21, 2023
274f172
[UPD] Update base_time_window.pot
Feb 27, 2023
af8235c
[UPD] README.rst
OCA-git-bot Feb 27, 2023
f59c68a
Update translation files
weblate Feb 27, 2023
25774a0
[UPD] Update base_time_window.pot
Jun 7, 2023
5c8fd32
Update translation files
weblate Jun 7, 2023
49f1474
Translated using Weblate (Spanish (Argentina))
ibuioli Jun 9, 2023
d8c13d4
[UPD] README.rst
OCA-git-bot Sep 3, 2023
fa94a0c
Added translation using Weblate (Spanish)
Ivorra78 Nov 11, 2023
0d429cd
Translated using Weblate (Spanish)
Ivorra78 Nov 11, 2023
ef48243
Added translation using Weblate (Italian)
mymage Jan 2, 2024
0d6cf92
Translated using Weblate (Italian)
mymage Jan 8, 2024
da8effe
[IMP] base_time_window: pre-commit auto fixes
Sep 4, 2024
376bc15
[MIG] base_time_window: Migration to 17.0
Sep 9, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
142 changes: 142 additions & 0 deletions base_time_window/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
================
Base Time Window
================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:691b5e5fe2cbf6d3dd1c48944761fe474d8a922798d18eb2f7c876566596f98c
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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%2Fserver--tools-lightgray.png?logo=github
:target: https://github.com/OCA/server-tools/tree/17.0/base_time_window
:alt: OCA/server-tools
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/server-tools-17-0/server-tools-17-0-base_time_window
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=17.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module provides base classes and models to manage time windows
through time.window.mixin.

**Table of contents**

.. contents::
:local:

Usage
=====

Example implementation for the mixin can be found in module
test_base_time_window.

As a time window will always be linked to a related model thourgh a M2o
relation, when defining the new model inheriting the mixin, one should
pay attention to the following points in order to have the overlapping
check work properly:

- Define class property \`_overlap_check_field\`: This must state the
M2o field to use for the to check of overlapping time window records
linked to a specific record of the related model.
- Add the M2o field to the related model in the \`api.constrains\`:

For example:

.. code:: python
class PartnerTimeWindow(models.Model):
_name = 'partner.time.window'
_inherit = 'time.window.mixin'
partner_id = fields.Many2one(
res.partner', required=True, index=True, ondelete='cascade'
)
_overlap_check_field = 'partner_id'
@api.constrains('partner_id')
def check_window_no_overlaps(self):
return super().check_window_no_overlaps()
Known issues / Roadmap
======================

- Storing times using float_time widget requires extra processing to
ensure computations are done in the right timezone, because the value
is not stored as UTC in the database, and must therefore be related
to a tz field.

float_time in this sense should only be used for durations and not
for a "point in time" as this is always needs a Date for a timezone
conversion to be done properly. (Because a conversion from UTC to
e.g. Europe/Brussels won't give the same result in winter or summer
because of Daylight Saving Time).

Therefore the right move would be to use a resource.calendar to
define time windows using Datetime with recurrences.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/server-tools/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/OCA/server-tools/issues/new?body=module:%20base_time_window%0Aversion:%2017.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
-------

* ACSONE SA/NV
* Camptocamp

Contributors
------------

- Laurent Mignon <[email protected]>
- Akim Juillerat <[email protected]>
- SodexisTeam <[email protected]>

Trobz

- Dung Tran <[email protected]>

Other credits
-------------

The development of this module has been financially supported by:

- Camptocamp

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/server-tools <https://github.com/OCA/server-tools/tree/17.0/base_time_window>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions base_time_window/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
14 changes: 14 additions & 0 deletions base_time_window/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Copyright 2020 Camptocamp SA
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
{
"name": "Base Time Window",
"summary": "Base model to handle time windows",
"version": "17.0.1.0.0",
"category": "Technical Settings",
"author": "ACSONE SA/NV, Camptocamp, Odoo Community Association (OCA)",
"license": "AGPL-3",
"website": "https://github.com/OCA/server-tools",
"depends": ["base"],
"data": ["data/time_weekday.xml", "security/ir.model.access.xml"],
"installable": True,
}
26 changes: 26 additions & 0 deletions base_time_window/data/time_weekday.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2020 ACSONE SA/NV
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo noupdate="1">
<record model="time.weekday" id="time_weekday_monday">
<field name="name">0</field>
</record>
<record model="time.weekday" id="time_weekday_tuesday">
<field name="name">1</field>
</record>
<record model="time.weekday" id="time_weekday_wednesday">
<field name="name">2</field>
</record>
<record model="time.weekday" id="time_weekday_thursday">
<field name="name">3</field>
</record>
<record model="time.weekday" id="time_weekday_friday">
<field name="name">4</field>
</record>
<record model="time.weekday" id="time_weekday_saturday">
<field name="name">5</field>
</record>
<record model="time.weekday" id="time_weekday_sunday">
<field name="name">6</field>
</record>
</odoo>
163 changes: 163 additions & 0 deletions base_time_window/i18n/base_time_window.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * base_time_window
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.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: base_time_window
#. odoo-python
#: code:addons/base_time_window/models/time_window_mixin.py:0
#, python-format
msgid "%(end_time)s must be > %(start_time)s"
msgstr ""

#. module: base_time_window
#. odoo-python
#: code:addons/base_time_window/models/time_window_mixin.py:0
#, python-format
msgid "%(record_name)s overlaps %(other_name)s"
msgstr ""

#. module: base_time_window
#. odoo-python
#: code:addons/base_time_window/models/time_window_mixin.py:0
#, python-format
msgid "At least one time.weekday is required"
msgstr ""

#. module: base_time_window
#: model:ir.model.fields,field_description:base_time_window.field_time_weekday__create_uid
msgid "Created by"
msgstr ""

#. module: base_time_window
#: model:ir.model.fields,field_description:base_time_window.field_time_weekday__create_date
msgid "Created on"
msgstr ""

#. module: base_time_window
#: model:ir.model.fields,field_description:base_time_window.field_time_weekday__display_name
msgid "Display Name"
msgstr ""

#. module: base_time_window
#: model:ir.model.fields.selection,name:base_time_window.selection__time_weekday__name__4
msgid "Friday"
msgstr ""

#. module: base_time_window
#: model:ir.model.fields,field_description:base_time_window.field_time_window_mixin__time_window_start
msgid "From"
msgstr ""

#. module: base_time_window
#. odoo-python
#: code:addons/base_time_window/models/time_window_mixin.py:0
#, python-format
msgid "Hour should be between 00 and 23"
msgstr ""

#. module: base_time_window
#: model:ir.model.fields,field_description:base_time_window.field_time_weekday__id
msgid "ID"
msgstr ""

#. module: base_time_window
#: model:ir.model.fields,field_description:base_time_window.field_time_weekday____last_update
msgid "Last Modified on"
msgstr ""

#. module: base_time_window
#: model:ir.model.fields,field_description:base_time_window.field_time_weekday__write_uid
msgid "Last Updated by"
msgstr ""

#. module: base_time_window
#: model:ir.model.fields,field_description:base_time_window.field_time_weekday__write_date
msgid "Last Updated on"
msgstr ""

#. module: base_time_window
#: model:ir.model.fields.selection,name:base_time_window.selection__time_weekday__name__0
msgid "Monday"
msgstr ""

#. module: base_time_window
#: model:ir.model.fields,field_description:base_time_window.field_time_weekday__name
msgid "Name"
msgstr ""

#. module: base_time_window
#. odoo-python
#: code:addons/base_time_window/models/time_weekday.py:0
#: model:ir.model.constraint,message:base_time_window.constraint_time_weekday_name_uniq
#, python-format
msgid "Name must be unique"
msgstr ""

#. module: base_time_window
#: model:ir.model.fields.selection,name:base_time_window.selection__time_weekday__name__5
msgid "Saturday"
msgstr ""

#. module: base_time_window
#: model:ir.model.fields,field_description:base_time_window.field_time_weekday__smart_search
#: model:ir.model.fields,field_description:base_time_window.field_time_window_mixin__smart_search
msgid "Smart Search"
msgstr ""

#. module: base_time_window
#: model:ir.model.fields.selection,name:base_time_window.selection__time_weekday__name__6
msgid "Sunday"
msgstr ""

#. module: base_time_window
#: model:ir.model.fields.selection,name:base_time_window.selection__time_weekday__name__3
msgid "Thursday"
msgstr ""

#. module: base_time_window
#: model:ir.model,name:base_time_window.model_time_weekday
msgid "Time Week Day"
msgstr ""

#. module: base_time_window
#: model:ir.model,name:base_time_window.model_time_window_mixin
msgid "Time Window"
msgstr ""

#. module: base_time_window
#: model:ir.model.fields,field_description:base_time_window.field_time_window_mixin__time_window_weekday_ids
msgid "Time Window Weekday"
msgstr ""

#. module: base_time_window
#: model:ir.model.fields,field_description:base_time_window.field_time_window_mixin__time_window_end
msgid "To"
msgstr ""

#. module: base_time_window
#: model:ir.model.fields.selection,name:base_time_window.selection__time_weekday__name__1
msgid "Tuesday"
msgstr ""

#. module: base_time_window
#: model:ir.model.fields.selection,name:base_time_window.selection__time_weekday__name__2
msgid "Wednesday"
msgstr ""

#. module: base_time_window
#. odoo-python
#: code:addons/base_time_window/models/time_window_mixin.py:0
#, python-format
msgid "{days}: From {start} to {end}"
msgstr ""
Loading
Loading