--- a/src/mediaserver/cdplugins/pycommon/conftree.py
+++ b/src/mediaserver/cdplugins/pycommon/conftree.py
@@ -1,4 +1,21 @@
#!/usr/bin/env python
+# Copyright (C) 2016 J.F.Dockes
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the
+# Free Software Foundation, Inc.,
+# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
from __future__ import print_function
import locale
@@ -13,9 +30,12 @@
ini file (see the Recoll manual). It's a dictionary of dictionaries which
lets you retrieve named values from the top level or a subsection"""
- def __init__(self, confname, tildexp = False):
+ def __init__(self, confname, tildexp = False, readonly = True):
self.submaps = {}
self.dotildexpand = tildexp
+ self.readonly = readonly
+ self.confname = confname
+
try:
f = open(confname, 'r')
except Exception as exc:
@@ -71,6 +91,32 @@
if not nm in self.submaps[sk]:
return None
return self.submaps[sk][nm]
+
+ def _rewrite(self):
+ if self.readonly:
+ raise Exception("ConfSimple is readonly")
+
+ tname = self.confname + "-"
+ f = open(tname, 'w')
+ # First output null subkey submap
+ if '' in self.submaps:
+ for nm,value in self.submaps[''].iteritems():
+ f.write(nm + " = " + value + "\n")
+ for sk,mp in self.submaps.iteritems():
+ if sk == '':
+ continue
+ f.write("[" + sk + "]\n")
+ for nm,value in mp.iteritems():
+ f.write(nm + " = " + value + "\n")
+ f.close()
+ os.rename(tname, self.confname)
+
+ def set(self, nm, value, sk = ''):
+ if self.readonly:
+ raise Exception("ConfSimple is readonly")
+ self.submaps[sk][nm] = value
+ self._rewrite()
+ return True
def getNames(self, sk = ''):
if not sk in self.submaps: