changeset 1094:44661d2a7b61 beta

fixes #120 websetup command runs os.access on given path checking for write access
author Marcin Kuzminski <marcin@python-works.com>
date Sun, 27 Feb 2011 00:31:43 +0100
parents 615c1bc11889
children e6d6bd810e22
files rhodecode/lib/db_manage.py rhodecode/websetup.py
diffstat 2 files changed, 27 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/lib/db_manage.py	Sat Feb 26 23:41:42 2011 +0100
+++ b/rhodecode/lib/db_manage.py	Sun Feb 27 00:31:43 2011 +0100
@@ -348,18 +348,41 @@
             self.sa.rollback()
             raise
 
-    def config_prompt(self, test_repo_path=''):
-        log.info('Setting up repositories config')
+    def config_prompt(self, test_repo_path='', retries=3):
+        if retries == 3:
+            log.info('Setting up repositories config')
 
         if not self.tests and not test_repo_path:
             path = raw_input('Specify valid full path to your repositories'
                         ' you can change this later in application settings:')
         else:
             path = test_repo_path
+        path_ok = True
 
+        #check proper dir
         if not os.path.isdir(path):
-            log.error('You entered wrong path: %s', path)
+            path_ok = False
+            log.error('Entered path is not a valid directory: %s [%s/3]',
+                      path, retries)
+
+        #check write access
+        if not os.access(path, os.W_OK):
+            path_ok = False
+
+            log.error('No write permission to given path: %s [%s/3]',
+                      path, retries)
+
+
+        if retries == 0:
             sys.exit()
+        if path_ok is False:
+            retries -= 1
+            return self.config_prompt(test_repo_path, retries)
+
+
+        return path
+
+    def create_settings(self, path):
 
         self.create_ui_settings()
 
--- a/rhodecode/websetup.py	Sat Feb 26 23:41:42 2011 +0100
+++ b/rhodecode/websetup.py	Sun Feb 27 00:31:43 2011 +0100
@@ -40,7 +40,7 @@
     dbmanage = DbManage(log_sql=True, dbconf=dbconf, root=conf['here'], tests=False)
     dbmanage.create_tables(override=True)
     dbmanage.set_db_version()
-    dbmanage.config_prompt(None)
+    dbmanage.create_settings(dbmanage.config_prompt(None))
     dbmanage.create_default_user()
     dbmanage.admin_prompt()
     dbmanage.create_permissions()