Thibault Delavallée (OpenERP) has proposed merging 
lp:~openerp-dev/openobject-server/trunk-field-deprecated-tde into 
lp:openobject-server.

Requested reviews:
  OpenERP Core Team (openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-field-deprecated-tde/+merge/119093

Deprecated attribute on fields

This revision adds a 'deprecated' attribute on fields. If not False, is a 
string, and make the ORM print a warning telling the field is deprecated.
Use: 'my_field': fields.char('Old field', size=64, deprecated="This field will 
be removed as of version 42 of OpenERP. Please update your module to use 
'my_new_field' instead.")
-- 
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-field-deprecated-tde/+merge/119093
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-server/trunk-field-deprecated-tde.
=== modified file 'openerp/osv/fields.py'
--- openerp/osv/fields.py	2012-08-06 10:45:14 +0000
+++ openerp/osv/fields.py	2012-08-10 08:25:10 +0000
@@ -109,6 +109,7 @@
         self.selectable = True
         self.group_operator = args.get('group_operator', False)
         self.groups = False  # CSV list of ext IDs of groups that can access this field
+        self.deprecated = False # Optional deprecation warning
         for a in args:
             if args[a]:
                 setattr(self, a, args[a])

=== modified file 'openerp/osv/orm.py'
--- openerp/osv/orm.py	2012-08-03 14:29:52 +0000
+++ openerp/osv/orm.py	2012-08-10 08:25:10 +0000
@@ -3598,6 +3598,13 @@
                             record[f] = res2[record['id']]
                         else:
                             record[f] = []
+
+        # Warn about deprecated fields now that fields_pre and fields_post are computed
+        for f in fields_pre + fields_post:
+            field_column = self._all_columns.get(f) and self._all_columns.get(f).column
+            if field_column and field_column.deprecated:
+                _logger.warning('Field %s.%s is deprecated: %s', self._name, f, field_column.deprecated)
+
         readonly = None
         for vals in res:
             for field in vals.copy():
@@ -3975,6 +3982,9 @@
         direct = []
         totranslate = context.get('lang', False) and (context['lang'] != 'en_US')
         for field in vals:
+            field_column = self._all_columns.get(field) and self._all_columns.get(field).column
+            if field_column and field_column.deprecated:
+                _logger.warning('Field %s.%s is deprecated: %s', self._name, field, field_column.deprecated)
             if field in self._columns:
                 if self._columns[field]._classic_write and not (hasattr(self._columns[field], '_fnct_inv')):
                     if (not totranslate) or not self._columns[field].translate:

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to