]> git.decadent.org.uk Git - dak.git/blob - dak/dakdb/update79.py
Adjust to deal with the new Debian supplementaryGid
[dak.git] / dak / dakdb / update79.py
1 #!/usr/bin/env python
2 # coding=utf8
3
4 """
5 add world schema and new stable views
6
7 @contact: Debian FTP Master <ftpmaster@debian.org>
8 @copyright: 2012 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 from daklib.config import Config
31
32 ################################################################################
33 def do_update(self):
34     print __doc__
35     try:
36         cnf = Config()
37
38         c = self.db.cursor()
39
40         c.execute("CREATE SCHEMA world");
41         c.execute("GRANT USAGE ON SCHEMA world TO PUBLIC")
42         c.execute("ALTER DEFAULT PRIVILEGES IN SCHEMA world GRANT SELECT ON TABLES TO PUBLIC")
43         c.execute("ALTER DEFAULT PRIVILEGES IN SCHEMA world GRANT ALL ON TABLES TO ftpmaster")
44         c.execute("ALTER DEFAULT PRIVILEGES IN SCHEMA world GRANT SELECT ON SEQUENCES TO PUBLIC")
45         c.execute("ALTER DEFAULT PRIVILEGES IN SCHEMA world GRANT ALL ON SEQUENCES TO ftpmaster")
46         c.execute("ALTER DEFAULT PRIVILEGES IN SCHEMA world GRANT ALL ON FUNCTIONS TO ftpmaster")
47         c.execute("""
48             CREATE OR REPLACE VIEW world."files-1" AS
49               SELECT
50                 files.id AS id,
51                 component.name || '/' || files.filename AS filename,
52                 files.size AS size,
53                 files.md5sum AS md5sum,
54                 files.sha1sum AS sha1sum,
55                 files.sha256sum AS sha256sum,
56                 files.last_used AS last_used,
57                 files.created AS created,
58                 files.modified AS modified
59               FROM files
60               JOIN files_archive_map fam ON files.id = fam.file_id
61               JOIN component ON fam.component_id = component.id
62               WHERE fam.archive_id = (SELECT id FROM archive WHERE name IN ('backports', 'ftp-master', 'security'))
63             """)
64
65
66         c.execute("UPDATE config SET value = '79' WHERE name = 'db_revision'")
67         self.db.commit()
68
69     except psycopg2.ProgrammingError as msg:
70         self.db.rollback()
71         raise DBUpdateError('Unable to apply sick update 79, rollback issued. Error message: {0}'.format(msg))