def _get_tracked_fields(self, cr, uid, updated_fields, context=None):
""" Return a structure of tracked fields for the current model.
:param list updated_fields: modified field names
- :return list: a list of (field_name, column_info obj), containing
+ :return dict: a dict mapping field name to description, containing
always tracked fields and modified on_change fields
"""
tracked_fields = []
- for name, column_info in self._all_columns.items():
- visibility = getattr(column_info.column, 'track_visibility', False)
+ for name, field in self._fields.items():
+ visibility = getattr(field, 'track_visibility', False)
if visibility == 'always' or (visibility == 'onchange' and name in updated_fields) or name in self._track:
tracked_fields.append(name)
# generate tracked_values data structure: {'col_name': {col_info, new_value, old_value}}
for col_name, col_info in tracked_fields.items():
+ field = self._fields[col_name]
initial_value = initial[col_name]
record_value = getattr(browse_record, col_name)
- if record_value == initial_value and getattr(self._all_columns[col_name].column, 'track_visibility', None) == 'always':
- tracked_values[col_name] = dict(col_info=col_info['string'],
- new_value=convert_for_display(record_value, col_info))
+ if record_value == initial_value and getattr(field, 'track_visibility', None) == 'always':
+ tracked_values[col_name] = dict(
+ col_info=col_info['string'],
+ new_value=convert_for_display(record_value, col_info),
+ )
elif record_value != initial_value and (record_value or initial_value): # because browse null != False
- if getattr(self._all_columns[col_name].column, 'track_visibility', None) in ['always', 'onchange']:
- tracked_values[col_name] = dict(col_info=col_info['string'],
- old_value=convert_for_display(initial_value, col_info),
- new_value=convert_for_display(record_value, col_info))
+ if getattr(field, 'track_visibility', None) in ['always', 'onchange']:
+ tracked_values[col_name] = dict(
+ col_info=col_info['string'],
+ old_value=convert_for_display(initial_value, col_info),
+ new_value=convert_for_display(record_value, col_info),
+ )
if col_name in tracked_fields:
changes.add(col_name)
if not changes:
res = {}
for record in self.browse(cr, SUPERUSER_ID, ids, context=context):
recipient_ids, email_to, email_cc = set(), False, False
- if 'partner_id' in self._all_columns and record.partner_id:
+ if 'partner_id' in self._fields and record.partner_id:
recipient_ids.add(record.partner_id.id)
- elif 'email_from' in self._all_columns and record.email_from:
+ elif 'email_from' in self._fields and record.email_from:
email_to = record.email_from
- elif 'email' in self._all_columns:
+ elif 'email' in self._fields:
email_to = record.email
res[record.id] = {'partner_ids': list(recipient_ids), 'email_to': email_to, 'email_cc': email_cc}
return res
""" Returns suggested recipients for ids. Those are a list of
tuple (partner_id, partner_name, reason), to be managed by Chatter. """
result = dict((res_id, []) for res_id in ids)
- if self._all_columns.get('user_id'):
+ if 'user_id' in self._fields:
for obj in self.browse(cr, SUPERUSER_ID, ids, context=context): # SUPERUSER because of a read on res.users that would crash otherwise
if not obj.user_id or not obj.user_id.partner_id:
continue
- self._message_add_suggested_recipient(cr, uid, result, obj, partner=obj.user_id.partner_id, reason=self._all_columns['user_id'].column.string, context=context)
+ self._message_add_suggested_recipient(cr, uid, result, obj, partner=obj.user_id.partner_id, reason=self._fields['user_id'].string, context=context)
return result
def _find_partner_from_emails(self, cr, uid, id, emails, model=None, context=None, check_followers=True):
if auto_follow_fields is None:
auto_follow_fields = ['user_id']
user_field_lst = []
- for name, column_info in self._all_columns.items():
- if name in auto_follow_fields and name in updated_fields and getattr(column_info.column, 'track_visibility', False) and column_info.column._obj == 'res.users':
+ for name, field in self._fields.items():
+ if name in auto_follow_fields and name in updated_fields and getattr(field, 'track_visibility', False) and field.comodel_name == 'res.users':
user_field_lst.append(name)
return user_field_lst
# TDE HACK: originally by MAT from portal/mail_mail.py but not working until the inheritance graph bug is not solved in trunk
# TDE FIXME: relocate in portal when it won't be necessary to reload the hr.employee model in an additional bridge module
- if self.pool['res.groups']._all_columns.get('is_portal'):
+ if 'is_portal' in self.pool['res.groups']._fields:
user = self.pool.get('res.users').browse(cr, SUPERUSER_ID, uid, context=context)
if any(group.is_portal for group in user.groups_id):
return []