if tuple[1]==sfi: return tuple[0]
return None
+ def sfi_name(self, field):
+ for tuple in Config.supported:
+ if tuple[0] == field: return tuple[1]
+ return None
+
def field_default (self, field):
for tuple in Config.supported:
if tuple[0]==field: return tuple[2]
if self.debug:
print msg
for k in self.fields():
- print "%-20s: %r"%(k,getattr(self,k))
+ print "%-20s: %r"%(k, self.get(k))
def save_config(self):
configfile = self.filename()
tmpfile = configfile + ".tmp"
out = open(tmpfile, "w")
- lineno=0
- fields=self.fields()
+ lineno = 0
+ written_fields = []
+ fields = self.fields()
for line in open(configfile):
lineno += 1
try:
sfi, val = line.split('=')
sfi = sfi.strip()
val = val.strip()
- field=self.sfi_field(sfi)
+ field = self.sfi_field(sfi)
if field:
- newval=getattr(self,field)
- if not self.is_bool_field(field): newval="'%s'"%newval
+ written_fields.append(field)
+ newval = self.get(field)
+ if not self.is_bool_field(field):
+ newval="'%s'"%newval
line = "%s = %s\n" % (sfi, newval)
except:
if self.debug:
import traceback
print 'line',lineno,'ignored',line
out.write(line)
- out.close()
+ # append other field in the end
+ new_fields = [f for f in fields if f not in written_fields]
+ for field in new_fields:
+ sfi = self.sfi_name(field)
+ val = self.get(field)
+ if not self.is_bool_field(field):
+ val="'%s'" % val
+ out.write("%s = %s\n" % (sfi, val))
+
+ out.close()
os.unlink(configfile)
os.rename(tmpfile, configfile)