Handle datetime_field in xxx2Many

This commit is contained in:
Cédric Krier committed 2009-10-05 15:41:57 +02:00
1 parent a475d88081
commit 05d1d3d81b
5 files changed
+26 -6

No files matched your search

+1
View File
@@ -1,3 +1,4 @@
* Handle datetime_field in xxx2Many
* Add new safe_eval
* Ask previous password for set_preferences on password change
* Add "Statusbar" option
+6 -3
View File
@@ -460,7 +460,8 @@ class O2MField(CharField):
from group import ModelRecordGroup
mod = ModelRecordGroup(self.attrs['relation'], {}, model.window,
parent=model, parent_name=self.attrs.get('relation_field', ''),
context=self.context)
context=self.context,
parent_datetime_field=self.attrs.get('datetime_field'))
mod.signal_connect(mod, 'model-changed', self._model_changed)
return mod
@@ -518,7 +519,8 @@ class O2MField(CharField):
from group import ModelRecordGroup
mod = ModelRecordGroup(self.attrs['relation'], {}, model.window,
parent=model, parent_name=self.attrs.get('relation_field', ''),
context=self.context)
context=self.context,
parent_datetime_field=self.attrs.get('datetime_field'))
mod.signal_connect(mod, 'model-changed', self._model_changed)
model.value[self.name] = mod
#self.internal.signal_connect(self.internal, 'model-changed',
@@ -550,7 +552,8 @@ class O2MField(CharField):
model.value[self.name] = ModelRecordGroup(
self.attrs['relation'], fields, model.window, parent=model,
parent_name=self.attrs.get('relation_field', ''),
context=self.context)
context=self.context,
parent_datetime_field=self.attrs.get('datetime_field'))
model.value[self.name].signal_connect(model.value[self.name],
'model-changed', self._model_changed)
mod = None
+6 -1
View File
@@ -73,11 +73,13 @@ class ModelList(list):
class ModelRecordGroup(SignalEvent):
def __init__(self, resource, fields, window, ids=None, parent=None,
parent_name='', context=None, readonly=False):
parent_name='', context=None, readonly=False,
parent_datetime_field=None):
super(ModelRecordGroup, self).__init__()
self.window = window
self.parent = parent
self.parent_name = parent_name
self.parent_datetime_field = parent_datetime_field
self._context = context or {}
self.resource = resource
self.rpc = RPCProxy(resource)
@@ -223,6 +225,9 @@ class ModelRecordGroup(SignalEvent):
def _get_context(self):
ctx = rpc.CONTEXT.copy()
ctx.update(self._context)
if self.parent_datetime_field:
ctx['_datetime'] = self.parent.get_eval(check_load=False)\
[self.parent_datetime_field]
return ctx
context = property(_get_context)
@@ -146,7 +146,17 @@ class Many2Many(WidgetInterface):
ids = []
if model_field:
ids = model_field.get_client(model)
if ids != self.old:
reload = False
if self.attrs.get('datetime_field'):
datetime_field = model.get_eval(check_load=False)\
[self.attrs['datetime_field']]
if self.screen.context.get('_datetime') != datetime_field:
self.screen.context['_datetime'] = datetime_field
reload = True
if self.screen.models.context.get('_datetime') != datetime_field:
self.screen.models._context['_datetime'] = datetime_field
reload = True
if ids != self.old or reload:
self.screen.clear()
self.screen.load(ids, set_cursor=False)
self.old = ids
@@ -579,7 +579,8 @@ class One2Many(WidgetInterface):
domain = modelfield.domain_get(self._view.model)
dia = Dialog(self.attrs['relation'], parent=self._view.model,
model=self.screen.current_model, attrs=self.attrs,
window=self._window, readonly=readonly, domain=domain)
window=self._window, readonly=readonly, domain=domain,
model_ctx=self.screen.models.context)
res, value = dia.run()
dia.destroy()