From 3de8a2090720dc0a626bcb88ba5c0c8f7c2b4172 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 17 Apr 2008 14:58:23 +0200 Subject: [PATCH] Force readonly on screen to override any states attributes --- tryton/gui/window/view_form/model/field.py | 2 ++ tryton/gui/window/view_form/model/group.py | 4 +++- tryton/gui/window/view_form/screen/screen.py | 6 ++---- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/tryton/gui/window/view_form/model/field.py b/tryton/gui/window/view_form/model/field.py index 2d35447086..2eae00e513 100644 --- a/tryton/gui/window/view_form/model/field.py +++ b/tryton/gui/window/view_form/model/field.py @@ -106,6 +106,8 @@ class CharField(object): eval(state_changes[key], values) elif key in self.attrs: self.get_state_attrs(model)[key] = self.attrs[key] + if model.mgroup.readonly: + self.get_state_attrs(model)['readonly'] = True if 'value' in state_changes: value = eval(state_changes['value'], values) if value: diff --git a/tryton/gui/window/view_form/model/group.py b/tryton/gui/window/view_form/model/group.py index 544d93e2d3..6e2cdaaa25 100644 --- a/tryton/gui/window/view_form/model/group.py +++ b/tryton/gui/window/view_form/model/group.py @@ -68,7 +68,8 @@ class ModelList(list): class ModelRecordGroup(SignalEvent): - def __init__(self, resource, fields, window, ids=None, parent=None, context=None): + def __init__(self, resource, fields, window, ids=None, parent=None, context=None, + readonly=False): super(ModelRecordGroup, self).__init__() self.window = window self.parent = parent @@ -84,6 +85,7 @@ class ModelRecordGroup(SignalEvent): self.load(ids) self.model_removed = [] self.on_write = '' + self.readonly = readonly @staticmethod def mfields_load(fkeys, models): diff --git a/tryton/gui/window/view_form/screen/screen.py b/tryton/gui/window/view_form/screen/screen.py index 74b15773e2..3c3d57e0e5 100644 --- a/tryton/gui/window/view_form/screen/screen.py +++ b/tryton/gui/window/view_form/screen/screen.py @@ -60,7 +60,8 @@ class Screen(SignalEvent): self.parent = parent self.window = window models = ModelRecordGroup(model_name, self.fields, self.window, - parent=self.parent, context=self.context) + parent=self.parent, context=self.context, + readonly=readonly) self.models_set(models) self.current_model = None self.screen_container = ScreenContainer() @@ -69,7 +70,6 @@ class Screen(SignalEvent): self.__current_view = 0 self.tree_saves = tree_saves self.limit = limit - self.readonly = readonly self.form = form self.fields_view_tree = None self.exclude_field = exclude_field @@ -274,8 +274,6 @@ class Screen(SignalEvent): attrs = node_attributes(node) if attrs.get('widget', False): attrs['type'] = attrs['widget'] - if self.readonly: - attrs['readonly'] = 1 try: fields[str(attrs['name'])].update(attrs) except: