From 7af41f07c7ef21be618573eb37022b0f81f45b1d Mon Sep 17 00:00:00 2001 From: eloyoussef Date: Wed, 21 Mar 2018 01:36:29 +0100 Subject: [PATCH 01/15] initialisation resource option --- golem_resource_option/__init__.py | 19 +++ golem_resource_option/__manifest__.py | 31 ++++ golem_resource_option/models/__init__.py | 22 +++ .../models/golem_resource.py | 95 ++++++++++++ .../models/golem_resource_option.py | 32 ++++ .../models/golem_resource_timetable.py | 77 +++++++++ .../models/golem_resource_type.py | 32 ++++ .../golem_resource_reservation_views.xml | 146 ++++++++++++++++++ .../views/golem_resource_timetable_views.xml | 38 +++++ .../views/golem_resource_type_views.xml | 54 +++++++ .../views/golem_resource_views.xml | 140 +++++++++++++++++ 11 files changed, 686 insertions(+) create mode 100644 golem_resource_option/__init__.py create mode 100644 golem_resource_option/__manifest__.py create mode 100644 golem_resource_option/models/__init__.py create mode 100644 golem_resource_option/models/golem_resource.py create mode 100644 golem_resource_option/models/golem_resource_option.py create mode 100644 golem_resource_option/models/golem_resource_timetable.py create mode 100644 golem_resource_option/models/golem_resource_type.py create mode 100644 golem_resource_option/views/golem_resource_reservation_views.xml create mode 100644 golem_resource_option/views/golem_resource_timetable_views.xml create mode 100644 golem_resource_option/views/golem_resource_type_views.xml create mode 100644 golem_resource_option/views/golem_resource_views.xml diff --git a/golem_resource_option/__init__.py b/golem_resource_option/__init__.py new file mode 100644 index 0000000..1fced20 --- /dev/null +++ b/golem_resource_option/__init__.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018 Youssef El Ouahby +# Copyright 2018 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from . import models diff --git a/golem_resource_option/__manifest__.py b/golem_resource_option/__manifest__.py new file mode 100644 index 0000000..e40d824 --- /dev/null +++ b/golem_resource_option/__manifest__.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018 Youssef El Ouahby +# Copyright 2018 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +{ + 'name': 'GOLEM resources option', + 'summary': 'GOLEM resources option', + 'description': ''' GOLEM resources option ''', + 'version': '10.0.0.0.0', + 'category': 'GOLEM', + 'author': 'Youssef El Ouahby, Fabien Bourgeois', + 'license': 'AGPL-3', + 'application': True, + 'installable': True, + 'depends': ['golem_resource'], + 'data': [] +} diff --git a/golem_resource_option/models/__init__.py b/golem_resource_option/models/__init__.py new file mode 100644 index 0000000..d3aab06 --- /dev/null +++ b/golem_resource_option/models/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018 Youssef El Ouahby +# Copyright 2018 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from . import golem_resource_type, \ + golem_resource_timetable, \ + golem_resource, \ + golem_resource_reservation diff --git a/golem_resource_option/models/golem_resource.py b/golem_resource_option/models/golem_resource.py new file mode 100644 index 0000000..fba69c5 --- /dev/null +++ b/golem_resource_option/models/golem_resource.py @@ -0,0 +1,95 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018 Youssef El Ouahby +# Copyright 2018 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +""" GOLEM Resources management """ + +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError + + +class GolemResource(models.Model): + """ GOLEM Resource Model """ + _name = 'golem.resource' + _description = 'GOLEM Resource Model' + _inherit = 'mail.thread' + _order = 'name asc' + + name = fields.Char(required=True, index=True) + active = fields.Boolean(default=True) + validation_required = fields.Boolean(default=False, + string='Is validation required ?') + type_id = fields.Many2one('golem.resource.type', + index=True, string='Resource Type') + supervisor_id = fields.Many2one('res.partner', index=True, string='Supervisor') + product_tmpl_id = fields.Many2one('product.template', index=True, + string='Linked product', + help='A generic product can be linked, in ' + 'order to sell reservations (work in ' + 'progress)') + + avaibility_start = fields.Date(required=True, string='Availibility start date') + avaibility_stop = fields.Date(required=True, string='Availibility stop date') + availibility_24_7 = fields.Boolean(string='24/7 availibility') + timetable_ids = fields.One2many('golem.resource.timetable', 'resource_id', + string='Availibility timetable') + reservation_ids = fields.One2many('golem.resource.reservation', 'resource_id', + string='Reservations') + reservation_count = fields.Integer(compute='_compute_reservation_count') + + @api.depends('reservation_ids') + def _compute_reservation_count(self): + for resource in self: + resource.reservation_count = len(resource.reservation_ids) + + @api.multi + def reservation_calendar(self): + """ current resource reservation calendar """ + self.ensure_one() + return { + 'name': _('Resource Reservation'), + 'view_mode': 'calendar,tree,form', + 'res_model': 'golem.resource.reservation', + 'context': {'search_default_resource_id': self[0].id}, + 'type': 'ir.actions.act_window' + } + + @api.multi + def reserveration_list(self): + """ current resource reservation list """ + self.ensure_one() + return { + 'name': _('Resource Reservation list'), + 'view_mode': 'tree,form,calendar', + 'res_model': 'golem.resource.reservation', + 'context': {'search_default_resource_id': self[0].id}, + 'type': 'ir.actions.act_window' + } + + @api.multi + def active_toggle(self): + """ Toggles active boolean """ + for resource in self: + resource.active = not resource.active + + @api.constrains('avaibility_start', 'avaibility_stop') + def _check_date_consistency(self): + """ Checks date consistency """ + for resource in self: + if resource.avaibility_stop <= resource.avaibility_start: + raise ValidationError(_('End availibility should be after than ' + 'start availibility')) diff --git a/golem_resource_option/models/golem_resource_option.py b/golem_resource_option/models/golem_resource_option.py new file mode 100644 index 0000000..b9905b9 --- /dev/null +++ b/golem_resource_option/models/golem_resource_option.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018 Youssef El Ouahby +# Copyright 2018 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +""" GOLEM Resource Option """ + + +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError + + +class GolemResourceOption(models.Model): + """ GOLEM Resource Option Model """ + _name = 'golem.resource.option' + _description = 'GOLEM Reservation Model' + + name = fields.Char() + resource_id = fields.Many2one('golem.resource') diff --git a/golem_resource_option/models/golem_resource_timetable.py b/golem_resource_option/models/golem_resource_timetable.py new file mode 100644 index 0000000..4b6acf4 --- /dev/null +++ b/golem_resource_option/models/golem_resource_timetable.py @@ -0,0 +1,77 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018 Youssef El Ouahby +# Copyright 2018 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +""" GOLEM Resource Timetable """ + +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError + +class GolemTimetable(models.Model): + """ Golem Timetable """ + _name = "golem.resource.timetable" + _description = "Golem Timetable" + _rec_name = 'weekday' + _order = 'weekday asc,time_start asc' + + resource_id = fields.Many2one('golem.resource', required=True, + string='Linked resource') + weekday = fields.Selection([('0', _('Monday')), + ('1', _('Tuesday')), + ('2', _('Wednesday')), + ('3', _('Thursday')), + ('4', _('Friday')), + ('5', _('Saturday')), + ('6', _('Sunday'))], required=True) + time_start = fields.Float(string='Start') + time_stop = fields.Float(string='Stop') + availibility_24 = fields.Boolean(string="All day") + + @api.onchange('availibility_24') + def onchange_availibility_24(self): + """ fill time_start et time_stop if availibility_24 is True """ + for line in self: + if line.availibility_24: + line.update({'time_start': 0.0, 'time_stop': 23.98}) + + @api.onchange('time_start') + def onchange_time_start(self): + """ Propose automatically stop hour after start hour had been filled """ + for line in self: + if line.time_start and not line.time_stop: + line.time_stop = line.time_start + 1 + + @api.constrains('availibility_24') + def check_avaibility24(self): + """ Checks hour consistency against avaibility 24 """ + for line in self: + if line.availibility_24: + line.write({'time_start': 0.0, 'time_stop': 23.98}) + + @api.constrains('time_start', 'time_stop') + def _check_time_consistency(self): + """ Checks time consistency """ + for line in self: + if line.time_stop <= line.time_start: + raise ValidationError(_('End time should be after than start time')) + + @api.constrains('time_start', 'time_stop') + def _check_time_all_day(self): + """ Checks time all day availibility """ + for timetable in self: + if timetable.time_stop > 23.98 and timetable.time_start == 0: + timetable.write({'availibility_24': True}) diff --git a/golem_resource_option/models/golem_resource_type.py b/golem_resource_option/models/golem_resource_type.py new file mode 100644 index 0000000..c13cd02 --- /dev/null +++ b/golem_resource_option/models/golem_resource_type.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018 Youssef El Ouahby +# Copyright 2018 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +""" GOLEM Resource Type """ + +from odoo import models, fields + +class GolemResourceType(models.Model): + """ GOLEM Resource Type """ + _name = 'golem.resource.type' + _description = 'GOLEM Resource Type' + _order = 'name asc' + _sql_constraints = [('golem_resource_type_name_uniq', + 'UNIQUE (name)', + 'Resource type must be unique.')] + + name = fields.Char(string='Resource Type', required=True, index=True) diff --git a/golem_resource_option/views/golem_resource_reservation_views.xml b/golem_resource_option/views/golem_resource_reservation_views.xml new file mode 100644 index 0000000..03c2063 --- /dev/null +++ b/golem_resource_option/views/golem_resource_reservation_views.xml @@ -0,0 +1,146 @@ + + + + + + + + GOLEM Resource Reservation Calendar + golem.resource.reservation + + + + + + + + + + + + GOLEM Resource Reservation Tree + golem.resource.reservation + + + + + + + + + + + + + + GOLEM Resource Reservation Form + golem.resource.reservation + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+
+ + + + GOLEM Resource Reservation Search + golem.resource.reservation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
diff --git a/golem_resource_option/views/golem_resource_timetable_views.xml b/golem_resource_option/views/golem_resource_timetable_views.xml new file mode 100644 index 0000000..fa4da10 --- /dev/null +++ b/golem_resource_option/views/golem_resource_timetable_views.xml @@ -0,0 +1,38 @@ + + + + + + + GOLEM Resource Timetable Tree + golem.resource.timetable + + + + + + + + + + + + diff --git a/golem_resource_option/views/golem_resource_type_views.xml b/golem_resource_option/views/golem_resource_type_views.xml new file mode 100644 index 0000000..cc94a87 --- /dev/null +++ b/golem_resource_option/views/golem_resource_type_views.xml @@ -0,0 +1,54 @@ + + + + + + + + GOLEM Resource Type Tree + golem.resource.type + + + + + + + + + + GOLEM Resource Type Search + golem.resource.type + + + + + + + + + + + + + + + diff --git a/golem_resource_option/views/golem_resource_views.xml b/golem_resource_option/views/golem_resource_views.xml new file mode 100644 index 0000000..7fb2a25 --- /dev/null +++ b/golem_resource_option/views/golem_resource_views.xml @@ -0,0 +1,140 @@ + + + + + + + + GOLEM Resource Tree + golem.resource + + + + + + + + + + + + + + + + GOLEM Resource Form + golem.resource + +
+ +
+ + +
+ + + + + + + + + + + + + + + + + + +

