1"""
2Reference archive table from suite and add path to archive root
4@contact: Debian FTP Master <ftpmaster@debian.org>
5@copyright: 2012 Ansgar Burchardt <ansgar@debian.org>
6@license: GNU General Public License version 2 or later
7"""
9# This program is free software; you can redistribute it and/or modify
10# it under the terms of the GNU General Public License as published by
11# the Free Software Foundation; either version 2 of the License, or
12# (at your option) any later version.
14# This program is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17# GNU General Public License for more details.
19# You should have received a copy of the GNU General Public License
20# along with this program; if not, write to the Free Software
21# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23################################################################################
25import psycopg2
26from daklib.dak_exceptions import DBUpdateError
27from daklib.config import Config
29################################################################################
32def do_update(self):
33 print(__doc__)
34 try:
35 cnf = Config()
37 c = self.db.cursor()
39 archive_root = cnf["Dir::Root"]
40 c.execute("ALTER TABLE archive ADD COLUMN path TEXT NOT NULL DEFAULT %s", (archive_root,))
41 c.execute("ALTER TABLE archive ALTER COLUMN path DROP DEFAULT")
43 c.execute("ALTER TABLE archive ADD COLUMN mode CHAR(4) NOT NULL DEFAULT '0644' CHECK (mode SIMILAR TO '[0-7]{4}')")
44 c.execute("ALTER TABLE archive ADD COLUMN tainted BOOLEAN NOT NULL DEFAULT 'f'")
45 c.execute("ALTER TABLE archive ADD COLUMN use_morgue BOOLEAN NOT NULL DEFAULT 't'")
47 c.execute("SELECT id FROM archive")
48 (archive_id,) = c.fetchone()
50 if c.fetchone() is not None: 50 ↛ 51line 50 didn't jump to line 51, because the condition on line 50 was never true
51 raise DBUpdateError("Cannot automatically upgrade form installation with multiple archives.")
53 c.execute("ALTER TABLE suite ADD COLUMN archive_id INT REFERENCES archive(id) NOT NULL DEFAULT %s", (archive_id,))
54 c.execute("ALTER TABLE suite ALTER COLUMN archive_id DROP DEFAULT")
56 c.execute("UPDATE config SET value = '73' WHERE name = 'db_revision'")
57 self.db.commit()
59 except psycopg2.ProgrammingError as msg:
60 self.db.rollback()
61 raise DBUpdateError('Unable to apply sick update 73, rollback issued. Error message : %s' % (str(msg)))