From 69a340ca810b919c86614d8540fc53181a7a6fcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 29 May 2008 15:50:24 +0200 Subject: [PATCH] Make fields with domain operator '=' becomes readonly. Sent also readonly field for the creation of the record. states attribute can not change the readonly attributes that is on the object. --- tryton/gui/window/view_form/model/field.py | 2 ++ tryton/gui/window/view_form/model/record.py | 2 +- tryton/gui/window/view_form/screen/screen.py | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/tryton/gui/window/view_form/model/field.py b/tryton/gui/window/view_form/model/field.py index 094a42b9af..5cfb4c2e5b 100644 --- a/tryton/gui/window/view_form/model/field.py +++ b/tryton/gui/window/view_form/model/field.py @@ -101,6 +101,8 @@ class CharField(object): if isinstance(state_changes, basestring): state_changes = eval(state_changes) for key in ('readonly', 'required', 'invisible'): + if 'readonly' in self.attrs and self.attrs['readonly']: + continue if key in state_changes: self.get_state_attrs(model)[key] = \ eval(state_changes[key], values) diff --git a/tryton/gui/window/view_form/model/record.py b/tryton/gui/window/view_form/model/record.py index 2f31b14b92..70dd658689 100644 --- a/tryton/gui/window/view_form/model/record.py +++ b/tryton/gui/window/view_form/model/record.py @@ -120,7 +120,7 @@ class ModelRecord(SignalEvent): def save(self, force_reload=True): self._check_load() if not self.id: - value = self.get(get_readonly=False) + value = self.get(get_readonly=True) try: self.id = self.rpc.create(value, self.context_get()) except Exception, exception: diff --git a/tryton/gui/window/view_form/screen/screen.py b/tryton/gui/window/view_form/screen/screen.py index f557dfb0ea..cd19c21e39 100644 --- a/tryton/gui/window/view_form/screen/screen.py +++ b/tryton/gui/window/view_form/screen/screen.py @@ -297,6 +297,8 @@ class Screen(SignalEvent): field_dom = str(fields[dom[0]].setdefault('domain',[])) fields[dom[0]]['domain'] = field_dom[:1] + \ str(('id', dom[1], dom[2])) + ',' + field_dom[1:] + if dom[1] == '=': + fields[dom[0]]['readonly'] = True for node in xml_dom.childNodes: if node.localName == 'tree': self.fields_view_tree = {'arch': arch, 'fields': fields}