Enforce readonly on WinForm

issue3778
review4511002
This commit is contained in:
Cédric Krier committed 2014-03-28 20:02:24 +01:00
1 parent 4a06e01d9c
commit 5bbf568e73
4 files changed
+15 -7

No files matched your search

@@ -150,10 +150,12 @@ class WidgetInterface(object):
self._readonly_set(self.attrs.get('readonly', True))
self.invisible_set(self.attrs.get('invisible', False))
return
self._readonly_set(self.attrs.get('readonly',
field.get_state_attrs(record).get('readonly', False)))
if self.attrs.get('readonly',
field.get_state_attrs(record).get('readonly', False)):
readonly = self.attrs.get('readonly',
field.get_state_attrs(record).get('readonly', False))
if self.view.screen.readonly:
readonly = True
self._readonly_set(readonly)
if readonly:
self.color_set('readonly')
elif not field.get_state_attrs(record).get('valid', True):
self.color_set('invalid')
@@ -196,7 +196,8 @@ class Many2Many(WidgetInterface):
domain = [domain, add_remove]
screen = Screen(self.attrs['relation'], domain=domain,
view_ids=self.attrs.get('view_ids', '').split(','),
mode=['form'], views_preload=self.attrs.get('views', {}))
mode=['form'], views_preload=self.attrs.get('views', {}),
readonly=self.attrs.get('readonly', False))
screen.load([self.screen.current_record.id])
def callback(result):
@@ -178,6 +178,7 @@ class One2Many(WidgetInterface):
view_ids=attrs.get('view_ids', '').split(','),
views_preload=attrs.get('views', {}),
row_activate=self._on_activate,
readonly=self.attrs.get('readonly', False),
exclude_field=attrs.get('relation_field', None))
self.screen.pre_validate = bool(int(attrs.get('pre_validate', 0)))
self.screen.signal_connect(self, 'record-message', self._sig_label)
+6 -2
View File
@@ -45,10 +45,12 @@ class WinForm(NoModal):
self.accel_group = gtk.AccelGroup()
self.win.add_accel_group(self.accel_group)
readonly = self.screen.readonly or self.screen.group.readonly
self.but_ok = None
self.but_new = None
if view_type == 'form':
if view_type == 'form' and not readonly:
if not new and self.screen.current_record.id < 0:
stock_id = gtk.STOCK_DELETE
else:
@@ -122,7 +124,6 @@ class WinForm(NoModal):
hbox = gtk.HBox(homogeneous=False, spacing=0)
tooltips = common.Tooltips()
access = common.MODELACCESS[screen.model_name]
readonly = self.screen.group.readonly
if domain is not None:
self.wid_text = gtk.Entry()
@@ -400,7 +401,9 @@ class WinForm(NoModal):
validate = False
cancel_responses = (gtk.RESPONSE_CANCEL, gtk.RESPONSE_DELETE_EVENT)
self.screen.current_view.set_value()
readonly = self.screen.group.readonly
if (response_id not in cancel_responses
and not readonly
and self.screen.current_record is not None):
validate = self.screen.current_record.validate(
self.screen.current_view.get_fields())
@@ -426,6 +429,7 @@ class WinForm(NoModal):
self.new()
return
if (self.screen.current_record
and not readonly
and response_id in cancel_responses):
if (self.screen.current_record.id < 0
or self.save_current):