openerp-dev-web team mailing list archive
-
openerp-dev-web team
-
Mailing list archive
-
Message #05430
[Merge] lp:~openerp-dev/openobject-client/trunk-attrs_on_group-rga into lp:openobject-client
Ravi Gadhia (OpenERP) has proposed merging lp:~openerp-dev/openobject-client/trunk-attrs_on_group-rga into lp:openobject-client.
Requested reviews:
Naresh(OpenERP) (nch-openerp)
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-client/trunk-attrs_on_group-rga/+merge/57489
Hello
1) Now group attrs(required/readonly) implicitly apply on it's all children.
2) Remove field from state_aware_widget list
3) Improve form view display method.
--
https://code.launchpad.net/~openerp-dev/openobject-client/trunk-attrs_on_group-rga/+merge/57489
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-client/trunk-attrs_on_group-rga.
=== modified file 'bin/widget/model/field.py'
--- bin/widget/model/field.py 2011-04-08 11:49:01 +0000
+++ bin/widget/model/field.py 2011-04-13 13:33:28 +0000
@@ -131,7 +131,7 @@
def create(self, model):
return False
- def attrs_set(self, model):
+ def attrs_set(self, model, widget=None):
uid = rpc.session.uid
try:
attrs_changes = eval(self.attrs.get('attrs',"{}"))
@@ -147,23 +147,28 @@
for k,v in attrs_changes.items():
result = True
result = tools.calc_condition(self, model, v)
- if result:
- self.get_state_attrs(model)[k]=True
+ if k == 'invisible' and widget:
+ func = ['show_all', 'hide_all'][bool(result)]
+ getattr(widget, func)()
+ elif k in ['readonly', 'required'] :
+ self.get_state_attrs(model)[k] = result
def state_set(self, model, state='draft'):
ro = model.mgroup._readonly
state_changes = dict(self.attrs.get('states',{}).get(state,[]))
if 'readonly' in state_changes:
- self.get_state_attrs(model)['readonly'] = state_changes.get('readonly', False) or ro
+ self.get_state_attrs(model)['readonly'] = state_changes.get('readonly', False)
else:
- self.get_state_attrs(model)['readonly'] = self.attrs.get('readonly', False) or ro
+ if (self.attrs.get('readonly', False) or ro) and ro or self.attrs['readonly']:
+ self.get_state_attrs(model)['readonly'] = True
if 'required' in state_changes:
self.get_state_attrs(model)['required'] = state_changes.get('required', False)
else:
- self.get_state_attrs(model)['required'] = self.attrs.get('required', False)
+ if self.attrs.get('required', False):
+ self.get_state_attrs(model)['required'] = self.attrs['required']
if 'value' in state_changes:
self.set(model, state_changes['value'], test_state=False, modified=True)
-
+
def get_state_attrs(self, model):
if self.name not in model.state_attrs:
model.state_attrs[self.name] = self.attrs.copy()
=== modified file 'bin/widget/view/form.py'
--- bin/widget/view/form.py 2011-03-31 09:26:25 +0000
+++ bin/widget/view/form.py 2011-04-13 13:33:28 +0000
@@ -47,7 +47,7 @@
if modelfield:
modelfield.state_set(model, state)
if modelfield.attrs.get('attrs',False):
- modelfield.attrs_set(model)
+ modelfield.attrs_set(model, self.widget)
if hasattr(self.widget,'screen') and self.widget.screen.type in ('one2many','many2many'):
self.widget.pager.reset_pager()
self.widget.display(model, modelfield)
=== modified file 'bin/widget/view/form_gtk/parser.py'
--- bin/widget/view/form_gtk/parser.py 2011-04-13 05:07:59 +0000
+++ bin/widget/view/form_gtk/parser.py 2011-04-13 13:33:28 +0000
@@ -156,7 +156,6 @@
def attrs_set(self, model):
sa = getattr(self.widget, 'attrs') or {}
-
attrs_changes = eval(sa.get('attrs',"{}"),{'uid':rpc.session.uid})
for k,v in attrs_changes.items():
result = True
@@ -166,14 +165,13 @@
getattr(self.widget, func)()
if self.label:
getattr(self.label, func)()
- elif k == 'readonly':
+ elif k in ['readonly', 'required'] and model:
if isinstance(self.widget, gtk.Frame):
for name, wid in self.group_child.iteritems():
- wid.set_sensitive(not result)
- else:
+ model.mgroup.mfields[name].get_state_attrs(model)[k] = result
+ elif k == 'readonly':
self.widget.set_sensitive(not result)
-
class _container(object):
def __init__(self):
self.cont = []
@@ -500,9 +498,6 @@
detail_tooltip = self.create_detail_tooltip(name, fields[name])
widget_label = container.create_label(label, help=hlp, fname=name, detail_tooltip=detail_tooltip) if label else None
- if attrs.get('attrs'):
- saw_list.append(StateAwareWidget(widget_act, widget_label))
-
container.wid_add(widget=widget_act.widget, label=widget_label, expand=expand, translate=translate, colspan=size, fname=name, fill=fill)
elif node.tag =='group':
Follow ups