Merge lp:~therp-nl/openupgrade-server/6.1_UTC_fixes into lp:openupgrade-server/6.1

Proposed by Holger Brunn (Therp)
Status: Merged
Merged at revision: 3994
Proposed branch: lp:~therp-nl/openupgrade-server/6.1_UTC_fixes
Merge into: lp:openupgrade-server/6.1
Diff against target: 44 lines (+18/-4)
1 file modified
openerp/addons/base/migrations/6.1.1.3/pre-migration.py (+18/-4)
To merge this branch: bzr merge lp:~therp-nl/openupgrade-server/6.1_UTC_fixes
Reviewer Review Type Date Requested Status
Stefan Rijnhart (Opener) Approve
Review via email: mp+126018@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Stefan Rijnhart (Opener) (stefan-opener) wrote :

Excellent use of PostgreSQL API, thanks!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'openerp/addons/base/migrations/6.1.1.3/pre-migration.py'
2--- openerp/addons/base/migrations/6.1.1.3/pre-migration.py 2012-02-17 15:05:04 +0000
3+++ openerp/addons/base/migrations/6.1.1.3/pre-migration.py 2012-09-24 14:06:46 +0000
4@@ -11,6 +11,10 @@
5 logger = logging.getLogger('OpenUpgrade')
6 me = os.path.realpath( __file__ )
7
8+update_timezone_statement="""update "%(table)s" set "%(column)s"="%(column)s"-
9+(interval '1 second')*
10+extract(timezone from cast("%(column)s" as timestamp with time zone))"""
11+
12 renames = {
13 # this is a mapping per table from old column name
14 # to new column name, e.g.
15@@ -82,9 +86,21 @@
16 cr,
17 "UPDATE ir_module_module SET demo = false")
18
19+def migrate_timestamps(cr):
20+ cr.execute("""
21+ select attname,relname from pg_class join pg_attribute
22+ on pg_class.oid=pg_attribute.attrelid
23+ where pg_attribute.atttypid in
24+ (select oid from pg_type where typname='timestamp')
25+ and relkind='r'
26+ """)
27+ for row in cr.fetchall():
28+ logger.info('fixing UTC offset for %(table)s.%(column)s' %
29+ {'table': row[1], 'column': row[0]})
30+ cr.execute(update_timezone_statement %
31+ {'table': row[1], 'column': row[0]})
32 def migrate(cr, version):
33- try:
34- logger.info("%s called", me)
35+ migrate_timestamps(cr)
36 add_serialization_field(cr)
37 set_main_company(cr)
38 openupgrade.rename_columns(cr, renames)
39@@ -94,5 +110,3 @@
40 )
41 fix_module_ids(cr)
42 disable_demo_data(cr)
43- except Exception, e:
44- raise osv.except_osv("OpenUpgrade", '%s: %s' % (me, e))

Subscribers

People subscribed via source and target branches

to status/vote changes: