From cc23e92232861a6002232fee46ca0a4dc790bda2 Mon Sep 17 00:00:00 2001 From: eloyoussef Date: Thu, 15 Feb 2018 14:16:51 +0100 Subject: [PATCH 01/49] 1er version du golem_activity_queue --- golem_activity_queue/__init__.py | 18 +++++++++ golem_activity_queue/__manifest__.py | 29 ++++++++++++++ golem_activity_queue/models/__init__.py | 18 +++++++++ .../models/golem_activity_queue.py | 38 +++++++++++++++++++ .../security/ir.model.access.csv | 3 ++ 5 files changed, 106 insertions(+) create mode 100644 golem_activity_queue/__init__.py create mode 100644 golem_activity_queue/__manifest__.py create mode 100644 golem_activity_queue/models/__init__.py create mode 100644 golem_activity_queue/models/golem_activity_queue.py create mode 100644 golem_activity_queue/security/ir.model.access.csv diff --git a/golem_activity_queue/__init__.py b/golem_activity_queue/__init__.py new file mode 100644 index 0000000..feff6f0 --- /dev/null +++ b/golem_activity_queue/__init__.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- + +# 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_activity_queue/__manifest__.py b/golem_activity_queue/__manifest__.py new file mode 100644 index 0000000..128de52 --- /dev/null +++ b/golem_activity_queue/__manifest__.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- + +# 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 activities queue', + 'summary': 'GOLEM activities queue', + 'version': '10.0.2.1.0', + 'category': 'GOLEM', + 'author': 'Youssef Elouahby', + 'license': 'AGPL-3', + 'application': True, + 'installable': True, + 'depends': ['golem_activity', 'golem_activity_registration'], + 'data': ['views/golem_activity_queue_views.xml'] +} diff --git a/golem_activity_queue/models/__init__.py b/golem_activity_queue/models/__init__.py new file mode 100644 index 0000000..0ff98f0 --- /dev/null +++ b/golem_activity_queue/models/__init__.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- + +# Copyright 2016 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_activity_queue diff --git a/golem_activity_queue/models/golem_activity_queue.py b/golem_activity_queue/models/golem_activity_queue.py new file mode 100644 index 0000000..5871b0d --- /dev/null +++ b/golem_activity_queue/models/golem_activity_queue.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- + +# Copyright 2017 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 activities related models """ + +from odoo import models, fields, api, _ + +class GolemActivity(models.Model): + """ GOLEM Activity """ + _name = 'golem.activity' + + #ajout d'un champs O2M vers activity_id + activity_queue_id = fields.One2many('golem.activity.queue', 'activity_id') + # un boolen pour determiner si une fille d'attente est autorisé + allows_queue = fields.Boolean(required=False) + +class GolemActivityQueue(models.Model): + """ GOLEM Activity Queue """ + _name = 'golem.activity.queue' + _description = 'GOLEM Activity Queue' + + activity_id = fields.Many2one('golem.activity', required=True) + season_id = fields.Many2one('golem.season', related='golem.activity.season_id') + member_id = fields.Many2one('golem.member', required=True) diff --git a/golem_activity_queue/security/ir.model.access.csv b/golem_activity_queue/security/ir.model.access.csv new file mode 100644 index 0000000..2bcb93b --- /dev/null +++ b/golem_activity_queue/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_activity_queue_user,Access GOLEM Activity Queue User,model_golem_activity_queue,golem_base.group_golem_user,1,1,1,0 +access_golem_activity_queue_manager,Access GOLEM Activity Queue Manager,model_golem_activity_queue,golem_base.group_golem_manager,1,1,1,1 -- 2.40.1 From a64d865648aed84fea454ceefd60b970ddab38c6 Mon Sep 17 00:00:00 2001 From: eloyoussef Date: Fri, 16 Feb 2018 00:27:35 +0100 Subject: [PATCH 02/49] Ajout du popup qui ne s'affiche pas encore --- golem_activity_queue/__manifest__.py | 4 +- .../models/golem_activity_queue.py | 63 +++++++++++++++++-- .../views/golem_activity_queue_views.xml | 26 ++++++++ .../views/golem_activity_views.xml | 48 ++++++++++++++ 4 files changed, 136 insertions(+), 5 deletions(-) create mode 100644 golem_activity_queue/views/golem_activity_queue_views.xml create mode 100644 golem_activity_queue/views/golem_activity_views.xml diff --git a/golem_activity_queue/__manifest__.py b/golem_activity_queue/__manifest__.py index 128de52..60ec6b3 100644 --- a/golem_activity_queue/__manifest__.py +++ b/golem_activity_queue/__manifest__.py @@ -25,5 +25,7 @@ 'application': True, 'installable': True, 'depends': ['golem_activity', 'golem_activity_registration'], - 'data': ['views/golem_activity_queue_views.xml'] + 'data': ['views/golem_activity_queue_views.xml', + 'views/golem_activity_views.xml', + ] } diff --git a/golem_activity_queue/models/golem_activity_queue.py b/golem_activity_queue/models/golem_activity_queue.py index 5871b0d..ad3a43d 100644 --- a/golem_activity_queue/models/golem_activity_queue.py +++ b/golem_activity_queue/models/golem_activity_queue.py @@ -19,14 +19,69 @@ from odoo import models, fields, api, _ +class YesNoQueuePopUp(models.TransientModel): + """GOLEM Resource wizard""" + _name = "golem.queuepopup" + + + yes_no = fields.Char(default='Do you want to proceed?') + + @api.multi + def yes(self): + pass + # sure continue! + + @api.multi + def no(self): + pass # don't do anything stupid + + class GolemActivity(models.Model): - """ GOLEM Activity """ - _name = 'golem.activity' + """ GOLEM Activity adaptations """ + _inherit = 'golem.activity' + #ajout d'un champs O2M vers activity_id activity_queue_id = fields.One2many('golem.activity.queue', 'activity_id') # un boolen pour determiner si une fille d'attente est autorisé - allows_queue = fields.Boolean(required=False) + queue_allowed = fields.Boolean(default=True) + + @api.multi + @api.constrains('places_remain') + def _check_remaining_places(self): + """ Forbid inscription when there is no more place """ + for activity in self: + if activity.places_remain < 5: + + if self.queue_allowed: + print "__________________________ test ______________________" + return { + 'name' : _('Please enter the reseaon of rejection'), + 'type' : 'ir.actions.act_window', + 'res_model' : 'golem.queuepopup', + 'view_mode': 'form', + 'view_type': 'form', + 'target': 'new', + } + + return { + 'name' : _('Do you want to add your registration to the queue?'), + 'type' : 'ir.actions.act_window', + 'res_model' : 'golem.queuepopup', + 'view_mode': 'form', + 'view_type': 'form', + 'target': 'new', + } + print "________________________________test 2 __________________" + + + else: + emsg = _('Sorry, there is no more place man !') + raise models.ValidationError(emsg) + + + + class GolemActivityQueue(models.Model): """ GOLEM Activity Queue """ @@ -34,5 +89,5 @@ class GolemActivityQueue(models.Model): _description = 'GOLEM Activity Queue' activity_id = fields.Many2one('golem.activity', required=True) - season_id = fields.Many2one('golem.season', related='golem.activity.season_id') + season_id = fields.Many2one(related='activity_id.season_id') member_id = fields.Many2one('golem.member', required=True) diff --git a/golem_activity_queue/views/golem_activity_queue_views.xml b/golem_activity_queue/views/golem_activity_queue_views.xml new file mode 100644 index 0000000..0ab8d6f --- /dev/null +++ b/golem_activity_queue/views/golem_activity_queue_views.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + diff --git a/golem_activity_queue/views/golem_activity_views.xml b/golem_activity_queue/views/golem_activity_views.xml new file mode 100644 index 0000000..d259888 --- /dev/null +++ b/golem_activity_queue/views/golem_activity_views.xml @@ -0,0 +1,48 @@ + + + + + + + Activity Registrations and Places + golem.activity + + + + + + + + + + queuepopup.form + golem.queuepopup + form + +
+ + + +
+
+
+
-- 2.40.1 From 9fdb1cbddc9ce71a10f158831e9afccd4078133c Mon Sep 17 00:00:00 2001 From: eloyoussef Date: Mon, 19 Feb 2018 14:03:13 +0100 Subject: [PATCH 03/49] Ajout warning au cas de depassement de place --- .../models/golem_activity_queue.py | 67 ++++++++++++++----- .../views/golem_activity_queue_views.xml | 39 ++++++++++- .../views/golem_activity_views.xml | 12 ++-- 3 files changed, 94 insertions(+), 24 deletions(-) diff --git a/golem_activity_queue/models/golem_activity_queue.py b/golem_activity_queue/models/golem_activity_queue.py index ad3a43d..7c70bfc 100644 --- a/golem_activity_queue/models/golem_activity_queue.py +++ b/golem_activity_queue/models/golem_activity_queue.py @@ -24,16 +24,23 @@ class YesNoQueuePopUp(models.TransientModel): _name = "golem.queuepopup" - yes_no = fields.Char(default='Do you want to proceed?') + #yes_no = fields.Char(default='Do you want to proceed?') @api.multi - def yes(self): - pass - # sure continue! + def queueYes(self): + print "########################################################" + return { + 'name' : _('Do you want to add your registration to the queue?'), + 'type' : 'ir.actions.act_window', + 'res_model' : 'golem.activity.queue', + 'view_mode': 'form', + 'view_type': 'form', + 'target': 'new', + } @api.multi - def no(self): - pass # don't do anything stupid + def queueNo(self): + pass # don't do anything class GolemActivity(models.Model): @@ -46,39 +53,53 @@ class GolemActivity(models.Model): # un boolen pour determiner si une fille d'attente est autorisé queue_allowed = fields.Boolean(default=True) + def queue_register(self): + return { + 'name' : _('Register in the queue'), + 'type' : 'ir.actions.act_window', + 'res_model' : 'golem.activity.queue', + 'view_mode': 'form', + 'view_type': 'form', + 'target': 'new', + } + + @api.onchange('activity_registration_ids') + def _checkRemain(self): + + if len(self.activity_registration_ids) > self.places and self.queue_allowed: + return { + 'warning' : { + 'title' : _('Warning'), + 'message': _('No remaining place, please register in the queue'), + } + } + + """ @api.multi @api.constrains('places_remain') def _check_remaining_places(self): - """ Forbid inscription when there is no more place """ + #Forbid inscription when there is no more place for activity in self: if activity.places_remain < 5: if self.queue_allowed: print "__________________________ test ______________________" - return { - 'name' : _('Please enter the reseaon of rejection'), - 'type' : 'ir.actions.act_window', - 'res_model' : 'golem.queuepopup', - 'view_mode': 'form', - 'view_type': 'form', - 'target': 'new', - } - return { 'name' : _('Do you want to add your registration to the queue?'), 'type' : 'ir.actions.act_window', - 'res_model' : 'golem.queuepopup', + 'res_model' : 'golem.activity.queue', 'view_mode': 'form', 'view_type': 'form', 'target': 'new', } print "________________________________test 2 __________________" + raise models.ValidationError("erreur") else: emsg = _('Sorry, there is no more place man !') raise models.ValidationError(emsg) - +""" @@ -91,3 +112,13 @@ class GolemActivityQueue(models.Model): activity_id = fields.Many2one('golem.activity', required=True) season_id = fields.Many2one(related='activity_id.season_id') member_id = fields.Many2one('golem.member', required=True) + + def call_up_wizard(self): + return { + 'name': 'Are you sure?', + 'type': 'ir.actions.act_window', + 'res_model': 'golem.queuepopup', + 'view_mode': 'form', + 'view_type': 'form', + 'target': 'new', + } diff --git a/golem_activity_queue/views/golem_activity_queue_views.xml b/golem_activity_queue/views/golem_activity_queue_views.xml index 0ab8d6f..3ec3536 100644 --- a/golem_activity_queue/views/golem_activity_queue_views.xml +++ b/golem_activity_queue/views/golem_activity_queue_views.xml @@ -20,7 +20,44 @@ along with this program. If not, see . - + + + queue.form + golem.activity.queue + +
+ + + + + + + +
+
+
+ + + +queue.tree +golem.activity.queue + + + + + + + + + + + Resources Type + golem.activity.queue + form + + + +
diff --git a/golem_activity_queue/views/golem_activity_views.xml b/golem_activity_queue/views/golem_activity_views.xml index d259888..c8b1be5 100644 --- a/golem_activity_queue/views/golem_activity_views.xml +++ b/golem_activity_queue/views/golem_activity_views.xml @@ -27,6 +27,9 @@ along with this program. If not, see . + +