New map files.

see #491
This commit is contained in:
Antoine Nguyen
2013-12-03 15:43:05 +01:00
parent 8a03e54afd
commit 8feab4a1f8
2 changed files with 55 additions and 21 deletions
+1 -1
View File
@@ -37,7 +37,7 @@ base_events = [
"GetExtraParameters",
"ExtraFormFields",
"SaveExtraFormFields"
"SaveExtraFormFields",
]
+54 -20
View File
@@ -26,6 +26,43 @@ query = {{ query|safe }}
if not self.tpl_context['dbhost']:
self.tpl_context['dbhost'] = '127.0.0.1'
def __render_map(self, args, mapobject):
"""Render a map file.
:param args: command line arguments
:param mapobject: a ``MapFile`` subclass
"""
content = self.template.render(
Context(dict(
self.tpl_context.items(),
query=getattr(mapobject, args.dbtype)
))
)
with open("%s/%s" % (args.destdir, mapobject.filename), "w") as fp:
print >> fp, """# This file was generated on %s by running:
# %s %s
# DO NOT EDIT!
""" % (datetime.datetime.now().isoformat(),
os.path.basename(sys.argv[0]),
' '.join(sys.argv[1:]))
print >> fp, content
def __render_std_maps(self, args):
"""Render standard map files.
(ie. the ones belonging to the 'std' category)
:param args: command line arguments
"""
for v in globals().values():
if not inspect.isclass(v) or not issubclass(v, MapFile):
continue
if v is MapFile:
continue
if not v.category in args.categories:
continue
self.__render_map(args, v)
def render(self, args):
"""Render all map files.
@@ -35,26 +72,7 @@ query = {{ query|safe }}
os.mkdir(args.destdir)
except OSError:
pass
for v in globals().values():
if not inspect.isclass(v) or not issubclass(v, MapFile):
continue
if v is MapFile:
continue
if not v.category in args.categories:
continue
content = self.template.render(
Context(dict(self.tpl_context.items(),
query=getattr(v, args.dbtype)))
)
with open("%s/%s" % (args.destdir, v.filename), "w") as fp:
print >> fp, """# This file was generated on %s by running:
# %s %s
# DO NOT EDIT!
""" % (datetime.datetime.now().isoformat(),
os.path.basename(sys.argv[0]),
' '.join(sys.argv[1:]))
print >> fp, content
self.__render_std_maps(args)
class SQLiteMapFilesGenerator(MapFilesGenerator):
@@ -137,6 +155,22 @@ class AutoRepliesMap(MapFile):
sqlite = "SELECT full_address, autoreply_address FROM postfix_autoreply_alias WHERE full_address='%s'"
class RelayDomainsTransportMap(MapFile):
category = "relaydomains"
filename = "sql-relaydomains-transport.cf"
mysql = "SELECT CONCAT(srv.name, ':') FROM postfix_relaydomains_service AS srv INNER JOIN postfix_relaydomains_relaydomain AS rdom ON rdom.service_id=srv.id WHERE rdom.enabled=1 AND rdom.name='%s'"
postgres = "SELECT srv.name || ':' FROM postfix_relaydomains_service AS srv INNER JOIN postfix_relaydomains_relaydomain AS rdom ON rdom.service_id=srv.id WHERE rdom.enabled AND rdom.name='%s'"
sqlite = "SELECT srv.name || ':' FROM postfix_relaydomains_service AS srv INNER JOIN postfix_relaydomains_relaydomain AS rdom ON rdom.service_id=srv.id WHERE rdom.enabled=1 AND rdom.name='%s'"
class RelayDomainAliasesTransportMap(MapFile):
category = "relaydomains"
filename = "sql-relaydomain-aliases-transport.cf"
mysql = "SELECT CONCAT(srv.name, ':') FROM postfix_relaydomains_service AS srv INNER JOIN postfix_relaydomains_relaydomain AS rdom ON rdom.service_id=srv.id INNER JOIN postfix_relaydomains_relaydomainalias AS rdomalias ON rdom.id=rdomalias.target_id WHERE rdom.enabled=1 AND rdomalias.enabled=1 AND rdomalias.name='%s'"
postgres = "SELECT srv.name || ':' FROM postfix_relaydomains_service AS srv INNER JOIN postfix_relaydomains_relaydomain AS rdom ON rdom.service_id=srv.id INNER JOIN postfix_relaydomains_relaydomainalias AS rdomalias ON rdom.id=rdomalias.target_id WHERE rdom.enabled AND rdomalias.enabled AND rdomalias.name='%s'"
sqlite = "SELECT srv.name || ':' FROM postfix_relaydomains_service AS srv INNER JOIN postfix_relaydomains_relaydomain AS rdom ON rdom.service_id=srv.id INNER JOIN postfix_relaydomains_relaydomainalias AS rdomalias ON rdom.id=rdomalias.target_id WHERE rdom.enabled=1 AND rdomalias.enabled=1 AND rdomalias.name='%s'"
class PostfixMapsCommand(Command):
help = "Generate ready-to-use postfix map files"