+ # Include all locals() in eval_context, for backwards compatibility
+ eval_context = {
+ 'name': name,
+ 'xml_id': xml_id,
+ 'type': type,
+ 'view_id': view_id,
+ 'domain': domain,
+ 'res_model': res_model,
+ 'src_model': src_model,
+ 'view_type': view_type,
+ 'view_mode': view_mode,
+ 'usage': usage,
+ 'limit': limit,
+ 'auto_refresh': auto_refresh,
+ 'uid' : uid,
+ 'active_id': active_id,
+ 'ref' : ref,
+ }
+ context = self.get_context(data_node, rec, eval_context)
+
+ try:
+ domain = unsafe_eval(domain, eval_context)
+ except NameError:
+ # Some domains contain references that are only valid at runtime at
+ # client-side, so in that case we keep the original domain string
+ # as it is. We also log it, just in case.
+ logging.getLogger("init").debug('Domain value (%s) for element with id "%s" does not parse '\
+ 'at server-side, keeping original string, in case it\'s meant for client side only',
+ domain, xml_id or 'n/a', exc_info=True)