diff rhodecode/lib/db_manage.py @ 1512:bf263968da47

merge beta in stable branch
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 07 Oct 2011 01:08:50 +0200
parents 8363b0d20c41 90062009bb1e
children c60c54e7d211
line wrap: on
line diff
--- a/rhodecode/lib/db_manage.py	Thu May 12 19:50:48 2011 +0200
+++ b/rhodecode/lib/db_manage.py	Fri Oct 07 01:08:50 2011 +0200
@@ -33,7 +33,7 @@
 from rhodecode import __dbversion__
 from rhodecode.model import meta
 
-from rhodecode.lib.auth import get_crypt_password
+from rhodecode.lib.auth import get_crypt_password, generate_api_key
 from rhodecode.lib.utils import ask_ok
 from rhodecode.model import init_model
 from rhodecode.model.db import User, Permission, RhodeCodeUi, \
@@ -115,7 +115,7 @@
             msg = ('Found current database under version'
                  ' control with version %s' % curr_version)
 
-        except (RuntimeError, DatabaseNotControlledError), e:
+        except (RuntimeError, DatabaseNotControlledError):
             curr_version = 1
             msg = ('Current database is not under version control. Setting'
                    ' as version %s' % curr_version)
@@ -157,6 +157,12 @@
                 log.info('Changing ui settings')
                 self.klass.create_ui_settings()
 
+            def step_3(self):
+                print ('Adding additional settings into RhodeCode db')
+                self.klass.fix_settings()
+                print ('Adding ldap defaults')
+                self.klass.create_ldap_options(skip_existing=True)
+                
         upgrade_steps = [0] + range(curr_version + 1, __dbversion__ + 1)
 
         #CALL THE PROPER ORDER OF STEPS TO PERFORM FULL UPGRADE
@@ -200,6 +206,19 @@
             self.sa.rollback()
             raise
 
+    def fix_settings(self):
+        """Fixes rhodecode settings adds ga_code key for google analytics
+        """
+
+        hgsettings3 = RhodeCodeSettings('ga_code', '')
+
+        try:
+            self.sa.add(hgsettings3)
+            self.sa.commit()
+        except:
+            self.sa.rollback()
+            raise
+
     def admin_prompt(self, second=False):
         if not self.tests:
             import getpass