+ Please save the resource before fixing the timetable availibility" +

+ + + +
+
+
+ + +
+
+
+
+ + + + GOLEM Resource search + golem.resource + + + + + + + + + + + + + + + + + + + + + + + + + +
+
From 1967ab5ced19ae50781a0d26ca68ca7107601d3d Mon Sep 17 00:00:00 2001 From: eloyoussef Date: Wed, 21 Mar 2018 11:44:53 +0100 Subject: [PATCH 02/15] defintion de model pour selection et option --- golem_resource/models/golem_resource.py | 2 + .../models/golem_resource_option.py | 32 ++++++++++++++++ .../models/golem_resource_option_selection.py | 37 +++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 golem_resource/models/golem_resource_option.py create mode 100644 golem_resource/models/golem_resource_option_selection.py diff --git a/golem_resource/models/golem_resource.py b/golem_resource/models/golem_resource.py index fba69c5..b6f49e5 100644 --- a/golem_resource/models/golem_resource.py +++ b/golem_resource/models/golem_resource.py @@ -50,6 +50,8 @@ class GolemResource(models.Model): reservation_ids = fields.One2many('golem.resource.reservation', 'resource_id', string='Reservations') reservation_count = fields.Integer(compute='_compute_reservation_count') + option_ids = fields.One2many('golem.resource.option', 'resource_id', + string='Option list') @api.depends('reservation_ids') def _compute_reservation_count(self): diff --git a/golem_resource/models/golem_resource_option.py b/golem_resource/models/golem_resource_option.py new file mode 100644 index 0000000..b9905b9 --- /dev/null +++ b/golem_resource/models/golem_resource_option.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018 Youssef El Ouahby +# Copyright 2018 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +""" GOLEM Resource Option """ + + +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError + + +class GolemResourceOption(models.Model): + """ GOLEM Resource Option Model """ + _name = 'golem.resource.option' + _description = 'GOLEM Reservation Model' + + name = fields.Char() + resource_id = fields.Many2one('golem.resource') diff --git a/golem_resource/models/golem_resource_option_selection.py b/golem_resource/models/golem_resource_option_selection.py new file mode 100644 index 0000000..64f3db8 --- /dev/null +++ b/golem_resource/models/golem_resource_option_selection.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018 Youssef El Ouahby +# Copyright 2018 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +""" GOLEM Resource Option Selection""" + + +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError + + +class GolemResourceOptionSelection(models.Model): + """ GOLEM Resource Option SelectionModel """ + _name = 'golem.resource.option.selection' + _description = 'GOLEM Resource option selection Model' + + resource_id = fields.Many2one('golem.resource', 'Resource') + option_id = fields.Many2one('golem.resource.option', 'Option') + reservation_id = fields.Many2one('golem.resource.reservation', 'Reservation') + + _sql_constraints = [ + ('unique_selection', "UNIQUE(resource_id, option_id, reservation_id)", + _("Not allowed, a reservation with same option and resource already exists"))] From 1f295ec9c7149a99c0515623e400e0cc830663e4 Mon Sep 17 00:00:00 2001 From: eloyoussef Date: Thu, 22 Mar 2018 11:32:14 +0100 Subject: [PATCH 03/15] Ajout des contraintes et des vues necessaires --- golem_resource/__manifest__.py | 2 + golem_resource/models/__init__.py | 4 +- .../models/golem_resource_option.py | 9 ++--- .../models/golem_resource_option_selection.py | 12 ++++-- .../models/golem_resource_reservation.py | 6 ++- .../golem_resource_option_selection_views.xml | 38 +++++++++++++++++++ .../views/golem_resource_option_views.xml | 36 ++++++++++++++++++ .../golem_resource_reservation_views.xml | 8 ++++ golem_resource/views/golem_resource_views.xml | 6 ++- 9 files changed, 108 insertions(+), 13 deletions(-) create mode 100644 golem_resource/views/golem_resource_option_selection_views.xml create mode 100644 golem_resource/views/golem_resource_option_views.xml diff --git a/golem_resource/__manifest__.py b/golem_resource/__manifest__.py index 7fec3ab..4f6c6ec 100644 --- a/golem_resource/__manifest__.py +++ b/golem_resource/__manifest__.py @@ -31,6 +31,8 @@ 'views/golem_resource_type_views.xml', 'views/golem_resource_reservation_views.xml', 'views/golem_resource_timetable_views.xml', + 'views/golem_resource_option_views.xml', + 'views/golem_resource_option_selection_views.xml', 'wizard/golem_reservation_rejection_views.xml', 'security/ir.model.access.csv'] } diff --git a/golem_resource/models/__init__.py b/golem_resource/models/__init__.py index d3aab06..7c34aaf 100644 --- a/golem_resource/models/__init__.py +++ b/golem_resource/models/__init__.py @@ -19,4 +19,6 @@ from . import golem_resource_type, \ golem_resource_timetable, \ golem_resource, \ - golem_resource_reservation + golem_resource_reservation, \ + golem_resource_option, \ + golem_resource_option_selection diff --git a/golem_resource/models/golem_resource_option.py b/golem_resource/models/golem_resource_option.py index b9905b9..3350a22 100644 --- a/golem_resource/models/golem_resource_option.py +++ b/golem_resource/models/golem_resource_option.py @@ -19,14 +19,13 @@ """ GOLEM Resource Option """ -from odoo import models, fields, api, _ -from odoo.exceptions import ValidationError +from odoo import models, fields class GolemResourceOption(models.Model): """ GOLEM Resource Option Model """ _name = 'golem.resource.option' - _description = 'GOLEM Reservation Model' + _description = 'GOLEM Reservation Option Model' - name = fields.Char() - resource_id = fields.Many2one('golem.resource') + name = fields.Char("Option") + resource_id = fields.Many2one('golem.resource', "Resource") diff --git a/golem_resource/models/golem_resource_option_selection.py b/golem_resource/models/golem_resource_option_selection.py index 64f3db8..c36b1a9 100644 --- a/golem_resource/models/golem_resource_option_selection.py +++ b/golem_resource/models/golem_resource_option_selection.py @@ -20,7 +20,6 @@ from odoo import models, fields, api, _ -from odoo.exceptions import ValidationError class GolemResourceOptionSelection(models.Model): @@ -28,10 +27,17 @@ class GolemResourceOptionSelection(models.Model): _name = 'golem.resource.option.selection' _description = 'GOLEM Resource option selection Model' - resource_id = fields.Many2one('golem.resource', 'Resource') - option_id = fields.Many2one('golem.resource.option', 'Option') + name = fields.Char(compute="_compute_name") + option_id = fields.Many2one('golem.resource.option', 'Option', + domain="[('resource_id', '=', resource_id)]") + resource_id = fields.Many2one(related="reservation_id.resource_id") reservation_id = fields.Many2one('golem.resource.reservation', 'Reservation') + @api.multi + def _compute_name(self): + for selection in self: + selection.name = "{}/{}".format(selection.resource_id.name, selection.option_id.name) + _sql_constraints = [ ('unique_selection', "UNIQUE(resource_id, option_id, reservation_id)", _("Not allowed, a reservation with same option and resource already exists"))] diff --git a/golem_resource/models/golem_resource_reservation.py b/golem_resource/models/golem_resource_reservation.py index 8a4cd74..c511951 100644 --- a/golem_resource/models/golem_resource_reservation.py +++ b/golem_resource/models/golem_resource_reservation.py @@ -18,7 +18,7 @@ """ GOLEM Resource Reservation """ -from math import modf + from datetime import timedelta from odoo import models, fields, api, _ from odoo.exceptions import ValidationError @@ -32,7 +32,6 @@ class GolemResourceReservation(models.Model): _order = 'day_start desc, hour_start asc' name = fields.Char(compute='_compute_name', store=True) - # TODO: handle multiple days reservation date_start = fields.Datetime('Start date', required=True, index=True, readonly=True, states={'draft': [('readonly', False)]}) @@ -67,6 +66,9 @@ class GolemResourceReservation(models.Model): default='draft', track_visibility='onchange') rejection_reason = fields.Text(readonly=True, track_visibility='onchange') + resource_option_ids = fields.One2many(related="resource_id.option_ids") + selected_option_ids = fields.One2many('golem.resource.option.selection', 'reservation_id', + string="Selected option") @api.depends('resource_id', 'date_start') def _compute_name(self): diff --git a/golem_resource/views/golem_resource_option_selection_views.xml b/golem_resource/views/golem_resource_option_selection_views.xml new file mode 100644 index 0000000..7d1fa9d --- /dev/null +++ b/golem_resource/views/golem_resource_option_selection_views.xml @@ -0,0 +1,38 @@ + + + + + + + + GOLEM Resource Option Selection Form + golem.resource.option.selection + +
+ + + + + + +
+
+
+
+
diff --git a/golem_resource/views/golem_resource_option_views.xml b/golem_resource/views/golem_resource_option_views.xml new file mode 100644 index 0000000..8f9665b --- /dev/null +++ b/golem_resource/views/golem_resource_option_views.xml @@ -0,0 +1,36 @@ + + + + + + + + GOLEM Resource Option Form + golem.resource.option + +
+ + + + +
+
+
+
+
diff --git a/golem_resource/views/golem_resource_reservation_views.xml b/golem_resource/views/golem_resource_reservation_views.xml index 03c2063..56a6226 100644 --- a/golem_resource/views/golem_resource_reservation_views.xml +++ b/golem_resource/views/golem_resource_reservation_views.xml @@ -73,6 +73,7 @@ along with this program. If not, see . + @@ -89,6 +90,13 @@ along with this program. If not, see . placeholder="Notes, optional subject for the reservation, reason" /> + + + + + diff --git a/golem_resource/views/golem_resource_views.xml b/golem_resource/views/golem_resource_views.xml index 7fb2a25..b0bdfcf 100644 --- a/golem_resource/views/golem_resource_views.xml +++ b/golem_resource/views/golem_resource_views.xml @@ -62,10 +62,12 @@ along with this program. If not, see . + + - - + From 73e92ca55185cfa981aebfda48c5e2855dc429aa Mon Sep 17 00:00:00 2001 From: eloyoussef Date: Tue, 27 Mar 2018 15:20:01 +0200 Subject: [PATCH 04/15] =?UTF-8?q?deplacement=20des=20fonctionnalit=C3=A9s?= =?UTF-8?q?=20sur=20un=20nouveau=20module?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- golem_resource_option/__manifest__.py | 6 +- golem_resource_option/models/__init__.py | 4 +- .../models/golem_resource.py | 73 +--------- .../models/golem_resource_option.py | 9 +- .../models/golem_resource_option_selection.py | 43 ++++++ ..._type.py => golem_resource_reservation.py} | 23 +-- .../models/golem_resource_timetable.py | 77 ---------- ...golem_resource_option_selection_views.xml} | 26 ++-- .../views/golem_resource_option_views.xml | 36 +++++ .../golem_resource_reservation_views.xml | 131 ++---------------- .../views/golem_resource_type_views.xml | 54 -------- .../views/golem_resource_views.xml | 120 +--------------- 12 files changed, 138 insertions(+), 464 deletions(-) create mode 100644 golem_resource_option/models/golem_resource_option_selection.py rename golem_resource_option/models/{golem_resource_type.py => golem_resource_reservation.py} (60%) delete mode 100644 golem_resource_option/models/golem_resource_timetable.py rename golem_resource_option/views/{golem_resource_timetable_views.xml => golem_resource_option_selection_views.xml} (59%) create mode 100644 golem_resource_option/views/golem_resource_option_views.xml delete mode 100644 golem_resource_option/views/golem_resource_type_views.xml diff --git a/golem_resource_option/__manifest__.py b/golem_resource_option/__manifest__.py index e40d824..da1651b 100644 --- a/golem_resource_option/__manifest__.py +++ b/golem_resource_option/__manifest__.py @@ -27,5 +27,9 @@ 'application': True, 'installable': True, 'depends': ['golem_resource'], - 'data': [] + 'data': [ + 'views/golem_resource_views.xml', + 'views/golem_resource_reservation_views.xml', + 'views/golem_resource_option_views.xml', + 'views/golem_resource_option_selection_views.xml'] } diff --git a/golem_resource_option/models/__init__.py b/golem_resource_option/models/__init__.py index d3aab06..5692f80 100644 --- a/golem_resource_option/models/__init__.py +++ b/golem_resource_option/models/__init__.py @@ -16,7 +16,7 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from . import golem_resource_type, \ - golem_resource_timetable, \ +from . import golem_resource_option, \ + golem_resource_option_selection, \ golem_resource, \ golem_resource_reservation diff --git a/golem_resource_option/models/golem_resource.py b/golem_resource_option/models/golem_resource.py index fba69c5..1852270 100644 --- a/golem_resource_option/models/golem_resource.py +++ b/golem_resource_option/models/golem_resource.py @@ -16,7 +16,7 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -""" GOLEM Resources management """ +""" GOLEM Resources Option Management """ from odoo import models, fields, api, _ from odoo.exceptions import ValidationError @@ -24,72 +24,7 @@ from odoo.exceptions import ValidationError class GolemResource(models.Model): """ GOLEM Resource Model """ - _name = 'golem.resource' - _description = 'GOLEM Resource Model' - _inherit = 'mail.thread' - _order = 'name asc' + _inherit = 'golem.resource' - name = fields.Char(required=True, index=True) - active = fields.Boolean(default=True) - validation_required = fields.Boolean(default=False, - string='Is validation required ?') - type_id = fields.Many2one('golem.resource.type', - index=True, string='Resource Type') - supervisor_id = fields.Many2one('res.partner', index=True, string='Supervisor') - product_tmpl_id = fields.Many2one('product.template', index=True, - string='Linked product', - help='A generic product can be linked, in ' - 'order to sell reservations (work in ' - 'progress)') - - avaibility_start = fields.Date(required=True, string='Availibility start date') - avaibility_stop = fields.Date(required=True, string='Availibility stop date') - availibility_24_7 = fields.Boolean(string='24/7 availibility') - timetable_ids = fields.One2many('golem.resource.timetable', 'resource_id', - string='Availibility timetable') - reservation_ids = fields.One2many('golem.resource.reservation', 'resource_id', - string='Reservations') - reservation_count = fields.Integer(compute='_compute_reservation_count') - - @api.depends('reservation_ids') - def _compute_reservation_count(self): - for resource in self: - resource.reservation_count = len(resource.reservation_ids) - - @api.multi - def reservation_calendar(self): - """ current resource reservation calendar """ - self.ensure_one() - return { - 'name': _('Resource Reservation'), - 'view_mode': 'calendar,tree,form', - 'res_model': 'golem.resource.reservation', - 'context': {'search_default_resource_id': self[0].id}, - 'type': 'ir.actions.act_window' - } - - @api.multi - def reserveration_list(self): - """ current resource reservation list """ - self.ensure_one() - return { - 'name': _('Resource Reservation list'), - 'view_mode': 'tree,form,calendar', - 'res_model': 'golem.resource.reservation', - 'context': {'search_default_resource_id': self[0].id}, - 'type': 'ir.actions.act_window' - } - - @api.multi - def active_toggle(self): - """ Toggles active boolean """ - for resource in self: - resource.active = not resource.active - - @api.constrains('avaibility_start', 'avaibility_stop') - def _check_date_consistency(self): - """ Checks date consistency """ - for resource in self: - if resource.avaibility_stop <= resource.avaibility_start: - raise ValidationError(_('End availibility should be after than ' - 'start availibility')) + option_ids = fields.One2many('golem.resource.option', 'resource_id', + string='Option list') diff --git a/golem_resource_option/models/golem_resource_option.py b/golem_resource_option/models/golem_resource_option.py index b9905b9..3350a22 100644 --- a/golem_resource_option/models/golem_resource_option.py +++ b/golem_resource_option/models/golem_resource_option.py @@ -19,14 +19,13 @@ """ GOLEM Resource Option """ -from odoo import models, fields, api, _ -from odoo.exceptions import ValidationError +from odoo import models, fields class GolemResourceOption(models.Model): """ GOLEM Resource Option Model """ _name = 'golem.resource.option' - _description = 'GOLEM Reservation Model' + _description = 'GOLEM Reservation Option Model' - name = fields.Char() - resource_id = fields.Many2one('golem.resource') + name = fields.Char("Option") + resource_id = fields.Many2one('golem.resource', "Resource") diff --git a/golem_resource_option/models/golem_resource_option_selection.py b/golem_resource_option/models/golem_resource_option_selection.py new file mode 100644 index 0000000..c36b1a9 --- /dev/null +++ b/golem_resource_option/models/golem_resource_option_selection.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018 Youssef El Ouahby +# Copyright 2018 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +""" GOLEM Resource Option Selection""" + + +from odoo import models, fields, api, _ + + +class GolemResourceOptionSelection(models.Model): + """ GOLEM Resource Option SelectionModel """ + _name = 'golem.resource.option.selection' + _description = 'GOLEM Resource option selection Model' + + name = fields.Char(compute="_compute_name") + option_id = fields.Many2one('golem.resource.option', 'Option', + domain="[('resource_id', '=', resource_id)]") + resource_id = fields.Many2one(related="reservation_id.resource_id") + reservation_id = fields.Many2one('golem.resource.reservation', 'Reservation') + + @api.multi + def _compute_name(self): + for selection in self: + selection.name = "{}/{}".format(selection.resource_id.name, selection.option_id.name) + + _sql_constraints = [ + ('unique_selection', "UNIQUE(resource_id, option_id, reservation_id)", + _("Not allowed, a reservation with same option and resource already exists"))] diff --git a/golem_resource_option/models/golem_resource_type.py b/golem_resource_option/models/golem_resource_reservation.py similarity index 60% rename from golem_resource_option/models/golem_resource_type.py rename to golem_resource_option/models/golem_resource_reservation.py index c13cd02..fa35285 100644 --- a/golem_resource_option/models/golem_resource_type.py +++ b/golem_resource_option/models/golem_resource_reservation.py @@ -16,17 +16,18 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -""" GOLEM Resource Type """ +""" GOLEM Resource Reservation """ -from odoo import models, fields -class GolemResourceType(models.Model): - """ GOLEM Resource Type """ - _name = 'golem.resource.type' - _description = 'GOLEM Resource Type' - _order = 'name asc' - _sql_constraints = [('golem_resource_type_name_uniq', - 'UNIQUE (name)', - 'Resource type must be unique.')] +from datetime import timedelta +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError - name = fields.Char(string='Resource Type', required=True, index=True) + +class GolemResourceReservation(models.Model): + """ GOLEM Resource Reservation Option Model """ + _inherit = 'golem.resource.reservation' + + resource_option_ids = fields.One2many(related="resource_id.option_ids") + selected_option_ids = fields.One2many('golem.resource.option.selection', 'reservation_id', + string="Selected option") diff --git a/golem_resource_option/models/golem_resource_timetable.py b/golem_resource_option/models/golem_resource_timetable.py deleted file mode 100644 index 4b6acf4..0000000 --- a/golem_resource_option/models/golem_resource_timetable.py +++ /dev/null @@ -1,77 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright 2018 Youssef El Ouahby -# Copyright 2018 Fabien Bourgeois -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -""" GOLEM Resource Timetable """ - -from odoo import models, fields, api, _ -from odoo.exceptions import ValidationError - -class GolemTimetable(models.Model): - """ Golem Timetable """ - _name = "golem.resource.timetable" - _description = "Golem Timetable" - _rec_name = 'weekday' - _order = 'weekday asc,time_start asc' - - resource_id = fields.Many2one('golem.resource', required=True, - string='Linked resource') - weekday = fields.Selection([('0', _('Monday')), - ('1', _('Tuesday')), - ('2', _('Wednesday')), - ('3', _('Thursday')), - ('4', _('Friday')), - ('5', _('Saturday')), - ('6', _('Sunday'))], required=True) - time_start = fields.Float(string='Start') - time_stop = fields.Float(string='Stop') - availibility_24 = fields.Boolean(string="All day") - - @api.onchange('availibility_24') - def onchange_availibility_24(self): - """ fill time_start et time_stop if availibility_24 is True """ - for line in self: - if line.availibility_24: - line.update({'time_start': 0.0, 'time_stop': 23.98}) - - @api.onchange('time_start') - def onchange_time_start(self): - """ Propose automatically stop hour after start hour had been filled """ - for line in self: - if line.time_start and not line.time_stop: - line.time_stop = line.time_start + 1 - - @api.constrains('availibility_24') - def check_avaibility24(self): - """ Checks hour consistency against avaibility 24 """ - for line in self: - if line.availibility_24: - line.write({'time_start': 0.0, 'time_stop': 23.98}) - - @api.constrains('time_start', 'time_stop') - def _check_time_consistency(self): - """ Checks time consistency """ - for line in self: - if line.time_stop <= line.time_start: - raise ValidationError(_('End time should be after than start time')) - - @api.constrains('time_start', 'time_stop') - def _check_time_all_day(self): - """ Checks time all day availibility """ - for timetable in self: - if timetable.time_stop > 23.98 and timetable.time_start == 0: - timetable.write({'availibility_24': True}) diff --git a/golem_resource_option/views/golem_resource_timetable_views.xml b/golem_resource_option/views/golem_resource_option_selection_views.xml similarity index 59% rename from golem_resource_option/views/golem_resource_timetable_views.xml rename to golem_resource_option/views/golem_resource_option_selection_views.xml index fa4da10..7d1fa9d 100644 --- a/golem_resource_option/views/golem_resource_timetable_views.xml +++ b/golem_resource_option/views/golem_resource_option_selection_views.xml @@ -18,20 +18,20 @@ along with this program. If not, see . --> - - - GOLEM Resource Timetable Tree - golem.resource.timetable + + + + GOLEM Resource Option Selection Form + golem.resource.option.selection - - - - - - - +
+ + + + + + +
diff --git a/golem_resource_option/views/golem_resource_option_views.xml b/golem_resource_option/views/golem_resource_option_views.xml new file mode 100644 index 0000000..8f9665b --- /dev/null +++ b/golem_resource_option/views/golem_resource_option_views.xml @@ -0,0 +1,36 @@ + + + + + + + + GOLEM Resource Option Form + golem.resource.option + +
+ + + + +
+
+
+
+
diff --git a/golem_resource_option/views/golem_resource_reservation_views.xml b/golem_resource_option/views/golem_resource_reservation_views.xml index 03c2063..82301a0 100644 --- a/golem_resource_option/views/golem_resource_reservation_views.xml +++ b/golem_resource_option/views/golem_resource_reservation_views.xml @@ -18,129 +18,22 @@ along with this program. If not, see . --> - - - - GOLEM Resource Reservation Calendar - golem.resource.reservation - - - - - - - - - - - - GOLEM Resource Reservation Tree - golem.resource.reservation - - - - - - - - - - - - - GOLEM Resource Reservation Form + + GOLEM Resource Reservation Option Extension Form golem.resource.reservation + -
-
-
- - - - - - - - - - - - - - - - - - - - - - -
- - -
-
+ + + + + + +
- - - - GOLEM Resource Reservation Search - golem.resource.reservation - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/golem_resource_option/views/golem_resource_type_views.xml b/golem_resource_option/views/golem_resource_type_views.xml deleted file mode 100644 index cc94a87..0000000 --- a/golem_resource_option/views/golem_resource_type_views.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - GOLEM Resource Type Tree - golem.resource.type - - - - - - - - - - GOLEM Resource Type Search - golem.resource.type - - - - - - - - - - - - - - - diff --git a/golem_resource_option/views/golem_resource_views.xml b/golem_resource_option/views/golem_resource_views.xml index 7fb2a25..03c6bc1 100644 --- a/golem_resource_option/views/golem_resource_views.xml +++ b/golem_resource_option/views/golem_resource_views.xml @@ -18,123 +18,17 @@ along with this program. If not, see . --> - - - - GOLEM Resource Tree - golem.resource - - - - - - - - - - - - - - - GOLEM Resource Form + + GOLEM Resource Option Extention Form golem.resource + -
- -
- - -
- - - - - - - - - - - - - - - - - - -

