2017-04-01 00:30:53 +02:00
|
|
|
# This file is part of Tryton. The COPYRIGHT file at the toplevel of this
|
|
|
|
|
# repository contains the full copyright notices and license terms.
|
|
|
|
|
from trytond.model import MultiValueMixin, ValueMixin, fields
|
|
|
|
|
from trytond.transaction import Transaction
|
|
|
|
|
|
|
|
|
|
__all__ = ['CompanyMultiValueMixin', 'CompanyValueMixin']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CompanyMultiValueMixin(MultiValueMixin):
|
|
|
|
|
|
2017-04-29 10:39:06 +02:00
|
|
|
def multivalue_records(self, field):
|
|
|
|
|
Value = self.multivalue_model(field)
|
|
|
|
|
records = super(CompanyMultiValueMixin, self).multivalue_records(field)
|
|
|
|
|
if issubclass(Value, CompanyValueMixin):
|
|
|
|
|
# Sort to get record with empty company at the end
|
|
|
|
|
# and so give priority to record with company filled.
|
|
|
|
|
records = sorted(records, key=lambda r: r.company is None)
|
|
|
|
|
return records
|
|
|
|
|
|
2017-04-01 00:30:53 +02:00
|
|
|
def get_multivalue(self, name, **pattern):
|
|
|
|
|
Value = self.multivalue_model(name)
|
|
|
|
|
if issubclass(Value, CompanyValueMixin):
|
|
|
|
|
pattern.setdefault('company', Transaction().context.get('company'))
|
|
|
|
|
return super(CompanyMultiValueMixin, self).get_multivalue(
|
|
|
|
|
name, **pattern)
|
|
|
|
|
|
|
|
|
|
def set_multivalue(self, name, value, **pattern):
|
|
|
|
|
Value = self.multivalue_model(name)
|
|
|
|
|
if issubclass(Value, CompanyValueMixin):
|
|
|
|
|
pattern.setdefault('company', Transaction().context.get('company'))
|
|
|
|
|
return super(CompanyMultiValueMixin, self).set_multivalue(
|
|
|
|
|
name, value, **pattern)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CompanyValueMixin(ValueMixin):
|
|
|
|
|
company = fields.Many2One(
|
|
|
|
|
'company.company', "Company", select=True, ondelete='CASCADE')
|