openerp-dev-web team mailing list archive
-
openerp-dev-web team
-
Mailing list archive
-
Message #03787
lp:~openerp-dev/openobject-server/opw-update_selection_field-ach into lp:openobject-server
Anup(OpenERP) has proposed merging lp:~openerp-dev/openobject-server/opw-update_selection_field-ach into lp:openobject-server.
Requested reviews:
Jay Vora (OpenERP) (jvo-openerp)
Olivier Dony (OpenERP) (odo)
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/opw-update_selection_field-ach/+merge/52398
Hello,
Currently we are not able to update the selection field in the database. Using this solution we can update the selection fields.
Thanks.
--
https://code.launchpad.net/~openerp-dev/openobject-server/opw-update_selection_field-ach/+merge/52398
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-server/opw-update_selection_field-ach.
=== modified file 'openerp/osv/orm.py'
--- openerp/osv/orm.py 2011-02-21 17:27:57 +0000
+++ openerp/osv/orm.py 2011-03-07 11:43:53 +0000
@@ -1511,16 +1511,12 @@
else:
del(node.attrib[attribute[0]])
else:
- sib = node.getnext()
for child in node2:
if pos == 'inside':
node.append(child)
elif pos == 'after':
- if sib is None:
- node.addnext(child)
- node = child
- else:
- sib.addprevious(child)
+ node.addnext(child)
+ node = child
elif pos == 'before':
node.addprevious(child)
else:
@@ -2522,14 +2518,18 @@
('numeric', 'float', get_pg_type(f)[1], '::'+get_pg_type(f)[1]),
('float8', 'float', get_pg_type(f)[1], '::'+get_pg_type(f)[1]),
]
- if f_pg_type == 'varchar' and f._type == 'char' and f_pg_size < f.size:
+ f_size = f.size
+ if f._type == 'selection':
+ if f_size is None and f_pg_size != 16:
+ f_size = 16
+ if f_pg_type == 'varchar' and f._type in ('char','selection') and f_pg_size < f_size:
cr.execute('ALTER TABLE "%s" RENAME COLUMN "%s" TO temp_change_size' % (self._table, k))
- cr.execute('ALTER TABLE "%s" ADD COLUMN "%s" VARCHAR(%d)' % (self._table, k, f.size))
- cr.execute('UPDATE "%s" SET "%s"=temp_change_size::VARCHAR(%d)' % (self._table, k, f.size))
+ cr.execute('ALTER TABLE "%s" ADD COLUMN "%s" VARCHAR(%d)' % (self._table, k, f_size))
+ cr.execute('UPDATE "%s" SET "%s"=temp_change_size::VARCHAR(%d)' % (self._table, k, f_size))
cr.execute('ALTER TABLE "%s" DROP COLUMN temp_change_size CASCADE' % (self._table,))
cr.commit()
self.__schema.debug("Table '%s': column '%s' (type varchar) changed size from %s to %s",
- self._table, k, f_pg_size, f.size)
+ self._table, k, f_pg_size, f_size)
for c in casts:
if (f_pg_type==c[0]) and (f._type==c[1]):
if f_pg_type != f_obj_type:
Follow ups