From a0721e6a1c73a73401451490326c8255fb87ac30 Mon Sep 17 00:00:00 2001 From: eloyoussef Date: Fri, 30 Mar 2018 01:59:16 +0200 Subject: [PATCH] Fonction de verification et manipulation de status --- .../models/golem_resource_pack.py | 66 ++++++++++++++++++- .../views/golem_resource_pack_views.xml | 10 +-- 2 files changed, 70 insertions(+), 6 deletions(-) diff --git a/golem_resource_pack/models/golem_resource_pack.py b/golem_resource_pack/models/golem_resource_pack.py index ff77af1..9a1b0a1 100644 --- a/golem_resource_pack/models/golem_resource_pack.py +++ b/golem_resource_pack/models/golem_resource_pack.py @@ -27,9 +27,10 @@ class GolemResourcePack(models.Model): _name = 'golem.resource.pack' _description = 'GOLEM Resource Pack Model' - name = fields.Char()#compute='_compute_name', store=True) + name = fields.Char(compute='_compute_name', store=True) reservation_ids = fields.One2many('golem.resource.reservation', 'pack_id') + note = fields.Text(help='Notes, optional subject for the reservation, reason') user_id = fields.Many2one('res.users', required=True, index=True, readonly=True, @@ -41,9 +42,70 @@ class GolemResourcePack(models.Model): ('confirmed', 'Confirmed'), ('validated', 'Validated'), ('rejected', 'Rejected')], - default='draft') + default='draft', compute="_compute_pack_state") + reservation_count = fields.Integer(compute="_compute_reservation_count", + string="Reservation count") + + @api.multi + @api.depends('reservation_ids') + def _compute_reservation_count(self): + for pack in self: + pack.reservation_count = len(pack.reservation_ids) @api.multi def state_confirm(self): + """ pack confirm """ for pack in self: pack.reservation_ids.state_confirm() + + @api.multi + def state_draft(self): + """ pack canceled """ + for pack in self: + pack.reservation_ids.state_draft() + + @api.multi + def state_canceled(self): + """ pack canceled """ + for pack in self: + pack.reservation_ids.state_canceled() + + @api.multi + def state_validated(self): + """ pack validated """ + for pack in self: + pack.reservation_ids.state_validated() + + @api.multi + def state_rejected(self): + """ pack rejected """ + for pack in self: + for reservation in pack.reservation_ids: + if reservation.state == "confirmed": + reservation.write({'state' :'rejected'}) + + + @api.depends('partner_id') + def _compute_name(self): + """ Compute pack name """ + for pack in self: + pack.name = u'{}/{}'.format(pack.partner_id.name, + pack.create_date) + + #@api.constrains('reservation_ids.state') + @api.multi + @api.depends('reservation_ids') + def _compute_pack_state(self): + """ get pack state """ + for pack in self: + reservation_states = list(map(lambda x: x.state, pack.reservation_ids)) + if "rejected" in reservation_states: + pack.state = 'rejected' + elif "canceled" in reservation_states: + pack.state = 'canceled' + elif "draft" in reservation_states: + pack.state = 'draft' + elif "confirmed" in reservation_states: + pack.state = 'confirmed' + elif "validated" in reservation_states: + pack.state = 'validated' diff --git a/golem_resource_pack/views/golem_resource_pack_views.xml b/golem_resource_pack/views/golem_resource_pack_views.xml index 526c5a7..52ffcda 100644 --- a/golem_resource_pack/views/golem_resource_pack_views.xml +++ b/golem_resource_pack/views/golem_resource_pack_views.xml @@ -39,9 +39,11 @@ along with this program. If not, see . GOLEM Resource Pack Tree golem.resource.pack - - + + + + @@ -55,7 +57,7 @@ along with this program. If not, see .