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 .
-
+ groups="golem_base.group_golem_manager" />