@@ -244,7 +263,7 @@
 
         """
         #HOOKS
-        hooks1_key = 'changegroup.update'
+        hooks1_key = RhodeCodeUi.HOOK_UPDATE
         hooks1_ = self.sa.query(RhodeCodeUi)\
             .filter(RhodeCodeUi.ui_key == hooks1_key).scalar()
 
@@ -254,7 +273,7 @@
         hooks1.ui_value = 'hg update >&2'
         hooks1.ui_active = False
 
-        hooks2_key = 'changegroup.repo_size'
+        hooks2_key = RhodeCodeUi.HOOK_REPO_SIZE
         hooks2_ = self.sa.query(RhodeCodeUi)\
             .filter(RhodeCodeUi.ui_key == hooks2_key).scalar()
 
@@ -265,12 +284,12 @@
 
         hooks3 = RhodeCodeUi()
         hooks3.ui_section = 'hooks'
-        hooks3.ui_key = 'pretxnchangegroup.push_logger'
+        hooks3.ui_key = RhodeCodeUi.HOOK_PUSH
         hooks3.ui_value = 'python:rhodecode.lib.hooks.log_push_action'
 
         hooks4 = RhodeCodeUi()
         hooks4.ui_section = 'hooks'
-        hooks4.ui_key = 'preoutgoing.pull_logger'
+        hooks4.ui_key = RhodeCodeUi.HOOK_PULL
         hooks4.ui_value = 'python:rhodecode.lib.hooks.log_pull_action'
 
         #For mercurial 1.7 set backward comapatibility with format
@@ -290,17 +309,21 @@
             self.sa.rollback()
             raise
 
-    def create_ldap_options(self):
+    def create_ldap_options(self,skip_existing=False):
         """Creates ldap settings"""
 
         try:
-            for k, v in [('ldap_active', 'false'),
-                        ('ldap_host', ''),
-                        ('ldap_port', '389'),
-                        ('ldap_ldaps', 'false'),
-                        ('ldap_dn_user', ''), ('ldap_dn_pass', ''),
-                        ('ldap_base_dn', '')]:
+            for k, v in [('ldap_active', 'false'), ('ldap_host', ''),
+                        ('ldap_port', '389'), ('ldap_tls_kind', 'PLAIN'),
+                        ('ldap_tls_reqcert', ''), ('ldap_dn_user', ''),
+                        ('ldap_dn_pass', ''), ('ldap_base_dn', ''),
+                        ('ldap_filter', ''), ('ldap_search_scope', ''),
+                        ('ldap_attr_login', ''), ('ldap_attr_firstname', ''),
+                        ('ldap_attr_lastname', ''), ('ldap_attr_email', '')]:
 
+                if skip_existing and RhodeCodeSettings.get_by_name(k) != None:
+                    log.debug('Skipping option %s' % k)
+                    continue
                 setting = RhodeCodeSettings(k, v)
                 self.sa.add(setting)
             self.sa.commit()
@@ -322,18 +345,16 @@
         #check proper dir
         if not os.path.isdir(path):
             path_ok = False
-            log.error('Entered path is not a valid directory: %s [%s/3]',
-                      path, retries)
+            log.error('Given path %s is not a valid directory', path)
 
         #check write access
-        if not os.access(path, os.W_OK):
+        if not os.access(path, os.W_OK) and path_ok:
             path_ok = False
+            log.error('No write permission to given path %s', path)
 
-            log.error('No write permission to given path: %s [%s/3]',
-                      path, retries)
 
         if retries == 0:
-            sys.exit()
+            sys.exit('max retries reached')
         if path_ok is False:
             retries -= 1
             return self.config_prompt(test_repo_path, retries)
@@ -372,6 +393,7 @@
 
         hgsettings1 = RhodeCodeSettings('realm', 'RhodeCode authentication')
         hgsettings2 = RhodeCodeSettings('title', 'RhodeCode')
+        hgsettings3 = RhodeCodeSettings('ga_code', '')
 
         try:
             self.sa.add(web1)
@@ -381,6 +403,7 @@
             self.sa.add(paths)
             self.sa.add(hgsettings1)
             self.sa.add(hgsettings2)
+            self.sa.add(hgsettings3)
 
             self.sa.commit()
         except:
@@ -393,40 +416,30 @@
 
     def create_user(self, username, password, email='', admin=False):
         log.info('creating administrator user %s', username)
-        new_user = User()
-        new_user.username = username
-        new_user.password = get_crypt_password(password)
-        new_user.name = 'RhodeCode'
-        new_user.lastname = 'Admin'
-        new_user.email = email
-        new_user.admin = admin
-        new_user.active = True
+        
+        form_data = dict(username=username,
+                         password=password,
+                         active=True,
+                         admin=admin,
+                         name='RhodeCode',
+                         lastname='Admin',
+                         email=email)
+        User.create(form_data)
 
-        try:
-            self.sa.add(new_user)
-            self.sa.commit()
-        except:
-            self.sa.rollback()
-            raise
 
     def create_default_user(self):
         log.info('creating default user')
         #create default user for handling default permissions.
-        def_user = User()
-        def_user.username = 'default'
-        def_user.password = get_crypt_password(str(uuid.uuid1())[:8])
-        def_user.name = 'Anonymous'
-        def_user.lastname = 'User'
-        def_user.email = 'anonymous@rhodecode.org'
-        def_user.admin = False
-        def_user.active = False
-        try:
-            self.sa.add(def_user)
-            self.sa.commit()
-        except:
-            self.sa.rollback()
-            raise
 
+        form_data = dict(username='default',
+                         password=str(uuid.uuid1())[:8],
+                         active=False,
+                         admin=False,
+                         name='Anonymous',
+                         lastname='User',
+                         email='anonymous@rhodecode.org')
+        User.create(form_data)
+        
     def create_permissions(self):
         #module.(access|create|change|delete)_[name]
         #module.(read|write|owner)
@@ -438,12 +451,13 @@
                  ('hg.create.repository', 'Repository create'),
                  ('hg.create.none', 'Repository creation disabled'),
                  ('hg.register.none', 'Register disabled'),
-                 ('hg.register.manual_activate', ('Register new user with '
-                                                  'RhodeCode without '
-                                                  'manual activation')),
-                 ('hg.register.auto_activate', ('Register new user with '
-                                                'RhodeCode without auto '
-                                                'activation')),
+                 ('hg.register.manual_activate', 'Register new user with '
+                                                 'RhodeCode without manual'
+                                                 'activation'),
+
+                 ('hg.register.auto_activate', 'Register new user with '
+                                               'RhodeCode without auto '
+                                               'activation'),
                 ]
 
         for p in perms: