]> git.decadent.org.uk Git - dak.git/blob - dak/dakdb/update60.py
Convert exception handling to Python3 syntax.
[dak.git] / dak / dakdb / update60.py
1 #!/usr/bin/env python
2 # coding=utf8
3
4 """
5 Make external overrides specific for (suite, component)
6
7 @contact: Debian FTP Master <ftpmaster@debian.org>
8 @copyright: 2011 Ansgar Burchardt <ansgar@debian.org>
9 @license: GNU General Public License version 2 or later
10 """
11
12 # This program is free software; you can redistribute it and/or modify
13 # it under the terms of the GNU General Public License as published by
14 # the Free Software Foundation; either version 2 of the License, or
15 # (at your option) any later version.
16
17 # This program is distributed in the hope that it will be useful,
18 # but WITHOUT ANY WARRANTY; without even the implied warranty of
19 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20 # GNU General Public License for more details.
21
22 # You should have received a copy of the GNU General Public License
23 # along with this program; if not, write to the Free Software
24 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
25
26 ################################################################################
27
28 import psycopg2
29 from daklib.dak_exceptions import DBUpdateError
30
31 ################################################################################
32 def do_update(self):
33     """
34     Make external overrides specific for (suite, component)
35     """
36     print __doc__
37     try:
38         c = self.db.cursor()
39
40         c.execute("DELETE FROM external_overrides")
41         print "NOTE: Please reimport the external overrides."
42
43         c.execute("""
44         ALTER TABLE external_overrides
45             DROP CONSTRAINT external_overrides_pkey,
46             ADD COLUMN suite INTEGER NOT NULL REFERENCES suite(id),
47             ADD COLUMN component INTEGER NOT NULL REFERENCES component(id),
48             ADD PRIMARY KEY (suite, component, package, key)
49         """)
50
51         c.execute("UPDATE config SET value = '60' WHERE name = 'db_revision'")
52         self.db.commit()
53
54     except psycopg2.ProgrammingError as msg:
55         self.db.rollback()
56         raise DBUpdateError, 'Unable to apply sick update 60, rollback issued. Error message : %s' % (str(msg))