Package dak :: Package dakdb :: Module update70
[hide private]
[frames] | no frames]

Source Code for Module dak.dakdb.update70

  1  """ 
  2  Add suite options for overrides and control-suite to DB 
  3   
  4  @contact: Debian FTP Master <ftpmaster@debian.org> 
  5  @copyright: 2011 Mark Hymers <mhy@debian.org> 
  6  @license: GNU General Public License version 2 or later 
  7  """ 
  8   
  9  # This program is free software; you can redistribute it and/or modify 
 10  # it under the terms of the GNU General Public License as published by 
 11  # the Free Software Foundation; either version 2 of the License, or 
 12  # (at your option) any later version. 
 13   
 14  # This program is distributed in the hope that it will be useful, 
 15  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
 16  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 17  # GNU General Public License for more details. 
 18   
 19  # You should have received a copy of the GNU General Public License 
 20  # along with this program; if not, write to the Free Software 
 21  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
 22   
 23  ################################################################################ 
 24   
 25  import psycopg2 
 26   
 27  from daklib.config import Config 
 28  from daklib.dak_exceptions import DBUpdateError 
 29   
 30  ################################################################################ 
 31   
 32   
33 -def do_update(self):
34 """ 35 Add suite options for overrides and control-suite to DB 36 """ 37 print(__doc__) 38 try: 39 cnf = Config() 40 41 c = self.db.cursor() 42 43 c.execute( 44 "ALTER TABLE suite ADD COLUMN overrideprocess BOOLEAN NOT NULL DEFAULT FALSE" 45 ) 46 c.execute( 47 "COMMENT ON COLUMN suite.overrideprocess IS %s", 48 ["If true, check-overrides will process the suite by default"], 49 ) 50 c.execute("ALTER TABLE suite ADD COLUMN overrideorigin TEXT DEFAULT NULL") 51 c.execute( 52 "COMMENT ON COLUMN suite.overrideprocess IS %s", 53 [ 54 "If NOT NULL, check-overrides will take missing overrides from the named suite" 55 ], 56 ) 57 58 # Migrate config file values into database 59 if "Check-Overrides::OverrideSuites" in cnf: 60 for suitename in cnf.subtree("Check-Overrides::OverrideSuites").list(): 61 if ( 62 cnf.get( 63 "Check-Overrides::OverrideSuites::%s::Process" % suitename, "0" 64 ) 65 == "1" 66 ): 67 print( 68 "Marking %s to have overrides processed automatically" 69 % suitename.lower() 70 ) 71 c.execute( 72 "UPDATE suite SET overrideprocess = TRUE WHERE suite_name = %s", 73 [suitename.lower()], 74 ) 75 76 originsuite = cnf.get( 77 "Check-Overrides::OverrideSuites::%s::OriginSuite" % suitename, "" 78 ) 79 if originsuite != "": 80 print( 81 "Setting %s to use %s as origin for overrides" 82 % (suitename.lower(), originsuite.lower()) 83 ) 84 c.execute( 85 "UPDATE suite SET overrideorigin = %s WHERE suite_name = %s", 86 [originsuite.lower(), suitename.lower()], 87 ) 88 89 c.execute( 90 "ALTER TABLE suite ADD COLUMN allowcsset BOOLEAN NOT NULL DEFAULT FALSE" 91 ) 92 c.execute( 93 "COMMENT ON COLUMN suite.allowcsset IS %s", 94 ["Allow control-suite to be used with the --set option without forcing"], 95 ) 96 97 # Import historical hard-coded values 98 c.execute( 99 "UPDATE suite SET allowcsset = TRUE WHERE suite_name IN ('testing', 'squeeze-updates')" 100 ) 101 102 c.execute("UPDATE config SET value = '70' WHERE name = 'db_revision'") 103 self.db.commit() 104 105 except psycopg2.ProgrammingError as msg: 106 self.db.rollback() 107 raise DBUpdateError( 108 "Unable to apply sick update 70, rollback issued. Error message : %s" 109 % (str(msg)) 110 )
111