adding config.Config.sampleConf for creating a sample configuration devel
authorSandro Knauß <knauss@netzguerilla.net>
Sat, 10 Mar 2012 19:01:31 +0100
branchdevel
changeset 220 602720314930
parent 219 4e9d79c35088
child 221 c8615310da30
adding config.Config.sampleConf for creating a sample configuration
iro/config.py
iro/offer/provider.py
iro/offer/smstrade.py
iro/offer/smtp.py
tests/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()
--- 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",""])