Make states change more fault tolerant
This commit is contained in:
1 parent
141133c911
commit
90bf877344
2 files changed
+51
-38
No files matched your search
@@ -98,21 +98,24 @@ class CharField(object):
|
||||
if values is None:
|
||||
values = {'state': 'draft'}
|
||||
state_changes = self.attrs.get('states', {})
|
||||
if isinstance(state_changes, basestring):
|
||||
state_changes = eval(state_changes)
|
||||
for key in ('readonly', 'required', 'invisible'):
|
||||
if key in state_changes:
|
||||
self.get_state_attrs(model)[key] = \
|
||||
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:
|
||||
self.set(model, value, test_state=False,
|
||||
modified=True)
|
||||
try:
|
||||
if isinstance(state_changes, basestring):
|
||||
state_changes = eval(state_changes)
|
||||
for key in ('readonly', 'required', 'invisible'):
|
||||
if key in state_changes:
|
||||
self.get_state_attrs(model)[key] = \
|
||||
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:
|
||||
self.set(model, value, test_state=False,
|
||||
modified=True)
|
||||
except:
|
||||
pass
|
||||
|
||||
def get_state_attrs(self, model):
|
||||
if self.name not in model.state_attrs:
|
||||
|
||||
@@ -82,21 +82,25 @@ class Button(object):
|
||||
|
||||
def state_set(self, values):
|
||||
state_changes = self.attrs.get('states', {})
|
||||
if isinstance(state_changes, basestring):
|
||||
state_changes = eval(state_changes)
|
||||
if 'invisible' in state_changes:
|
||||
if eval(state_changes['invisible'], values):
|
||||
self.widget.hide()
|
||||
try:
|
||||
if isinstance(state_changes, basestring):
|
||||
state_changes = eval(state_changes)
|
||||
if 'invisible' in state_changes:
|
||||
if eval(state_changes['invisible'], values):
|
||||
self.widget.hide()
|
||||
else:
|
||||
self.widget.show()
|
||||
else:
|
||||
self.widget.show()
|
||||
else:
|
||||
self.widget.show()
|
||||
if 'readonly' in state_changes:
|
||||
if eval(state_changes['readonly'], values):
|
||||
self.widget.set_sensitive(False)
|
||||
if 'readonly' in state_changes:
|
||||
if eval(state_changes['readonly'], values):
|
||||
self.widget.set_sensitive(False)
|
||||
else:
|
||||
self.widget.set_sensitive(True)
|
||||
else:
|
||||
self.widget.set_sensitive(True)
|
||||
else:
|
||||
except:
|
||||
self.widget.show()
|
||||
self.widget.set_sensitive(True)
|
||||
|
||||
class Label(gtk.Label):
|
||||
@@ -107,14 +111,17 @@ class Label(gtk.Label):
|
||||
|
||||
def state_set(self, values):
|
||||
state_changes = self.attrs.get('states', {})
|
||||
if isinstance(state_changes, basestring):
|
||||
state_changes = eval(state_changes)
|
||||
if 'invisible' in state_changes:
|
||||
if eval(state_changes['invisible'], values):
|
||||
self.hide()
|
||||
try:
|
||||
if isinstance(state_changes, basestring):
|
||||
state_changes = eval(state_changes)
|
||||
if 'invisible' in state_changes:
|
||||
if eval(state_changes['invisible'], values):
|
||||
self.hide()
|
||||
else:
|
||||
self.show()
|
||||
else:
|
||||
self.show()
|
||||
else:
|
||||
except:
|
||||
self.show()
|
||||
|
||||
|
||||
@@ -126,14 +133,17 @@ class VBox(gtk.VBox):
|
||||
|
||||
def state_set(self, values):
|
||||
state_changes = self.attrs.get('states', {})
|
||||
if isinstance(state_changes, basestring):
|
||||
state_changes = eval(state_changes)
|
||||
if 'invisible' in state_changes:
|
||||
if eval(state_changes['invisible'], values):
|
||||
self.hide()
|
||||
try:
|
||||
if isinstance(state_changes, basestring):
|
||||
state_changes = eval(state_changes)
|
||||
if 'invisible' in state_changes:
|
||||
if eval(state_changes['invisible'], values):
|
||||
self.hide()
|
||||
else:
|
||||
self.show()
|
||||
else:
|
||||
self.show()
|
||||
else:
|
||||
except:
|
||||
self.show()
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user