# HG changeset patch # User Sandro Knauß # Date 1331402491 -3600 # Node ID 602720314930b3b56a862e7b405b813e6ef62882 # Parent 4e9d79c350886c64744116bf906d3f7e472eaaae adding config.Config.sampleConf for creating a sample configuration diff -r 4e9d79c35088 -r 602720314930 iro/config.py --- 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() diff -r 4e9d79c35088 -r 602720314930 iro/offer/provider.py --- 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 diff -r 4e9d79c35088 -r 602720314930 iro/offer/smstrade.py --- 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""" diff -r 4e9d79c35088 -r 602720314930 iro/offer/smtp.py --- 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: diff -r 4e9d79c35088 -r 602720314930 tests/config.py --- 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",""])