- Please save the resource before fixing the timetable availibility" -

- - - -
-
-
- - -
-
+ + +
- - - - GOLEM Resource search - golem.resource - - - - - - - - - - - - - - - - - - - - - - - - -
From 2353ffeeeb8f5d493efe273b12247d033160da06 Mon Sep 17 00:00:00 2001 From: eloyoussef Date: Tue, 27 Mar 2018 15:46:18 +0200 Subject: [PATCH 05/15] =?UTF-8?q?mettre=20=C3=A0=20jours=20resource?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- golem_resource/__manifest__.py | 2 - golem_resource/models/__init__.py | 4 +- golem_resource/models/golem_resource.py | 2 - .../models/golem_resource_option.py | 31 ------------- .../models/golem_resource_option_selection.py | 43 ------------------- .../models/golem_resource_reservation.py | 3 -- .../golem_resource_option_selection_views.xml | 38 ---------------- .../views/golem_resource_option_views.xml | 36 ---------------- .../golem_resource_reservation_views.xml | 8 ---- golem_resource/views/golem_resource_views.xml | 6 +-- 10 files changed, 3 insertions(+), 170 deletions(-) delete mode 100644 golem_resource/models/golem_resource_option.py delete mode 100644 golem_resource/models/golem_resource_option_selection.py delete mode 100644 golem_resource/views/golem_resource_option_selection_views.xml delete mode 100644 golem_resource/views/golem_resource_option_views.xml diff --git a/golem_resource/__manifest__.py b/golem_resource/__manifest__.py index f4ef80f..155cd46 100644 --- a/golem_resource/__manifest__.py +++ b/golem_resource/__manifest__.py @@ -31,8 +31,6 @@ 'views/golem_resource_type_views.xml', 'views/golem_resource_reservation_views.xml', 'views/golem_resource_timetable_views.xml', - 'views/golem_resource_option_views.xml', - 'views/golem_resource_option_selection_views.xml', 'wizard/golem_reservation_rejection_views.xml', 'security/ir.model.access.csv'] } diff --git a/golem_resource/models/__init__.py b/golem_resource/models/__init__.py index 7c34aaf..d3aab06 100644 --- a/golem_resource/models/__init__.py +++ b/golem_resource/models/__init__.py @@ -19,6 +19,4 @@ from . import golem_resource_type, \ golem_resource_timetable, \ golem_resource, \ - golem_resource_reservation, \ - golem_resource_option, \ - golem_resource_option_selection + golem_resource_reservation diff --git a/golem_resource/models/golem_resource.py b/golem_resource/models/golem_resource.py index b6f49e5..fba69c5 100644 --- a/golem_resource/models/golem_resource.py +++ b/golem_resource/models/golem_resource.py @@ -50,8 +50,6 @@ class GolemResource(models.Model): reservation_ids = fields.One2many('golem.resource.reservation', 'resource_id', string='Reservations') reservation_count = fields.Integer(compute='_compute_reservation_count') - option_ids = fields.One2many('golem.resource.option', 'resource_id', - string='Option list') @api.depends('reservation_ids') def _compute_reservation_count(self): diff --git a/golem_resource/models/golem_resource_option.py b/golem_resource/models/golem_resource_option.py deleted file mode 100644 index 3350a22..0000000 --- a/golem_resource/models/golem_resource_option.py +++ /dev/null @@ -1,31 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright 2018 Youssef El Ouahby -# Copyright 2018 Fabien Bourgeois -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -""" GOLEM Resource Option """ - - -from odoo import models, fields - - -class GolemResourceOption(models.Model): - """ GOLEM Resource Option Model """ - _name = 'golem.resource.option' - _description = 'GOLEM Reservation Option Model' - - name = fields.Char("Option") - resource_id = fields.Many2one('golem.resource', "Resource") diff --git a/golem_resource/models/golem_resource_option_selection.py b/golem_resource/models/golem_resource_option_selection.py deleted file mode 100644 index c36b1a9..0000000 --- a/golem_resource/models/golem_resource_option_selection.py +++ /dev/null @@ -1,43 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright 2018 Youssef El Ouahby -# Copyright 2018 Fabien Bourgeois -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -""" GOLEM Resource Option Selection""" - - -from odoo import models, fields, api, _ - - -class GolemResourceOptionSelection(models.Model): - """ GOLEM Resource Option SelectionModel """ - _name = 'golem.resource.option.selection' - _description = 'GOLEM Resource option selection Model' - - name = fields.Char(compute="_compute_name") - option_id = fields.Many2one('golem.resource.option', 'Option', - domain="[('resource_id', '=', resource_id)]") - resource_id = fields.Many2one(related="reservation_id.resource_id") - reservation_id = fields.Many2one('golem.resource.reservation', 'Reservation') - - @api.multi - def _compute_name(self): - for selection in self: - selection.name = "{}/{}".format(selection.resource_id.name, selection.option_id.name) - - _sql_constraints = [ - ('unique_selection', "UNIQUE(resource_id, option_id, reservation_id)", - _("Not allowed, a reservation with same option and resource already exists"))] diff --git a/golem_resource/models/golem_resource_reservation.py b/golem_resource/models/golem_resource_reservation.py index c511951..d97fb02 100644 --- a/golem_resource/models/golem_resource_reservation.py +++ b/golem_resource/models/golem_resource_reservation.py @@ -66,9 +66,6 @@ class GolemResourceReservation(models.Model): default='draft', track_visibility='onchange') rejection_reason = fields.Text(readonly=True, track_visibility='onchange') - resource_option_ids = fields.One2many(related="resource_id.option_ids") - selected_option_ids = fields.One2many('golem.resource.option.selection', 'reservation_id', - string="Selected option") @api.depends('resource_id', 'date_start') def _compute_name(self): diff --git a/golem_resource/views/golem_resource_option_selection_views.xml b/golem_resource/views/golem_resource_option_selection_views.xml deleted file mode 100644 index 7d1fa9d..0000000 --- a/golem_resource/views/golem_resource_option_selection_views.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - GOLEM Resource Option Selection Form - golem.resource.option.selection - -
- - - - - - -
-
-
-
-
diff --git a/golem_resource/views/golem_resource_option_views.xml b/golem_resource/views/golem_resource_option_views.xml deleted file mode 100644 index 8f9665b..0000000 --- a/golem_resource/views/golem_resource_option_views.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - GOLEM Resource Option Form - golem.resource.option - -
- - - - -
-
-
-
-
diff --git a/golem_resource/views/golem_resource_reservation_views.xml b/golem_resource/views/golem_resource_reservation_views.xml index d4d56c5..03f05e3 100644 --- a/golem_resource/views/golem_resource_reservation_views.xml +++ b/golem_resource/views/golem_resource_reservation_views.xml @@ -77,7 +77,6 @@ along with this program. If not, see . - @@ -94,13 +93,6 @@ along with this program. If not, see . placeholder="Notes, optional subject for the reservation, reason" /> - - - - -
diff --git a/golem_resource/views/golem_resource_views.xml b/golem_resource/views/golem_resource_views.xml index 24fbb88..9120e28 100644 --- a/golem_resource/views/golem_resource_views.xml +++ b/golem_resource/views/golem_resource_views.xml @@ -62,12 +62,10 @@ along with this program. If not, see . - - - + + From 1e78c30604b5e07d8fd9562e2b5097d9cad6f40a Mon Sep 17 00:00:00 2001 From: eloyoussef Date: Tue, 27 Mar 2018 15:55:33 +0200 Subject: [PATCH 06/15] version golem_ressource stable --- golem_resource/models/golem_resource_reservation.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/golem_resource/models/golem_resource_reservation.py b/golem_resource/models/golem_resource_reservation.py index d97fb02..8a4cd74 100644 --- a/golem_resource/models/golem_resource_reservation.py +++ b/golem_resource/models/golem_resource_reservation.py @@ -18,7 +18,7 @@ """ GOLEM Resource Reservation """ - +from math import modf from datetime import timedelta from odoo import models, fields, api, _ from odoo.exceptions import ValidationError @@ -32,6 +32,7 @@ class GolemResourceReservation(models.Model): _order = 'day_start desc, hour_start asc' name = fields.Char(compute='_compute_name', store=True) + # TODO: handle multiple days reservation date_start = fields.Datetime('Start date', required=True, index=True, readonly=True, states={'draft': [('readonly', False)]}) From e7fad86347d8200d5ce5d988da10a225de2aa2f0 Mon Sep 17 00:00:00 2001 From: Fabien BOURGEOIS Date: Thu, 29 Mar 2018 07:56:20 +0200 Subject: [PATCH 07/15] [FIX]GOLEM Resource Option : need unicode string to handle non-ascii / special characters --- golem_resource_option/models/golem_resource_option_selection.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/golem_resource_option/models/golem_resource_option_selection.py b/golem_resource_option/models/golem_resource_option_selection.py index c36b1a9..14fb049 100644 --- a/golem_resource_option/models/golem_resource_option_selection.py +++ b/golem_resource_option/models/golem_resource_option_selection.py @@ -36,7 +36,7 @@ class GolemResourceOptionSelection(models.Model): @api.multi def _compute_name(self): for selection in self: - selection.name = "{}/{}".format(selection.resource_id.name, selection.option_id.name) + selection.name = u"{}/{}".format(selection.resource_id.name, selection.option_id.name) _sql_constraints = [ ('unique_selection', "UNIQUE(resource_id, option_id, reservation_id)", From 0e250ea0753b03766e4378f03608b741a77b1e01 Mon Sep 17 00:00:00 2001 From: Fabien BOURGEOIS Date: Thu, 29 Mar 2018 08:07:50 +0200 Subject: [PATCH 08/15] [REF][IMP]GOLEM Resource Option : small refactoring / quality and performance --- golem_resource_option/__manifest__.py | 19 ++++++++------- .../models/golem_resource.py | 5 ++-- .../models/golem_resource_option.py | 5 ++-- .../models/golem_resource_option_selection.py | 24 ++++++++----------- .../models/golem_resource_reservation.py | 9 ++++--- .../golem_resource_option_selection_views.xml | 1 - .../golem_resource_reservation_views.xml | 11 ++++----- .../views/golem_resource_views.xml | 2 ++ 8 files changed, 36 insertions(+), 40 deletions(-) diff --git a/golem_resource_option/__manifest__.py b/golem_resource_option/__manifest__.py index da1651b..179e06d 100644 --- a/golem_resource_option/__manifest__.py +++ b/golem_resource_option/__manifest__.py @@ -17,19 +17,20 @@ # along with this program. If not, see . { - 'name': 'GOLEM resources option', - 'summary': 'GOLEM resources option', - 'description': ''' GOLEM resources option ''', - 'version': '10.0.0.0.0', + 'name': 'GOLEM resources options', + 'summary': 'GOLEM resources options', + 'description': ''' GOLEM resources options management : + - create 1:n options per resource ; + - choose option on reservations ''', + 'version': '10.0.0.1.0', 'category': 'GOLEM', 'author': 'Youssef El Ouahby, Fabien Bourgeois', 'license': 'AGPL-3', 'application': True, 'installable': True, 'depends': ['golem_resource'], - 'data': [ - 'views/golem_resource_views.xml', - 'views/golem_resource_reservation_views.xml', - 'views/golem_resource_option_views.xml', - 'views/golem_resource_option_selection_views.xml'] + 'data': ['views/golem_resource_views.xml', + 'views/golem_resource_reservation_views.xml', + 'views/golem_resource_option_views.xml', + 'views/golem_resource_option_selection_views.xml'] } diff --git a/golem_resource_option/models/golem_resource.py b/golem_resource_option/models/golem_resource.py index 1852270..258c0bc 100644 --- a/golem_resource_option/models/golem_resource.py +++ b/golem_resource_option/models/golem_resource.py @@ -18,8 +18,7 @@ """ GOLEM Resources Option Management """ -from odoo import models, fields, api, _ -from odoo.exceptions import ValidationError +from odoo import models, fields class GolemResource(models.Model): @@ -27,4 +26,4 @@ class GolemResource(models.Model): _inherit = 'golem.resource' option_ids = fields.One2many('golem.resource.option', 'resource_id', - string='Option list') + string='Options') diff --git a/golem_resource_option/models/golem_resource_option.py b/golem_resource_option/models/golem_resource_option.py index 3350a22..8b8cd3a 100644 --- a/golem_resource_option/models/golem_resource_option.py +++ b/golem_resource_option/models/golem_resource_option.py @@ -27,5 +27,6 @@ class GolemResourceOption(models.Model): _name = 'golem.resource.option' _description = 'GOLEM Reservation Option Model' - name = fields.Char("Option") - resource_id = fields.Many2one('golem.resource', "Resource") + name = fields.Char('Option', index=True) + resource_id = fields.Many2one('golem.resource', 'Resource', + index=True, required=True) diff --git a/golem_resource_option/models/golem_resource_option_selection.py b/golem_resource_option/models/golem_resource_option_selection.py index 14fb049..0c5ce8e 100644 --- a/golem_resource_option/models/golem_resource_option_selection.py +++ b/golem_resource_option/models/golem_resource_option_selection.py @@ -26,18 +26,14 @@ class GolemResourceOptionSelection(models.Model): """ GOLEM Resource Option SelectionModel """ _name = 'golem.resource.option.selection' _description = 'GOLEM Resource option selection Model' - - name = fields.Char(compute="_compute_name") - option_id = fields.Many2one('golem.resource.option', 'Option', - domain="[('resource_id', '=', resource_id)]") - resource_id = fields.Many2one(related="reservation_id.resource_id") - reservation_id = fields.Many2one('golem.resource.reservation', 'Reservation') - - @api.multi - def _compute_name(self): - for selection in self: - selection.name = u"{}/{}".format(selection.resource_id.name, selection.option_id.name) - _sql_constraints = [ - ('unique_selection', "UNIQUE(resource_id, option_id, reservation_id)", - _("Not allowed, a reservation with same option and resource already exists"))] + ('unique_selection', 'UNIQUE(resource_id, option_id, reservation_id)', + _('Not allowed, a reservation with same option and resource already exists'))] + + name = fields.Char(related='option_id.name') + option_id = fields.Many2one('golem.resource.option', 'Option', + required=True, index=True, + domain='[("resource_id", "=", resource_id)]') + resource_id = fields.Many2one(related='reservation_id.resource_id') + reservation_id = fields.Many2one('golem.resource.reservation', 'Reservation', + required=True, index=True) diff --git a/golem_resource_option/models/golem_resource_reservation.py b/golem_resource_option/models/golem_resource_reservation.py index fa35285..4cb65fa 100644 --- a/golem_resource_option/models/golem_resource_reservation.py +++ b/golem_resource_option/models/golem_resource_reservation.py @@ -19,9 +19,7 @@ """ GOLEM Resource Reservation """ -from datetime import timedelta -from odoo import models, fields, api, _ -from odoo.exceptions import ValidationError +from odoo import models, fields class GolemResourceReservation(models.Model): @@ -29,5 +27,6 @@ class GolemResourceReservation(models.Model): _inherit = 'golem.resource.reservation' resource_option_ids = fields.One2many(related="resource_id.option_ids") - selected_option_ids = fields.One2many('golem.resource.option.selection', 'reservation_id', - string="Selected option") + selected_option_ids = fields.One2many('golem.resource.option.selection', + 'reservation_id', + string="Selected options") diff --git a/golem_resource_option/views/golem_resource_option_selection_views.xml b/golem_resource_option/views/golem_resource_option_selection_views.xml index 7d1fa9d..23a785d 100644 --- a/golem_resource_option/views/golem_resource_option_selection_views.xml +++ b/golem_resource_option/views/golem_resource_option_selection_views.xml @@ -26,7 +26,6 @@ along with this program. If not, see .
- diff --git a/golem_resource_option/views/golem_resource_reservation_views.xml b/golem_resource_option/views/golem_resource_reservation_views.xml index 82301a0..6a648e9 100644 --- a/golem_resource_option/views/golem_resource_reservation_views.xml +++ b/golem_resource_option/views/golem_resource_reservation_views.xml @@ -18,8 +18,10 @@ along with this program. If not, see . --> + - + GOLEM Resource Reservation Option Extension Form golem.resource.reservation @@ -27,13 +29,10 @@ along with this program. If not, see . - - - - + widget="many2many_tags" /> + diff --git a/golem_resource_option/views/golem_resource_views.xml b/golem_resource_option/views/golem_resource_views.xml index 03c6bc1..fed88da 100644 --- a/golem_resource_option/views/golem_resource_views.xml +++ b/golem_resource_option/views/golem_resource_views.xml @@ -18,6 +18,7 @@ along with this program. If not, see . --> + GOLEM Resource Option Extention Form @@ -30,5 +31,6 @@ along with this program. If not, see . + From 8ea116675e894136c01c56afa665a28fc58afb64 Mon Sep 17 00:00:00 2001 From: Fabien BOURGEOIS Date: Thu, 29 Mar 2018 08:35:19 +0200 Subject: [PATCH 09/15] [REF][ADD]GOLEM Resource Option : options tree under configuration, active for options and m2m for reservation (finally), multiple small enhancements --- golem_resource_option/__manifest__.py | 3 +- golem_resource_option/models/__init__.py | 5 +-- .../models/golem_resource_option.py | 9 ++++- .../models/golem_resource_option_selection.py | 39 ------------------ .../models/golem_resource_reservation.py | 7 ++-- .../golem_resource_option_selection_views.xml | 37 ----------------- .../views/golem_resource_option_views.xml | 40 ++++++++++++++++++- .../golem_resource_reservation_views.xml | 2 +- .../views/golem_resource_views.xml | 2 +- 9 files changed, 54 insertions(+), 90 deletions(-) delete mode 100644 golem_resource_option/models/golem_resource_option_selection.py delete mode 100644 golem_resource_option/views/golem_resource_option_selection_views.xml diff --git a/golem_resource_option/__manifest__.py b/golem_resource_option/__manifest__.py index 179e06d..330eac5 100644 --- a/golem_resource_option/__manifest__.py +++ b/golem_resource_option/__manifest__.py @@ -31,6 +31,5 @@ 'depends': ['golem_resource'], 'data': ['views/golem_resource_views.xml', 'views/golem_resource_reservation_views.xml', - 'views/golem_resource_option_views.xml', - 'views/golem_resource_option_selection_views.xml'] + 'views/golem_resource_option_views.xml'] } diff --git a/golem_resource_option/models/__init__.py b/golem_resource_option/models/__init__.py index 5692f80..6e13137 100644 --- a/golem_resource_option/models/__init__.py +++ b/golem_resource_option/models/__init__.py @@ -16,7 +16,4 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from . import golem_resource_option, \ - golem_resource_option_selection, \ - golem_resource, \ - golem_resource_reservation +from . import golem_resource_option, golem_resource, golem_resource_reservation diff --git a/golem_resource_option/models/golem_resource_option.py b/golem_resource_option/models/golem_resource_option.py index 8b8cd3a..0790366 100644 --- a/golem_resource_option/models/golem_resource_option.py +++ b/golem_resource_option/models/golem_resource_option.py @@ -19,14 +19,19 @@ """ GOLEM Resource Option """ -from odoo import models, fields +from odoo import models, fields, _ class GolemResourceOption(models.Model): """ GOLEM Resource Option Model """ _name = 'golem.resource.option' _description = 'GOLEM Reservation Option Model' + _order = 'name asc, resource_id asc' + _sql_constraints = [('golem_resource_option_name_uniq', + 'UNIQUE (name, resource_id)', + _('An option has already this name for this resource.'))] - name = fields.Char('Option', index=True) + name = fields.Char('Option', required=True, index=True) resource_id = fields.Many2one('golem.resource', 'Resource', index=True, required=True) + active = fields.Boolean(default=True) diff --git a/golem_resource_option/models/golem_resource_option_selection.py b/golem_resource_option/models/golem_resource_option_selection.py deleted file mode 100644 index 0c5ce8e..0000000 --- a/golem_resource_option/models/golem_resource_option_selection.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright 2018 Youssef El Ouahby -# Copyright 2018 Fabien Bourgeois -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -""" GOLEM Resource Option Selection""" - - -from odoo import models, fields, api, _ - - -class GolemResourceOptionSelection(models.Model): - """ GOLEM Resource Option SelectionModel """ - _name = 'golem.resource.option.selection' - _description = 'GOLEM Resource option selection Model' - _sql_constraints = [ - ('unique_selection', 'UNIQUE(resource_id, option_id, reservation_id)', - _('Not allowed, a reservation with same option and resource already exists'))] - - name = fields.Char(related='option_id.name') - option_id = fields.Many2one('golem.resource.option', 'Option', - required=True, index=True, - domain='[("resource_id", "=", resource_id)]') - resource_id = fields.Many2one(related='reservation_id.resource_id') - reservation_id = fields.Many2one('golem.resource.reservation', 'Reservation', - required=True, index=True) diff --git a/golem_resource_option/models/golem_resource_reservation.py b/golem_resource_option/models/golem_resource_reservation.py index 4cb65fa..951f649 100644 --- a/golem_resource_option/models/golem_resource_reservation.py +++ b/golem_resource_option/models/golem_resource_reservation.py @@ -27,6 +27,7 @@ class GolemResourceReservation(models.Model): _inherit = 'golem.resource.reservation' resource_option_ids = fields.One2many(related="resource_id.option_ids") - selected_option_ids = fields.One2many('golem.resource.option.selection', - 'reservation_id', - string="Selected options") + selected_option_ids = fields.Many2many( + 'golem.resource.option', string='Selected options', + index=True, readonly=True, domain='[("resource_id", "=", resource_id)]', + states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)]}) diff --git a/golem_resource_option/views/golem_resource_option_selection_views.xml b/golem_resource_option/views/golem_resource_option_selection_views.xml deleted file mode 100644 index 23a785d..0000000 --- a/golem_resource_option/views/golem_resource_option_selection_views.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - GOLEM Resource Option Selection Form - golem.resource.option.selection - - - - - - - - - - - - diff --git a/golem_resource_option/views/golem_resource_option_views.xml b/golem_resource_option/views/golem_resource_option_views.xml index 8f9665b..004411d 100644 --- a/golem_resource_option/views/golem_resource_option_views.xml +++ b/golem_resource_option/views/golem_resource_option_views.xml @@ -24,7 +24,7 @@ along with this program. If not, see . GOLEM Resource Option Form golem.resource.option -
+ @@ -32,5 +32,43 @@ along with this program. If not, see . + + + + GOLEM Resource Option Tree + golem.resource.option + + + + + + + + + + + + GOLEM Resource Option Search + golem.resource.option + + + + + + + + + + + + + + + diff --git a/golem_resource_option/views/golem_resource_reservation_views.xml b/golem_resource_option/views/golem_resource_reservation_views.xml index 6a648e9..d9602f5 100644 --- a/golem_resource_option/views/golem_resource_reservation_views.xml +++ b/golem_resource_option/views/golem_resource_reservation_views.xml @@ -29,7 +29,7 @@ along with this program. If not, see . + widget="many2many_checkboxes" /> diff --git a/golem_resource_option/views/golem_resource_views.xml b/golem_resource_option/views/golem_resource_views.xml index fed88da..ebfe364 100644 --- a/golem_resource_option/views/golem_resource_views.xml +++ b/golem_resource_option/views/golem_resource_views.xml @@ -25,7 +25,7 @@ along with this program. If not, see . golem.resource - + From 0bb22d7b1b5ccc0beae570fa67c2cf62c10fb255 Mon Sep 17 00:00:00 2001 From: Fabien BOURGEOIS Date: Thu, 29 Mar 2018 08:56:57 +0200 Subject: [PATCH 10/15] [IMP]GOLEM Resource Option : base security for new model --- golem_resource_option/__manifest__.py | 3 ++- golem_resource_option/security/ir.model.access.csv | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 golem_resource_option/security/ir.model.access.csv diff --git a/golem_resource_option/__manifest__.py b/golem_resource_option/__manifest__.py index 330eac5..90f5107 100644 --- a/golem_resource_option/__manifest__.py +++ b/golem_resource_option/__manifest__.py @@ -29,7 +29,8 @@ 'application': True, 'installable': True, 'depends': ['golem_resource'], - 'data': ['views/golem_resource_views.xml', + 'data': ['security/ir.model.access.csv', + 'views/golem_resource_views.xml', 'views/golem_resource_reservation_views.xml', 'views/golem_resource_option_views.xml'] } diff --git a/golem_resource_option/security/ir.model.access.csv b/golem_resource_option/security/ir.model.access.csv new file mode 100644 index 0000000..749b420 --- /dev/null +++ b/golem_resource_option/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_golem_resource_option_user,Access GOLEM Resource Option User,model_golem_resource_option,golem_base.group_golem_user,1,0,0,0 +access_golem_resource_option_manager,Access GOLEM Resource Option Manager,model_golem_resource_option,golem_base.group_golem_manager,1,1,1,1 From ced4cbf42a5fff7e76ef44ee0f7fbc5064a241da Mon Sep 17 00:00:00 2001 From: Fabien BOURGEOIS Date: Thu, 29 Mar 2018 08:57:18 +0200 Subject: [PATCH 11/15] [I18N]GOLEM Resource Option : translations --- golem_resource_option/i18n/fr.po | 116 +++++++++++++++++ .../i18n/golem_resource_option.pot | 117 ++++++++++++++++++ 2 files changed, 233 insertions(+) create mode 100644 golem_resource_option/i18n/fr.po create mode 100644 golem_resource_option/i18n/golem_resource_option.pot diff --git a/golem_resource_option/i18n/fr.po b/golem_resource_option/i18n/fr.po new file mode 100644 index 0000000..fd5d27c --- /dev/null +++ b/golem_resource_option/i18n/fr.po @@ -0,0 +1,116 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * golem_resource_option +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-29 06:38+0000\n" +"PO-Revision-Date: 2018-03-29 06:38+0000\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: golem_resource_option +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_option_active +msgid "Active" +msgstr "Actif" + +#. module: golem_resource_option +#: code:addons/golem_resource_option/models/golem_resource_option.py:32 +#: sql_constraint:golem.resource.option:0 +#, python-format +msgid "An option has already this name for this resource." +msgstr "Une option porte déjà ce nom pour cette ressource." + +#. module: golem_resource_option +#: model:ir.ui.view,arch_db:golem_resource_option.golem_resource_option_search +msgid "By resource" +msgstr "Par ressource" + +#. module: golem_resource_option +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_option_create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: golem_resource_option +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_option_create_date +msgid "Created on" +msgstr "Créé le" + +#. module: golem_resource_option +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_option_display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: golem_resource_option +#: model:ir.model,name:golem_resource_option.model_golem_resource_reservation +msgid "GOLEM Reservation Model" +msgstr "GOLEM Reservation Model" + +#. module: golem_resource_option +#: model:ir.model,name:golem_resource_option.model_golem_resource_option +msgid "GOLEM Reservation Option Model" +msgstr "GOLEM Reservation Option Model" + +#. module: golem_resource_option +#: model:ir.model,name:golem_resource_option.model_golem_resource +msgid "GOLEM Resource Model" +msgstr "GOLEM Resource Model" + +#. module: golem_resource_option +#: model:ir.model,name:golem_resource_option.model_golem_resource_option_selection +msgid "GOLEM Resource option selection Model" +msgstr "GOLEM Resource option selection Model" + +#. module: golem_resource_option +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_option_id +msgid "ID" +msgstr "ID" + +#. module: golem_resource_option +#: model:ir.ui.view,arch_db:golem_resource_option.golem_resource_option_search +msgid "Inactive" +msgstr "Inactif" + +#. module: golem_resource_option +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_option___last_update +msgid "Last Modified on" +msgstr "Dernière Modification le" + +#. module: golem_resource_option +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_option_write_uid +msgid "Last Updated by" +msgstr "Dernière mise à jour par" + +#. module: golem_resource_option +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_option_write_date +msgid "Last Updated on" +msgstr "Dernière mise à jour le" + +#. module: golem_resource_option +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_option_name +msgid "Option" +msgstr "Option" + +#. module: golem_resource_option +#: model:ir.actions.act_window,name:golem_resource_option.golem_resource_option_action +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_option_ids +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_reservation_resource_option_ids +#: model:ir.ui.menu,name:golem_resource_option.golem_resource_option_menu +msgid "Options" +msgstr "Options" + +#. module: golem_resource_option +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_option_resource_id +msgid "Resource" +msgstr "Ressource" + +#. module: golem_resource_option +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_reservation_selected_option_ids +msgid "Selected options" +msgstr "Options" diff --git a/golem_resource_option/i18n/golem_resource_option.pot b/golem_resource_option/i18n/golem_resource_option.pot new file mode 100644 index 0000000..759e8a6 --- /dev/null +++ b/golem_resource_option/i18n/golem_resource_option.pot @@ -0,0 +1,117 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * golem_resource_option +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-29 06:36+0000\n" +"PO-Revision-Date: 2018-03-29 06:36+0000\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: golem_resource_option +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_option_active +msgid "Active" +msgstr "" + +#. module: golem_resource_option +#: code:addons/golem_resource_option/models/golem_resource_option.py:32 +#: sql_constraint:golem.resource.option:0 +#, python-format +msgid "An option has already this name for this resource." +msgstr "" + +#. module: golem_resource_option +#: model:ir.ui.view,arch_db:golem_resource_option.golem_resource_option_search +msgid "By resource" +msgstr "" + +#. module: golem_resource_option +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_option_create_uid +msgid "Created by" +msgstr "" + +#. module: golem_resource_option +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_option_create_date +msgid "Created on" +msgstr "" + +#. module: golem_resource_option +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_option_display_name +msgid "Display Name" +msgstr "" + +#. module: golem_resource_option +#: model:ir.model,name:golem_resource_option.model_golem_resource_reservation +msgid "GOLEM Reservation Model" +msgstr "" + +#. module: golem_resource_option +#: model:ir.model,name:golem_resource_option.model_golem_resource_option +msgid "GOLEM Reservation Option Model" +msgstr "" + +#. module: golem_resource_option +#: model:ir.model,name:golem_resource_option.model_golem_resource +msgid "GOLEM Resource Model" +msgstr "" + +#. module: golem_resource_option +#: model:ir.model,name:golem_resource_option.model_golem_resource_option_selection +msgid "GOLEM Resource option selection Model" +msgstr "" + +#. module: golem_resource_option +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_option_id +msgid "ID" +msgstr "" + +#. module: golem_resource_option +#: model:ir.ui.view,arch_db:golem_resource_option.golem_resource_option_search +msgid "Inactive" +msgstr "" + +#. module: golem_resource_option +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_option___last_update +msgid "Last Modified on" +msgstr "" + +#. module: golem_resource_option +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_option_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: golem_resource_option +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_option_write_date +msgid "Last Updated on" +msgstr "" + +#. module: golem_resource_option +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_option_name +msgid "Option" +msgstr "" + +#. module: golem_resource_option +#: model:ir.actions.act_window,name:golem_resource_option.golem_resource_option_action +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_option_ids +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_reservation_resource_option_ids +#: model:ir.ui.menu,name:golem_resource_option.golem_resource_option_menu +msgid "Options" +msgstr "" + +#. module: golem_resource_option +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_option_resource_id +msgid "Resource" +msgstr "" + +#. module: golem_resource_option +#: model:ir.model.fields,field_description:golem_resource_option.field_golem_resource_reservation_selected_option_ids +msgid "Selected options" +msgstr "" + From 350ff3e52a517ded006cd1087528aa0afa657d56 Mon Sep 17 00:00:00 2001 From: Fabien BOURGEOIS Date: Thu, 29 Mar 2018 09:07:26 +0200 Subject: [PATCH 12/15] [ADD]GOLEM Base : now depends on backend theme --- golem_base/__manifest__.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/golem_base/__manifest__.py b/golem_base/__manifest__.py index fdb5f3c..de712ae 100644 --- a/golem_base/__manifest__.py +++ b/golem_base/__manifest__.py @@ -18,7 +18,7 @@ { 'name': 'GOLEM base module for global dependencies', 'summary': 'GOLEM base installs base and shared dependencies for GOLEM', - 'version': '10.0.1.0.1', + 'version': '10.0.1.0.2', 'category': 'GOLEM', 'author': 'Fabien Bourgeois', 'license': 'AGPL-3', @@ -31,8 +31,7 @@ 'l10n_fr_siret', 'web_widget_phone_check_fr', 'web_widget_email_check', 'web_widget_url_check', - # 'web_one2many_kanban', - 'web_responsive'], + 'web_responsive', 'backend_theme_v10'], 'data': ['security/golem_security.xml', 'views/menus.xml', 'views/yaltik_base_assets.xml'] From f710947771cc5306ee122e4cb746b39a90b4d273 Mon Sep 17 00:00:00 2001 From: Fabien BOURGEOIS Date: Thu, 29 Mar 2018 10:02:41 +0200 Subject: [PATCH 13/15] [FIX]GOLEM Resource Option : should not see other options on own definition list on ressource form --- golem_resource_option/__manifest__.py | 2 +- golem_resource_option/views/golem_resource_views.xml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/golem_resource_option/__manifest__.py b/golem_resource_option/__manifest__.py index 90f5107..b686e20 100644 --- a/golem_resource_option/__manifest__.py +++ b/golem_resource_option/__manifest__.py @@ -22,7 +22,7 @@ 'description': ''' GOLEM resources options management : - create 1:n options per resource ; - choose option on reservations ''', - 'version': '10.0.0.1.0', + 'version': '10.0.0.1.1', 'category': 'GOLEM', 'author': 'Youssef El Ouahby, Fabien Bourgeois', 'license': 'AGPL-3', diff --git a/golem_resource_option/views/golem_resource_views.xml b/golem_resource_option/views/golem_resource_views.xml index ebfe364..e496a2f 100644 --- a/golem_resource_option/views/golem_resource_views.xml +++ b/golem_resource_option/views/golem_resource_views.xml @@ -27,6 +27,7 @@ along with this program. If not, see . From 0cbf3719f2c72198e8f0087ccd5b213e111776f2 Mon Sep 17 00:00:00 2001 From: Fabien BOURGEOIS Date: Thu, 29 Mar 2018 16:46:26 +0200 Subject: [PATCH 14/15] [FIX]GOLEM Resource views : bad order for new install (calendar view needs form view) --- golem_resource/__manifest__.py | 2 +- .../golem_resource_reservation_views.xml | 30 +++++++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/golem_resource/__manifest__.py b/golem_resource/__manifest__.py index 155cd46..7d2daa2 100644 --- a/golem_resource/__manifest__.py +++ b/golem_resource/__manifest__.py @@ -20,7 +20,7 @@ 'name': 'GOLEM non-profit resources', 'summary': 'GOLEM resources management', 'description': ''' GOLEM resources management ''', - 'version': '10.0.1.13.0', + 'version': '10.0.1.13.1', 'category': 'GOLEM', 'author': 'Youssef El Ouahby, Fabien Bourgeois', 'license': 'AGPL-3', diff --git a/golem_resource/views/golem_resource_reservation_views.xml b/golem_resource/views/golem_resource_reservation_views.xml index 03f05e3..0aa6677 100644 --- a/golem_resource/views/golem_resource_reservation_views.xml +++ b/golem_resource/views/golem_resource_reservation_views.xml @@ -19,21 +19,6 @@ along with this program. If not, see . - - - GOLEM Resource Reservation Calendar - golem.resource.reservation - - - - - - - - - GOLEM Resource Reservation Tree @@ -105,6 +90,21 @@ along with this program. If not, see . + + + GOLEM Resource Reservation Calendar + golem.resource.reservation + + + + + + + + + GOLEM Resource Reservation Search From fa635b496e891335d55a6ec4b4650e4f456e1b36 Mon Sep 17 00:00:00 2001 From: Fabien BOURGEOIS Date: Thu, 29 Mar 2018 16:46:46 +0200 Subject: [PATCH 15/15] [FIX]GOLEM Resource Option is not an application --- golem_resource_option/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/golem_resource_option/__manifest__.py b/golem_resource_option/__manifest__.py index b686e20..552162a 100644 --- a/golem_resource_option/__manifest__.py +++ b/golem_resource_option/__manifest__.py @@ -26,7 +26,7 @@ 'category': 'GOLEM', 'author': 'Youssef El Ouahby, Fabien Bourgeois', 'license': 'AGPL-3', - 'application': True, + 'application': False, 'installable': True, 'depends': ['golem_resource'], 'data': ['security/ir.model.access.csv',