File Zope-2.7.0-mkinstance.patch of Package zope-python-2.4

--- utilities/mkzopeinstance.py
+++ utilities/mkzopeinstance.py
@@ -32,6 +32,10 @@
 import shutil
 import sys
 import copyzopeskel
+import pwd
+import grp
+
+INSTANCES_HOME='/var/opt/zope'
 
 def main():
     try:
@@ -51,7 +55,7 @@
 
     for opt, arg in opts:
         if opt in ("-d", "--dir"):
-            skeltarget = os.path.abspath(os.path.expanduser(arg))
+            skeltarget = os.path.expanduser(arg)
             if not skeltarget:
                 usage(sys.stderr, "dir must not be empty")
                 sys.exit(2)
@@ -76,9 +80,11 @@
         # interactively ask for skeltarget and initial user name/passwd.
         # cant set custom instancehome in interactive mode, we default
         # to skeltarget.
-        skeltarget = instancehome = os.path.abspath(
-            os.path.expanduser(get_skeltarget())
-            )
+        skeltarget = os.path.expanduser(get_skeltarget())
+
+    if skeltarget[0] != '/':
+        print 'Instance home not absolute, placing under %s.' % INSTANCES_HOME
+        skeltarget = "%s/%s" % (INSTANCES_HOME, skeltarget)
 
     instancehome = skeltarget
     zopehome = os.path.dirname(os.path.dirname(script))
@@ -121,9 +127,23 @@
         "ZOPE_HOME": zopehome,
         }
 
-    copyzopeskel.copyskel(skelsrc, skeltarget, None, None, **kw)
+    try:
+        uid = pwd.getpwnam("zope")[2]
+    except:
+        print 'Could not get uid for zope, check your zope installation!'
+        sys.exit(1)
+ 
+    try:
+        gid = grp.getgrnam("zope")[2]
+    except:
+        print 'Could not get gid for zope, check your zope installation!'
+        sys.exit(1)
+        
+    copyzopeskel.copyskel(skelsrc, skeltarget, uid, gid, **kw)
+    os.chown(skeltarget, uid, gid)
+
     if user and password:
-        write_inituser(inituser, user, password)
+        write_inituser(inituser, user, password, uid, gid)
 
 def usage(stream, msg=None):
     if msg:
@@ -133,10 +153,13 @@
     print >>stream, __doc__ % {"program": program}
 
 def get_skeltarget():
+    print
     print 'Please choose a directory in which you\'d like to install'
     print 'Zope "instance home" files such as database files, configuration'
     print 'files, etc.'
     print
+    print 'If you do not enter absolute path, it will be placed under %s' % INSTANCES_HOME
+    print
     while 1:
         skeltarget = raw_input("Directory: ").strip()
         if skeltarget == '':
@@ -148,6 +171,7 @@
 
 def get_inituser():
     import getpass
+    print
     print 'Please choose a username and password for the initial user.'
     print 'These will be the credentials you use to initially manage'
     print 'your new Zope instance.'
@@ -165,7 +189,7 @@
             print "Password mismatch, please try again..."
     return user, passwd
 
-def write_inituser(fn, user, password):
+def write_inituser(fn, user, password, uid, gid):
     import binascii
     import sha
     fp = open(fn, "w")
@@ -173,6 +197,7 @@
     fp.write('%s:{SHA}%s\n' % (user, pw))
     fp.close()
     os.chmod(fn, 0644)
+    os.chown(fn, uid, gid)
 
 if __name__ == "__main__":
     main()
openSUSE Build Service is sponsored by