ORM: Protect against dropping columns.
authorP. Christeas <p_christ@hol.gr>
Sun, 13 Sep 2009 14:30:21 +0000 (17:30 +0300)
committerP. Christeas <p_christ@hol.gr>
Sun, 13 Sep 2009 14:30:21 +0000 (17:30 +0300)
When a column is converted to a function, by default the db column is
dropped. Sometimes this is a bad idea, until the data is migrated.
Let an attribute change this behaviour.

bzr revid: p_christ@hol.gr-20090913143021-6tj3c16n4lli9rls

bin/osv/orm.py

index 029042a..5ee29ca 100644 (file)
@@ -1801,7 +1801,7 @@ class orm(orm_template):
                         f_pg_type = f_pg_def['typname']
                         f_pg_size = f_pg_def['size']
                         f_pg_notnull = f_pg_def['attnotnull']
-                        if isinstance(f, fields.function) and not f.store:
+                        if isinstance(f, fields.function) and not f.store and (not hasattr(f,'nodrop') or not f.nodrop):
                             logger.notifyChannel('orm', netsvc.LOG_INFO, 'column %s (%s) in table %s removed: converted to a function !\n' % (k, f.string, self._table))
                             cr.execute('ALTER TABLE %s DROP COLUMN %s'% (self._table, k))
                             cr.commit()