================ 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/16.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-16-0/server-tools-16-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=16.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-block:: 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 `_. 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 `_. Do not contact contributors directly about support or help with technical issues. Credits ======= Authors ~~~~~~~ * ACSONE SA/NV * Camptocamp Contributors ~~~~~~~~~~~~ * Laurent Mignon * Akim Juillerat Trobz * Dung Tran 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 `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.