diff --git a/lims_industry/industry.py b/lims_industry/industry.py index 2d3c158b..cd635fb0 100644 --- a/lims_industry/industry.py +++ b/lims_industry/industry.py @@ -4,6 +4,7 @@ from trytond.model import ModelSQL, ModelView, fields from trytond.pyson import Eval +from trytond.pool import Pool __all__ = ['Plant', 'EquipmentType', 'Brand', 'ComponentType', 'EquipmentTemplate', 'EquipmentTemplateComponentType', 'Equipment', @@ -72,7 +73,7 @@ class EquipmentTemplate(ModelSQL, ModelView): type = fields.Many2One('lims.equipment.type', 'Type', required=True) brand = fields.Many2One('lims.brand', 'Brand', required=True) - model = fields.Char('Model', required=True) + model = fields.Char('Model') power = fields.Char('Power') component_types = fields.Many2Many( 'lims.equipment.template-component.type', @@ -86,8 +87,10 @@ class EquipmentTemplate(ModelSQL, ModelView): cls._order.insert(2, ('model', 'ASC')) def get_rec_name(self, name): - return '%s - %s - %s' % ( - self.type.rec_name, self.brand.rec_name, self.model) + res = '%s - %s' % (self.type.rec_name, self.brand.rec_name) + if self.model: + res += ' - ' + self.model + return res class EquipmentTemplateComponentType(ModelSQL): @@ -108,6 +111,7 @@ class Equipment(ModelSQL, ModelView): template = fields.Many2One('lims.equipment.template', 'Template', required=True) name = fields.Char('Name', required=True) + model = fields.Char('Model', required=True) serial_number = fields.Char('Serial number') internal_id = fields.Char('Internal ID Code') latitude = fields.Numeric('Latitude', digits=(3, 14)) @@ -123,6 +127,7 @@ class Equipment(ModelSQL, ModelView): depends=['party']) party = fields.Function(fields.Many2One('party.party', 'Party'), 'get_party', searcher='search_party') + missing_data = fields.Boolean('Missing data') @classmethod def __setup__(cls): @@ -138,6 +143,23 @@ class Equipment(ModelSQL, ModelView): def search_party(cls, name, clause): return [('plant.party',) + tuple(clause[1:])] + @fields.depends('template') + def on_change_template(self): + pool = Pool() + Component = pool.get('lims.component') + + model = None + components = [] + if self.template: + model = self.template.model + for type in self.template.component_types: + value = Component(**Component.default_get( + list(Component._fields.keys()))) + value.type = type.id + components.append(value) + self.model = model + self.components = components + class Component(ModelSQL, ModelView): 'Component' @@ -146,13 +168,7 @@ class Component(ModelSQL, ModelView): equipment = fields.Many2One('lims.equipment', 'Equipment', required=True, ondelete='CASCADE', select=True,) type = fields.Many2One('lims.component.type', 'Type', - required=True, domain=['OR', - ('id', '=', Eval('type')), - ('id', 'in', Eval('type_domain')), - ], - depends=['type_domain']) - type_domain = fields.Function(fields.Many2Many('lims.component.type', - None, None, 'Type domain'), 'on_change_with_type_domain') + required=True) capacity = fields.Char('Capacity (lts)') serial_number = fields.Char('Serial number') model = fields.Char('Model') @@ -178,13 +194,6 @@ class Component(ModelSQL, ModelView): res += ' - ' + self.model return res - @fields.depends('equipment') - def on_change_with_type_domain(self, name=None): - types = [] - if self.equipment and self.equipment.template.component_types: - types = [t.id for t in self.equipment.template.component_types] - return types - def get_party(self, name): if self.equipment: return self.equipment.plant.party.id diff --git a/lims_industry/locale/es.po b/lims_industry/locale/es.po index 345c82d1..b3c0a781 100644 --- a/lims_industry/locale/es.po +++ b/lims_industry/locale/es.po @@ -86,10 +86,6 @@ msgctxt "field:lims.component,type:" msgid "Type" msgstr "Tipo" -msgctxt "field:lims.component,type_domain:" -msgid "Type domain" -msgstr "Dominio para Tipo" - msgctxt "field:lims.component,write_date:" msgid "Write Date" msgstr "Fecha modificación" @@ -166,6 +162,14 @@ msgctxt "field:lims.equipment,longitude:" msgid "Longitude" msgstr "Longitud" +msgctxt "field:lims.equipment,missing_data:" +msgid "Missing data" +msgstr "Falta información" + +msgctxt "field:lims.equipment,model:" +msgid "Model" +msgstr "Modelo" + msgctxt "field:lims.equipment,name:" msgid "Name" msgstr "Nombre" diff --git a/lims_industry/view/component_form.xml b/lims_industry/view/component_form.xml index 9c6e86b8..6742f57b 100644 --- a/lims_industry/view/component_form.xml +++ b/lims_industry/view/component_form.xml @@ -20,5 +20,4 @@