Branch 'pykolab-0.5' - 5 commits - pykolab/Makefile.am pykolab/setup wallace/module_resources.py

Jeroen van Meeuwen vanmeeuwen at kolabsys.com
Sat Aug 4 12:51:57 CEST 2012


 pykolab/Makefile.am         |    1 
 pykolab/setup/components.py |   39 +++++++++++---------
 pykolab/setup/setup_ldap.py |   10 +++++
 pykolab/setup/setup_php.py  |   83 ++++++++++++++++++++++++++++++++++++++++++++
 wallace/module_resources.py |   10 ++---
 5 files changed, 121 insertions(+), 22 deletions(-)

New commits:
commit e18c12b6c8951738f685d632a1337e1e11c8a31f
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Sat Aug 4 11:48:15 2012 +0100

    Add a notice on the setup now being executed (#919)

diff --git a/pykolab/setup/setup_ldap.py b/pykolab/setup/setup_ldap.py
index fd17d53..7241756 100644
--- a/pykolab/setup/setup_ldap.py
+++ b/pykolab/setup/setup_ldap.py
@@ -230,6 +230,14 @@ ServerAdminPwd = %(admin_pass)s
             '--file=%s' % (filename)
         ]
 
+    print >> sys.stderr, utils.multiline_message(
+            _("""
+                    Setup is now going to set up the 389 Directory Server. This
+                    may take a little while (during which period there is no
+                    output and no progress indication).
+                """)
+        )
+
     log.info(_("Setting up 389 Directory Server"))
 
     setup_389 = subprocess.Popen(
@@ -240,6 +248,8 @@ ServerAdminPwd = %(admin_pass)s
 
     (stdoutdata, stderrdata) = setup_389.communicate()
 
+    # TODO: Get the return code and display output if not successful.
+
     log.debug(_("Setup DS stdout:"), level=8)
     log.debug(stdoutdata, level=8)
 


commit 47805d9733a97d52f1236d9f5adfc08287ae5c21
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Sat Aug 4 11:44:43 2012 +0100

    Ensure all components get their chance to insert their own command-line switches

diff --git a/pykolab/setup/components.py b/pykolab/setup/components.py
index 4633160..f69db05 100644
--- a/pykolab/setup/components.py
+++ b/pykolab/setup/components.py
@@ -32,7 +32,7 @@ components = {}
 component_groups = {}
 executed_components = []
 
-executed_components = []
+finalize_conf_ok = None
 
 def __init__():
     # We only want the base path
@@ -116,8 +116,26 @@ def _list_components(*args, **kw):
 
     return _components
 
+def cli_options_from_component(component_name, *args, **kw):
+    if components[component_name].has_key('group'):
+        group = components[component_name]['group']
+        component_name = components[component_name]['component_name']
+        try:
+            exec("from %s.setup_%s import cli_options as %s_%s_cli_options" % (group,component_name,group,component_name))
+            exec("%s_%s_cli_options()" % (group,component_name))
+        except ImportError, e:
+            pass
+
+    else:
+        try:
+            exec("from setup_%s import cli_options as %s_cli_options" % (component_name,component_name))
+            exec("%s_cli_options()" % (component_name))
+        except ImportError, e:
+            pass
+
 def execute(component_name, *args, **kw):
     if component_name == '':
+
         log.debug(
                 _("No component selected, continuing for all components"),
                 level=8
@@ -152,6 +170,9 @@ def execute(component_name, *args, **kw):
                 break
 
         return
+    else:
+        for component in _list_components():
+            cli_options_from_component(component)
 
     if not components.has_key(component_name):
         log.error(_("No such component."))
@@ -162,22 +183,6 @@ def execute(component_name, *args, **kw):
         log.error(_("No such component."))
         sys.exit(1)
 
-    if components[component_name].has_key('group'):
-        group = components[component_name]['group']
-        component_name = components[component_name]['component_name']
-        try:
-            exec("from %s.setup_%s import cli_options as %s_%s_cli_options" % (group,component_name,group,component_name))
-            exec("%s_%s_cli_options()" % (group,component_name))
-        except ImportError, e:
-            pass
-
-    else:
-        try:
-            exec("from setup_%s import cli_options as %s_cli_options" % (component_name,component_name))
-            exec("%s_cli_options()" % (component_name))
-        except ImportError, e:
-            pass
-
     conf.finalize_conf()
 
     if len(conf.cli_args) >= 1:


commit 03b7bd9f19b635bd4818240a7b88f01c6cb44d3a
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Sat Aug 4 11:07:37 2012 +0100

    Ask for the timezone if it hasn't been specified over the command-line options

diff --git a/pykolab/setup/setup_php.py b/pykolab/setup/setup_php.py
index c9db0f5..36e3b4d 100644
--- a/pykolab/setup/setup_php.py
+++ b/pykolab/setup/setup_php.py
@@ -45,7 +45,7 @@ def cli_options():
             "--timezone",
             dest    = "timezone",
             action  = "store",
-            default = "UTC",
+            default = None,
             help    = _("Specify the timezone for PHP.")
         )
 
@@ -53,6 +53,17 @@ def description():
     return _("Setup PHP.")
 
 def execute(*args, **kw):
+    print >> sys.stderr, utils.multiline_message(
+            _("""
+                    Please supply the timezone PHP should be using.
+                """)
+        )
+
+    conf.timezone = utils.ask_question(
+            _("Timezone ID"),
+            default="UTC"
+        )
+
     myaugeas = Augeas()
 
     setting_base = '/files/etc/php.ini/'


commit e1f0780b02149278390517e7731f8b39ad7d7556
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Sat Aug 4 11:04:57 2012 +0100

    Add setup_php for the PHP timezone

diff --git a/pykolab/Makefile.am b/pykolab/Makefile.am
index 73cf939..6353f86 100644
--- a/pykolab/Makefile.am
+++ b/pykolab/Makefile.am
@@ -57,6 +57,7 @@ pykolab_setup_PYTHON = \
 	setup/setup_ldap.py \
 	setup/setup_mta.py \
 	setup/setup_mysql.py \
+	setup/setup_php.py \
 	setup/setup_roundcube.py \
 	setup/setup_zpush.py \
 	setup/__init__.py
diff --git a/pykolab/setup/setup_php.py b/pykolab/setup/setup_php.py
new file mode 100644
index 0000000..c9db0f5
--- /dev/null
+++ b/pykolab/setup/setup_php.py
@@ -0,0 +1,72 @@
+# -*- coding: utf-8 -*-
+# Copyright 2010-2012 Kolab Systems AG (http://www.kolabsys.com)
+#
+# Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen a kolabsys.com>
+#
+# 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; version 3 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 Library 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 augeas import Augeas
+import os
+import shutil
+import subprocess
+import tempfile
+
+import components
+
+import pykolab
+
+from pykolab import utils
+from pykolab.auth import Auth
+from pykolab.constants import *
+from pykolab.translate import _
+
+log = pykolab.getLogger('pykolab.setup')
+conf = pykolab.getConf()
+
+def __init__():
+    components.register('php', execute, description=description())
+
+def cli_options():
+    php_group = conf.add_cli_parser_option_group(_("PHP Options"))
+
+    php_group.add_option(
+            "--timezone",
+            dest    = "timezone",
+            action  = "store",
+            default = "UTC",
+            help    = _("Specify the timezone for PHP.")
+        )
+
+def description():
+    return _("Setup PHP.")
+
+def execute(*args, **kw):
+    myaugeas = Augeas()
+
+    setting_base = '/files/etc/php.ini/'
+
+    setting = os.path.join(setting_base, 'Date', 'date.timezone')
+    current_value = myaugeas.get(setting)
+
+    if current_value == None:
+        insert_paths = myaugeas.match('/files/etc/php.ini/Date/*')
+        insert_path = insert_paths[(len(insert_paths)-1)]
+        myaugeas.insert(insert_path, setting_key, False)
+
+    log.debug(_("Setting key %r to %r") % ('Date/date.timezone', conf.timezone), level=8)
+    myaugeas.set(setting, conf.timezone)
+
+    myaugeas.save()
+


commit d3fae3685b2e9bd905887def6d8378cf728a3246
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Sat Aug 4 00:08:22 2012 +0100

    Fix #916 (iTip messages w/o resources getting stuck)

diff --git a/wallace/module_resources.py b/wallace/module_resources.py
index a4873f4..8bd3e1f 100644
--- a/wallace/module_resources.py
+++ b/wallace/module_resources.py
@@ -128,6 +128,7 @@ def execute(*args, **kw):
 
     any_itips = False
     any_resources = False
+    possibly_any_resources = True
 
     # An iTip message may contain multiple events. Later on, test if the message
     # is an iTip message by checking the length of this list.
@@ -152,12 +153,11 @@ def execute(*args, **kw):
         # See if any iTip actually allocates a resource.
         if len([x['resources'] for x in itip_events if x.has_key('resources')]) == 0:
             if len([x['attendees'] for x in itip_events if x.has_key('attendees')]) == 0:
-                any_resources = False
-            else:
-                any_resources = True
+                possibly_any_resources = False
         else:
-            any_resources = False
-    else:
+            possibly_any_resources = False
+
+    if possibly_any_resources:
         recipients = {
                 "To": getaddresses(message.get_all('To', [])),
                 "Cc": getaddresses(message.get_all('Cc', []))





More information about the commits mailing list