1 """
2 add world schema and new stable views
3
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 """
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import psycopg2
26 from daklib.dak_exceptions import DBUpdateError
27 from daklib.config import Config
28
29
30
31
33 print(__doc__)
34 try:
35 cnf = Config()
36
37 c = self.db.cursor()
38
39 c.execute("CREATE SCHEMA world")
40 c.execute("GRANT USAGE ON SCHEMA world TO PUBLIC")
41 c.execute("ALTER DEFAULT PRIVILEGES IN SCHEMA world GRANT SELECT ON TABLES TO PUBLIC")
42 c.execute("ALTER DEFAULT PRIVILEGES IN SCHEMA world GRANT ALL ON TABLES TO ftpmaster")
43 c.execute("ALTER DEFAULT PRIVILEGES IN SCHEMA world GRANT SELECT ON SEQUENCES TO PUBLIC")
44 c.execute("ALTER DEFAULT PRIVILEGES IN SCHEMA world GRANT ALL ON SEQUENCES TO ftpmaster")
45 c.execute("ALTER DEFAULT PRIVILEGES IN SCHEMA world GRANT ALL ON FUNCTIONS TO ftpmaster")
46 c.execute("""
47 CREATE OR REPLACE VIEW world."files-1" AS
48 SELECT
49 files.id AS id,
50 component.name || '/' || files.filename AS filename,
51 files.size AS size,
52 files.md5sum AS md5sum,
53 files.sha1sum AS sha1sum,
54 files.sha256sum AS sha256sum,
55 files.last_used AS last_used,
56 files.created AS created,
57 files.modified AS modified
58 FROM files
59 JOIN files_archive_map fam ON files.id = fam.file_id
60 JOIN component ON fam.component_id = component.id
61 WHERE fam.archive_id = (SELECT id FROM archive WHERE name IN ('backports', 'ftp-master', 'security'))
62 """)
63
64 c.execute("UPDATE config SET value = '79' WHERE name = 'db_revision'")
65 self.db.commit()
66
67 except psycopg2.ProgrammingError as msg:
68 self.db.rollback()
69 raise DBUpdateError('Unable to apply sick update 79, rollback issued. Error message: {0}'.format(msg))
70