]> git.decadent.org.uk Git - dak.git/blob - update56.py
f04ebc87d6f5afcef2e50f2dda4beb633059ab2a
[dak.git] / update56.py
1 #!/usr/bin/env python
2 # coding=utf8
3
4 """
5 Add order column to metadata_keys
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     Add order column to metadata_keys
35     """
36     print __doc__
37     try:
38         c = self.db.cursor()
39
40         c.execute("ALTER TABLE metadata_keys ADD COLUMN ordering INTEGER NOT NULL DEFAULT 0")
41
42         initial_order = {
43                 'Package': -2600,
44                 'Source': -2500,
45                 'Binary': -2400,
46                 'Version': -2300,
47                 'Essential': -2250,
48                 'Installed-Size': -2200,
49                 'Maintainer': -2100,
50                 'Uploaders': -2090,
51                 'Original-Maintainer': -2080,
52                 'Build-Depends': -2000,
53                 'Build-Depends-Indep': -1990,
54                 'Build-Conflicts': -1980,
55                 'Build-Conflicts-Indep': -1970,
56                 'Architecture': -1800,
57                 'Standards-Version': -1700,
58                 'Format': -1600,
59                 'Files': -1500,
60                 'DM-Upload-Allowed': -1400,
61                 'Vcs-%': -1300,
62                 'Checksums-%': -1200,
63                 'Replaces': -1100,
64                 'Provides': -1000,
65                 'Depends': -900,
66                 'Pre-Depends': -850,
67                 'Recommends': -800,
68                 'Suggests': -700,
69                 'Enhances': -650,
70                 'Conflicts': -600,
71                 'Breaks': -500,
72                 'Description': -400,
73                 'Origin': -300,
74                 'Bugs': -200,
75                 'Multi-Arch': -150,
76                 'Homepage': -100,
77                 'Tag': 300,
78                 'Package-Type': 400,
79                 'Installer-Menu-Item': 500,
80                 }
81
82         for key, order in initial_order.items():
83             c.execute("""UPDATE metadata_keys SET ordering = '%s' WHERE key ILIKE '%s'""" % (order, key))
84
85         c.execute("UPDATE config SET value = '56' WHERE name = 'db_revision'")
86         self.db.commit()
87
88     except psycopg2.ProgrammingError, msg:
89         self.db.rollback()
90         raise DBUpdateError, 'Unable to apply sick update 56, rollback issued. Error message : %s' % (str(msg))