Fonction de verification et manipulation de status

This commit is contained in:
eloyoussef 2018-03-30 01:59:16 +02:00
parent e738473b53
commit a0721e6a1c
2 changed files with 70 additions and 6 deletions

View File

@ -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'

View File

@ -39,9 +39,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<field name="name">GOLEM Resource Pack Tree</field>
<field name="model">golem.resource.pack</field>
<field name="arch" type="xml">
<tree >
<field name="user_id" />
<tree>
<field name="name" />
<field name="partner_id" />
<field name="state" />
<field name="reservation_count" />
</tree>
</field>
</record>
@ -55,7 +57,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<header>
<button name="state_confirm" type="object" string="Confirm" class="oe_highlight"
attrs="{'invisible': ['|', ('state', 'not in', 'draft'), ('id', '=', False)]}" />
<!--<button name="state_canceled" type="object"
<button name="state_canceled" type="object"
string="Cancel" states="confirmed,validated" />
<button name="state_draft" type="object" string="Set to draft"
states="canceled,confirmed,validated,rejected" />
@ -64,7 +66,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
groups="golem_base.group_golem_manager" />
<button name="state_rejected" type="object" string="Reject"
states="confirmed" class="oe_highlight"
groups="golem_base.group_golem_manager" />-->
groups="golem_base.group_golem_manager" />
<field name="state" widget="statusbar" />
</header>
<sheet>