X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fimport_keyring.py;h=602eb3744fb4334ad962a99007e347e271c517eb;hb=5833d1eb6cd1a27cc28cc3e5bdea677bed3915bc;hp=8daf4e5cb0d80749502e53c1912139e717acf89b;hpb=0f101c6b7f641ca20e256839f7f3d763c54c3fbf;p=dak.git diff --git a/dak/import_keyring.py b/dak/import_keyring.py index 8daf4e5c..602eb374 100755 --- a/dak/import_keyring.py +++ b/dak/import_keyring.py @@ -222,8 +222,10 @@ def main(): keyringname = keyring_names[0] keyring = Keyring(keyringname) + is_dm = "false" if Cnf.has_key("Import-Keyring::"+keyringname+"::Debian-Maintainer"): projectB.query("UPDATE keyrings SET debian_maintainer = '%s' WHERE name = '%s'" % (Cnf["Import-Keyring::"+keyringname+"::Debian-Maintainer"], keyringname.split("/")[-1])) + is_dm = Cnf["Import-Keyring::"+keyringname+"::Debian-Maintainer"] keyring_id = database.get_or_set_keyring_id( keyringname.split("/")[-1]) @@ -294,7 +296,12 @@ def main(): projectB.query("UPDATE fingerprint SET uid = %d WHERE id = %d" % (newuid, oldfid)) if oldkid != keyring_id: - projectB.query("UPDATE fingerprint SET keyring = %d WHERE id = %d" % (keyring_id, oldfid)) + # Only change the keyring if it won't result in a loss of permissions + q = projectB.query("SELECT debian_maintainer FROM keyrings WHERE id = '%d'" % (keyring_id)) + if is_dm == "false" and q.getresult()[0][0] == 'f': + projectB.query("UPDATE fingerprint SET keyring = %d WHERE id = %d" % (keyring_id, oldfid)) + else: + print "Key %s exists in both DM and DD keyrings. Not demoting." % (f) # All done!