--- a/iro/config.py Sat Mar 10 19:00:12 2012 +0100
+++ b/iro/config.py Sat Mar 10 19:01:31 2012 +0100
@@ -12,12 +12,13 @@
def read(self,files):
from offer import getProvider
- ConfigParser.read(self, files)
+ r = ConfigParser.read(self, files)
for s in self.sections():
if s == "main":
main.validate(self.items(s))
else:
getProvider("tmp", self.get(s,'typ'), self.items(s))
+ return r
def reload_(self):
for f in self.reloadList:
@@ -34,13 +35,14 @@
self.must = must
self.default = default
-class Config():
+class Config:
def __init__(self, name):
self.name = name
self.options={
"port":Option(partial(vInteger,minv=0),long="Port under that twisted is running",must=True),
"dburl":Option(lambda x,y:x,long="Connection URL to database",must=True),
}
+ self.order = ["dburl","port"]
self._init=True
@@ -72,6 +74,23 @@
else:
return True
+ def sampleConf(self):
+ ret=[]
+ for o in self.order:
+ opt=self.options[o]
+ if opt.long:
+ ret.append("# "+opt.long)
+ if opt.must:
+ s= "%s = "%o
+ if opt.default is not None:
+ s += str(opt.default)
+ ret.append(s)
+ else:
+ ret.append("# %s = %s"%(o,opt.default))
+ ret.append("")
+
+ return ["[%s]"%self.name,]+ret
+
def readConfig():
configParser.read(confFiles)
configParser.reload()
--- a/iro/offer/provider.py Sat Mar 10 19:00:12 2012 +0100
+++ b/iro/offer/provider.py Sat Mar 10 19:01:31 2012 +0100
@@ -10,9 +10,11 @@
self.testmode = False
self.options = {
- "typ":Option(vProvider, long="One available provider typ.", must=True)
+ "typ":Option(vProvider, long="One available provider typ.", must=True, default=name)
}
+ self.order = ["typ"]
+
def send(self, typ, route, recipient, message):
pass
--- a/iro/offer/smstrade.py Sat Mar 10 19:00:12 2012 +0100
+++ b/iro/offer/smstrade.py Sat Mar 10 19:01:31 2012 +0100
@@ -83,6 +83,7 @@
self.options.update({
"key":Option(lambda x,y:x,long="smstrade Gateway Key https://login.smstrade.de/index.php?gateway", must=True)
})
+ self.order.append("key")
def send(self, route, recipient, sms):
"""send SMS with $sms to $recipients"""
--- a/iro/offer/smtp.py Sat Mar 10 19:00:12 2012 +0100
+++ b/iro/offer/smtp.py Sat Mar 10 19:01:31 2012 +0100
@@ -29,9 +29,10 @@
"port":Option(partial(vInteger,minv=0),long="Port of the MTA", default=25),
"user":Option(lambda x,y:x, long="username to login into MTA.",default=""),
"password":Option(lambda x,y:x, long="password to login into MTA.",default=""),
+ "SSL":Option(vBool,long="use SSL for connection to MTA", default=False),
"TLS":Option(vBool,long="use TLS for connection to MTA", default=False),
- "SSL":Option(vBool,long="use SSL for connection to MTA", default=False),
})
+ self.order.extend(["host","port","user","password","SSL","TLS","send_from"])
def send(self, recipient, mail):
if not self.testmode:
--- a/tests/config.py Sat Mar 10 19:00:12 2012 +0100
+++ b/tests/config.py Sat Mar 10 19:01:31 2012 +0100
@@ -166,3 +166,22 @@
c2.dburl = "dburl2"
self.assertFalse(c2.same(c1))
self.assertFalse(c1.same(c2))
+
+ def testSampleConf(self):
+ c1 = config.Config("1")
+ self.assertEqual(c1.sampleConf(),["[1]",
+ "# Connection URL to database",
+ "dburl = ","",
+ "# Port under that twisted is running",
+ "port = ",""])
+
+ def testsampleConfDefault(self):
+ c1 = config.Config("1")
+ c1.options["port"].default = 12345
+ c1.options["port"].must = False
+ c1.options["dburl"].default = True
+ self.assertEqual(c1.sampleConf(),["[1]",
+ "# Connection URL to database",
+ "dburl = True","",
+ "# Port under that twisted is running",
+ "# port = 12345",""])