X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fconfig.py;h=fef7512d8b405ccf8e72e8d2164ecb5499cba3af;hb=8d28609033fdaedc4ae0033762f5b8c038293843;hp=2d0b8e851d7df11db3dd1bba146651b732548b49;hpb=ca19ea22806872ba8360086b121c468689fe98df;p=dak.git diff --git a/daklib/config.py b/daklib/config.py old mode 100644 new mode 100755 index 2d0b8e85..fef7512d --- a/daklib/config.py +++ b/daklib/config.py @@ -36,6 +36,18 @@ import socket default_config = "/etc/dak/dak.conf" #: default dak config, defines host properties +# suppress some deprecation warnings in squeeze related to apt_pkg +# module +import warnings +warnings.filterwarnings('ignore', \ + "Attribute '.*' of the 'apt_pkg.*' object is deprecated, use '.*' instead\.", \ + DeprecationWarning) +warnings.filterwarnings('ignore', \ + "apt_pkg.*\(\) is deprecated\. .* apt_pkg.*\(\) for the replacement\.", \ + DeprecationWarning) + +################################################################################ + def which_conf_file(): return os.getenv("DAK_CONFIG", default_config) @@ -53,6 +65,7 @@ class Config(object): if not getattr(self, 'initialised', False): self.initialised = True self._readconf() + self._setup_routines() def _readconf(self): apt_pkg.init() @@ -84,3 +97,42 @@ class Config(object): def __setitem__(self, name, value): self.Cnf[name] = value + + @staticmethod + def get_db_value(name, default=None, rettype=None): + from daklib.dbconn import DBConfig, DBConn, NoResultFound + try: + res = DBConn().session().query(DBConfig).filter(DBConfig.name == name).one() + except NoResultFound: + return default + + if rettype: + return rettype(res.value) + else: + return res.value + + def _setup_routines(self): + """ + This routine is the canonical list of which fields need to exist in + the config table. If your dak instance is to work, we suggest reading it + + Of course, what the values do is another matter + """ + for field in [('db_revision', None, int), + ('defaultsuitename', 'unstable', str), + ('signingkeyids', '', str), + ('exportpath', '', str) + ]: + setattr(self, 'get_%s' % field[0], lambda s=None, x=field[0], y=field[1], z=field[2]: self.get_db_value(x, y, z)) + setattr(Config, '%s' % field[0], property(fget=getattr(self, 'get_%s' % field[0]))) + + def get_defaultsuite(self): + from daklib.dbconn import get_suite + suitename = self.defaultsuitename + if not suitename: + return None + else: + return get_suite(suitename) + + defaultsuite = property(get_defaultsuite) +