X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fconfig.py;h=a6a7951e806d4654534a1d65631b4cf96413fe12;hb=391f5ec09a119131dc846b796ca791f4cecc69e4;hp=7e3c8bac582baf895a8a3b7f2b08d39d5619566c;hpb=9a4fb568340b14698947bfa59b309ae0c67c693a;p=dak.git diff --git a/daklib/config.py b/daklib/config.py old mode 100755 new mode 100644 index 7e3c8bac..a6a7951e --- a/daklib/config.py +++ b/daklib/config.py @@ -28,6 +28,7 @@ Config access class ################################################################################ +import grp import os import apt_pkg import socket @@ -76,6 +77,19 @@ class Config(object): if conffile: apt_pkg.read_config_file_isc(self.Cnf, conffile) + # Read group-specific options + if 'ByGroup' in self.Cnf: + bygroup = self.Cnf.subtree('ByGroup') + groups = set([os.getgid()]) + groups.update(os.getgroups()) + + for group in bygroup.list(): + gid = grp.getgrnam(group).gr_gid + if gid in groups: + if bygroup.get(group): + apt_pkg.read_config_file_isc(self.Cnf, bygroup[group]) + break + # Rebind some functions # TODO: Clean this up self.get = self.Cnf.get @@ -83,9 +97,13 @@ class Config(object): self.value_list = self.Cnf.value_list self.find = self.Cnf.find self.find_b = self.Cnf.find_b + self.find_i = self.Cnf.find_i def has_key(self, name): - return self.Cnf.has_key(name) + return name in self.Cnf + + def __contains__(self, name): + return name in self.Cnf def __getitem__(self, name): return self.Cnf[name] @@ -115,7 +133,7 @@ class Config(object): """ for field in [('db_revision', None, int), ('defaultsuitename', 'unstable', str), - ('exportpath', '', str) + ('use_extfiles', None, int) ]: 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]))) @@ -129,4 +147,3 @@ class Config(object): return get_suite(suitename) defaultsuite = property(get_defaultsuite) -