1"""add `authorized_by_fingerprint`
3@contact: Debian FTP Master <ftpmaster@debian.org>
4@copyright: 2025 Ansgar <ansgar@debian.org>
5@license: GNU General Public License version 2 or later
6"""
8# This program is free software; you can redistribute it and/or modify
9# it under the terms of the GNU General Public License as published by
10# the Free Software Foundation; either version 2 of the License, or
11# (at your option) any later version.
13# This program is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16# GNU General Public License for more details.
18# You should have received a copy of the GNU General Public License
19# along with this program; if not, write to the Free Software
20# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22################################################################################
24import psycopg2
26from daklib.dak_exceptions import DBUpdateError
28statements = [
29 """
30 ALTER TABLE binaries
31 ADD COLUMN authorized_by_fingerprint_id INTEGER
32 REFERENCES fingerprint(id)
33 """,
34 """
35 COMMENT ON COLUMN binaries.authorized_by_fingerprint_id
36 IS 'fingerprint of signature used to authorized the upload'
37 """,
38 """
39 ALTER TABLE source
40 ADD COLUMN authorized_by_fingerprint_id INTEGER
41 REFERENCES fingerprint(id)
42 """,
43 """
44 COMMENT ON COLUMN source.authorized_by_fingerprint_id
45 IS 'fingerprint of signature used to authorized the upload'
46 """,
47 """
48 ALTER TABLE changes ADD COLUMN authorized_by_fingerprint TEXT
49 """,
50 """
51 COMMENT ON COLUMN changes.authorized_by_fingerprint
52 IS 'fingerprint of signature used to authorized the upload'
53 """,
54]
56################################################################################
59def do_update(self):
60 print(__doc__)
61 try:
62 c = self.db.cursor()
64 for stmt in statements:
65 c.execute(stmt)
67 c.execute("UPDATE config SET value = '127' WHERE name = 'db_revision'")
68 self.db.commit()
70 except psycopg2.ProgrammingError as msg:
71 self.db.rollback()
72 raise DBUpdateError(
73 "Unable to apply sick update 127, rollback issued. Error message: {0}".format(
74 msg
75 )
76 )