trytond-product_oneclick_tr.../product_oneclick.py

75 lines
2.8 KiB
Python

# This file is part of product_oneclick_training module for Tryton.
# The COPYRIGHT file at the top level of this repository contains
# the full copyright notices and license terms.
from trytond.model import fields
from trytond.pool import PoolMeta
from trytond.pyson import Eval, Not, Bool
from trytond.model.fields import depends
__all__ = ['ProductOneClickView', 'ProductOneClick']
class ProductOneClickView:
__metaclass__ = PoolMeta
__name__ = 'product.oneclick.view'
training = fields.Boolean('Training')
training_start_date = fields.Date('Start Date',
states={
'required': Bool(Eval('training')),
},
depends=['training'])
training_end_date = fields.Date('End Date',
states={
'required': Bool(Eval('training')),
},
depends=['training'])
training_registration = fields.Date('Registration Date',
states={
'required': Bool(Eval('training')),
},
depends=['training'],
help='Last day to registration')
training_place = fields.Many2One('party.address', 'Place')
training_seats = fields.Integer('Seats')
training_note = fields.Text('Training Note')
@depends('training_start_date', 'training_registration', 'training_end_date')
def on_change_training_start_date(self):
res = {}
if not self.training_end_date and self.training_start_date:
res['training_end_date'] = self.training_start_date
if not self.training_registration and self.training_start_date:
res['training_registration'] = self.training_start_date
return res
@classmethod
def view_attributes(cls):
return super(ProductOneClickView, cls).view_attributes() + [
('//page[@id="esale"]', 'states', {
'invisible': Not(Bool(Eval('training'))),
})]
class ProductOneClick:
__metaclass__ = PoolMeta
__name__ = 'product.oneclick'
@classmethod
def get_template_values(self, vals):
values = super(ProductOneClick, self).get_template_values(vals)
if vals.training:
values['training'] = vals.training
return values
@classmethod
def get_product_values(self, vals):
values = super(ProductOneClick, self).get_product_values(vals)
if vals.training:
values['training_start_date'] = vals.training_start_date or None
values['training_end_date'] = vals.training_end_date or None
values['training_registration'] = vals.training_registration or None
values['training_place'] = vals.training_place or None
values['training_seats'] = vals.training_seats or None
values['training_note'] = vals.training_note or None
return values