changeset 2662:91c442a489bb beta

sqlalchemy sessions cleanup in admin Cleanup settings options
author Marcin Kuzminski <marcin@python-works.com>
date Thu, 26 Jul 2012 15:36:44 +0200
parents 09e54a646eb6
children cc8d7d450d15
files rhodecode/controllers/admin/admin.py rhodecode/controllers/admin/ldap_settings.py rhodecode/controllers/admin/notifications.py rhodecode/controllers/admin/permissions.py rhodecode/controllers/admin/repos.py rhodecode/controllers/admin/repos_groups.py rhodecode/controllers/admin/settings.py rhodecode/controllers/admin/users.py rhodecode/controllers/admin/users_groups.py rhodecode/lib/db_manage.py rhodecode/templates/admin/settings/settings.html
diffstat 11 files changed, 138 insertions(+), 139 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/controllers/admin/admin.py	Wed Jul 25 22:21:26 2012 +0200
+++ b/rhodecode/controllers/admin/admin.py	Thu Jul 26 15:36:44 2012 +0200
@@ -45,7 +45,7 @@
     @HasPermissionAllDecorator('hg.admin')
     def index(self):
 
-        users_log = self.sa.query(UserLog)\
+        users_log = UserLog.query()\
                 .options(joinedload(UserLog.user))\
                 .options(joinedload(UserLog.repository))\
                 .order_by(UserLog.action_date.desc())
--- a/rhodecode/controllers/admin/ldap_settings.py	Wed Jul 25 22:21:26 2012 +0200
+++ b/rhodecode/controllers/admin/ldap_settings.py	Thu Jul 26 15:36:44 2012 +0200
@@ -40,6 +40,7 @@
 from rhodecode.lib.exceptions import LdapImportError
 from rhodecode.model.forms import LdapSettingsForm
 from rhodecode.model.db import RhodeCodeSetting
+from rhodecode.model.meta import Session
 
 log = logging.getLogger(__name__)
 
@@ -119,9 +120,9 @@
                             v = ldap_active
                         setting = RhodeCodeSetting.get_by_name(k)
                         setting.app_settings_value = v
-                        self.sa.add(setting)
+                        Session().add(setting)
 
-                self.sa.commit()
+                Session().commit()
                 h.flash(_('Ldap settings updated successfully'),
                         category='success')
                 if not ldap_active:
--- a/rhodecode/controllers/admin/notifications.py	Wed Jul 25 22:21:26 2012 +0200
+++ b/rhodecode/controllers/admin/notifications.py	Thu Jul 26 15:36:44 2012 +0200
@@ -83,7 +83,7 @@
             # mark all read
             nm.mark_all_read_for_user(self.rhodecode_user.user_id,
                                       filter_=request.GET.getall('type'))
-            Session.commit()
+            Session().commit()
             c.user = self.rhodecode_user
             notif = nm.get_for_user(self.rhodecode_user.user_id,
                                     filter_=request.GET.getall('type'))
@@ -112,7 +112,7 @@
                              == c.rhodecode_user.user_id)
             if h.HasPermissionAny('hg.admin')() or owner:
                     NotificationModel().mark_read(c.rhodecode_user.user_id, no)
-                    Session.commit()
+                    Session().commit()
                     return 'ok'
         except Exception:
             Session.rollback()
@@ -134,7 +134,7 @@
                              == c.rhodecode_user.user_id)
             if h.HasPermissionAny('hg.admin')() or owner:
                     NotificationModel().delete(c.rhodecode_user.user_id, no)
-                    Session.commit()
+                    Session().commit()
                     return 'ok'
         except Exception:
             Session.rollback()
@@ -158,7 +158,7 @@
             if unotification:
                 if unotification.read is False:
                     unotification.mark_as_read()
-                    Session.commit()
+                    Session().commit()
                 c.notification = no
 
                 return render('admin/notifications/show_notification.html')
--- a/rhodecode/controllers/admin/permissions.py	Wed Jul 25 22:21:26 2012 +0200
+++ b/rhodecode/controllers/admin/permissions.py	Thu Jul 26 15:36:44 2012 +0200
@@ -102,7 +102,7 @@
             form_result = _form.to_python(dict(request.POST))
             form_result.update({'perm_user_name': id})
             permission_model.update(form_result)
-            Session.commit()
+            Session().commit()
             h.flash(_('Default permissions updated successfully'),
                     category='success')
 
--- a/rhodecode/controllers/admin/repos.py	Wed Jul 25 22:21:26 2012 +0200
+++ b/rhodecode/controllers/admin/repos.py	Thu Jul 26 15:36:44 2012 +0200
@@ -167,7 +167,7 @@
                 action_logger(self.rhodecode_user, 'admin_created_repo',
                               form_result['repo_name_full'], self.ip_addr,
                               self.sa)
-            Session.commit()
+            Session().commit()
         except formencode.Invalid, errors:
 
             c.new_repo = errors.value['repo_name']
@@ -229,7 +229,7 @@
             changed_name = repo.repo_name
             action_logger(self.rhodecode_user, 'admin_updated_repo',
                               changed_name, self.ip_addr, self.sa)
-            Session.commit()
+            Session().commit()
         except formencode.Invalid, errors:
             defaults = self.__load_data(repo_name)
             defaults.update(errors.value)
@@ -273,7 +273,7 @@
             repo_model.delete(repo)
             invalidate_cache('get_repo_cached_%s' % repo_name)
             h.flash(_('deleted repository %s') % repo_name, category='success')
-            Session.commit()
+            Session().commit()
         except IntegrityError, e:
             if e.message.find('repositories_fork_id_fkey') != -1:
                 log.error(traceback.format_exc())
@@ -303,7 +303,7 @@
         try:
             RepoModel().revoke_user_permission(repo=repo_name,
                                                user=request.POST['user_id'])
-            Session.commit()
+            Session().commit()
         except Exception:
             log.error(traceback.format_exc())
             h.flash(_('An error occurred during deletion of repository user'),
@@ -322,7 +322,7 @@
             RepoModel().revoke_users_group_permission(
                 repo=repo_name, group_name=request.POST['users_group_id']
             )
-            Session.commit()
+            Session().commit()
         except Exception:
             log.error(traceback.format_exc())
             h.flash(_('An error occurred during deletion of repository'
@@ -340,7 +340,7 @@
 
         try:
             RepoModel().delete_stats(repo_name)
-            Session.commit()
+            Session().commit()
         except Exception, e:
             h.flash(_('An error occurred during deletion of repository stats'),
                     category='error')
@@ -356,7 +356,7 @@
 
         try:
             ScmModel().mark_for_invalidation(repo_name)
-            Session.commit()
+            Session().commit()
         except Exception, e:
             h.flash(_('An error occurred during cache invalidation'),
                     category='error')
@@ -380,7 +380,7 @@
                 self.scm_model.toggle_following_repo(repo_id, user_id)
                 h.flash(_('Updated repository visibility in public journal'),
                         category='success')
-                Session.commit()
+                Session().commit()
             except:
                 h.flash(_('An error occurred during setting this'
                           ' repository in public journal'),
--- a/rhodecode/controllers/admin/repos_groups.py	Wed Jul 25 22:21:26 2012 +0200
+++ b/rhodecode/controllers/admin/repos_groups.py	Thu Jul 26 15:36:44 2012 +0200
@@ -115,7 +115,7 @@
                     group_description=form_result['group_description'],
                     parent=form_result['group_parent_id']
             )
-            Session.commit()
+            Session().commit()
             h.flash(_('created repos group %s') \
                     % form_result['group_name'], category='success')
             #TODO: in futureaction_logger(, '', '', '', self.sa)
@@ -162,7 +162,7 @@
         try:
             form_result = repos_group_form.to_python(dict(request.POST))
             ReposGroupModel().update(id, form_result)
-            Session.commit()
+            Session().commit()
             h.flash(_('updated repos group %s') \
                     % form_result['group_name'], category='success')
             #TODO: in futureaction_logger(, '', '', '', self.sa)
@@ -201,7 +201,7 @@
 
         try:
             ReposGroupModel().delete(id)
-            Session.commit()
+            Session().commit()
             h.flash(_('removed repos group %s') % gr.group_name, category='success')
             #TODO: in future action_logger(, '', '', '', self.sa)
         except IntegrityError, e:
@@ -234,7 +234,7 @@
             ReposGroupModel().revoke_user_permission(
                 repos_group=group_name, user=request.POST['user_id']
             )
-            Session.commit()
+            Session().commit()
         except Exception:
             log.error(traceback.format_exc())
             h.flash(_('An error occurred during deletion of group user'),
@@ -254,7 +254,7 @@
                 repos_group=group_name,
                 group_name=request.POST['users_group_id']
             )
-            Session.commit()
+            Session().commit()
         except Exception:
             log.error(traceback.format_exc())
             h.flash(_('An error occurred during deletion of group'
@@ -291,7 +291,7 @@
 
         c.repo_cnt = 0
 
-        c.groups = self.sa.query(RepoGroup).order_by(RepoGroup.group_name)\
+        c.groups = RepoGroup.query().order_by(RepoGroup.group_name)\
             .filter(RepoGroup.group_parent_id == id).all()
 
         return render('admin/repos_groups/repos_groups.html')
--- a/rhodecode/controllers/admin/settings.py	Wed Jul 25 22:21:26 2012 +0200
+++ b/rhodecode/controllers/admin/settings.py	Thu Jul 26 15:36:44 2012 +0200
@@ -51,8 +51,6 @@
 from rhodecode.model.db import User
 from rhodecode.model.notification import EmailNotificationModel
 from rhodecode.model.meta import Session
-from pylons.decorators import jsonify
-from rhodecode.model.pull_request import PullRequestModel
 
 log = logging.getLogger(__name__)
 
@@ -109,6 +107,7 @@
         #    h.form(url('admin_setting', setting_id=ID),
         #           method='put')
         # url('admin_setting', setting_id=ID)
+
         if setting_id == 'mapping':
             rm_obsolete = request.POST.get('destroy', False)
             log.debug('Rescanning directories with destroy=%s' % rm_obsolete)
@@ -121,123 +120,115 @@
 
             h.flash(_('Repositories successfully'
                       ' rescanned added: %s,removed: %s') % (added, removed),
-                    category='success')
+                      category='success')
 
         if setting_id == 'whoosh':
             repo_location = self.get_hg_ui_settings()['paths_root_path']
             full_index = request.POST.get('full_index', False)
             run_task(tasks.whoosh_index, repo_location, full_index)
+            h.flash(_('Whoosh reindex task scheduled'), category='success')
 
-            h.flash(_('Whoosh reindex task scheduled'), category='success')
         if setting_id == 'global':
 
             application_form = ApplicationSettingsForm()()
             try:
                 form_result = application_form.to_python(dict(request.POST))
-
-                try:
-                    hgsettings1 = RhodeCodeSetting.get_by_name('title')
-                    hgsettings1.app_settings_value = \
-                        form_result['rhodecode_title']
+            except formencode.Invalid, errors:
+                return htmlfill.render(
+                     render('admin/settings/settings.html'),
+                     defaults=errors.value,
+                     errors=errors.error_dict or {},
+                     prefix_error=False,
+                     encoding="UTF-8"
+                )
 
-                    hgsettings2 = RhodeCodeSetting.get_by_name('realm')
-                    hgsettings2.app_settings_value = \
-                        form_result['rhodecode_realm']
+            try:
+                sett1 = RhodeCodeSetting.get_by_name('title')
+                sett1.app_settings_value = form_result['rhodecode_title']
+                Session().add(sett1)
 
-                    hgsettings3 = RhodeCodeSetting.get_by_name('ga_code')
-                    hgsettings3.app_settings_value = \
-                        form_result['rhodecode_ga_code']
+                sett2 = RhodeCodeSetting.get_by_name('realm')
+                sett2.app_settings_value = form_result['rhodecode_realm']
+                Session().add(sett2)
 
-                    self.sa.add(hgsettings1)
-                    self.sa.add(hgsettings2)
-                    self.sa.add(hgsettings3)
-                    self.sa.commit()
-                    set_rhodecode_config(config)
-                    h.flash(_('Updated application settings'),
-                            category='success')
+                sett3 = RhodeCodeSetting.get_by_name('ga_code')
+                sett3.app_settings_value = form_result['rhodecode_ga_code']
+                Session().add(sett3)
+
+                Session().commit()
+                set_rhodecode_config(config)
+                h.flash(_('Updated application settings'), category='success')
 
-                except Exception:
-                    log.error(traceback.format_exc())
-                    h.flash(_('error occurred during updating '
-                              'application settings'),
-                            category='error')
+            except Exception:
+                log.error(traceback.format_exc())
+                h.flash(_('error occurred during updating '
+                          'application settings'),
+                          category='error')
 
-                    self.sa.rollback()
-
+        if setting_id == 'vcs':
+            application_form = ApplicationUiSettingsForm()()
+            try:
+                form_result = application_form.to_python(dict(request.POST))
             except formencode.Invalid, errors:
                 return htmlfill.render(
                      render('admin/settings/settings.html'),
                      defaults=errors.value,
                      errors=errors.error_dict or {},
                      prefix_error=False,
-                     encoding="UTF-8")
+                     encoding="UTF-8"
+                )
 
-        if setting_id == 'mercurial':
-            application_form = ApplicationUiSettingsForm()()
             try:
-                form_result = application_form.to_python(dict(request.POST))
                 # fix namespaces for hooks
                 _f = lambda s: s.replace('.', '_')
-                try:
 
-                    hgsettings1 = self.sa.query(RhodeCodeUi)\
-                    .filter(RhodeCodeUi.ui_key == 'push_ssl').one()
-                    hgsettings1.ui_value = form_result['web_push_ssl']
+                sett1 = RhodeCodeUi.query()\
+                        .filter(RhodeCodeUi.ui_key == 'push_ssl').one()
+                sett1.ui_value = form_result['web_push_ssl']
 
-                    hgsettings2 = self.sa.query(RhodeCodeUi)\
-                    .filter(RhodeCodeUi.ui_key == '/').one()
-                    hgsettings2.ui_value = form_result['paths_root_path']
+                sett2 = RhodeCodeUi.query()\
+                        .filter(RhodeCodeUi.ui_key == '/').one()
+                sett2.ui_value = form_result['paths_root_path']
 
-                    #HOOKS
-                    hgsettings3 = self.sa.query(RhodeCodeUi)\
-                    .filter(RhodeCodeUi.ui_key == RhodeCodeUi.HOOK_UPDATE)\
-                    .one()
-                    hgsettings3.ui_active = bool(form_result[_f('hooks_%s' %
-                                                 RhodeCodeUi.HOOK_UPDATE)])
+                #HOOKS
+                sett3 = RhodeCodeUi.query()\
+                        .filter(RhodeCodeUi.ui_key == RhodeCodeUi.HOOK_UPDATE)\
+                        .one()
+                sett3.ui_active = bool(form_result[_f('hooks_%s' %
+                                        RhodeCodeUi.HOOK_UPDATE)])
 
-                    hgsettings4 = self.sa.query(RhodeCodeUi)\
-                    .filter(RhodeCodeUi.ui_key == RhodeCodeUi.HOOK_REPO_SIZE)\
-                    .one()
-                    hgsettings4.ui_active = bool(form_result[_f('hooks_%s' %
-                                                 RhodeCodeUi.HOOK_REPO_SIZE)])
-
-                    hgsettings5 = self.sa.query(RhodeCodeUi)\
-                    .filter(RhodeCodeUi.ui_key == RhodeCodeUi.HOOK_PUSH)\
-                    .one()
-                    hgsettings5.ui_active = bool(form_result[_f('hooks_%s' %
-                                                 RhodeCodeUi.HOOK_PUSH)])
+                sett4 = RhodeCodeUi.query()\
+                        .filter(RhodeCodeUi.ui_key == RhodeCodeUi.HOOK_REPO_SIZE)\
+                        .one()
+                sett4.ui_active = bool(form_result[_f('hooks_%s' %
+                                             RhodeCodeUi.HOOK_REPO_SIZE)])
 
-                    hgsettings6 = self.sa.query(RhodeCodeUi)\
-                    .filter(RhodeCodeUi.ui_key == RhodeCodeUi.HOOK_PULL)\
-                    .one()
-                    hgsettings6.ui_active = bool(form_result[_f('hooks_%s' %
-                                                 RhodeCodeUi.HOOK_PULL)])
+                sett5 = RhodeCodeUi.query()\
+                        .filter(RhodeCodeUi.ui_key == RhodeCodeUi.HOOK_PUSH)\
+                        .one()
+                sett5.ui_active = bool(form_result[_f('hooks_%s' %
+                                             RhodeCodeUi.HOOK_PUSH)])
 
-                    self.sa.add(hgsettings1)
-                    self.sa.add(hgsettings2)
-                    self.sa.add(hgsettings3)
-                    self.sa.add(hgsettings4)
-                    self.sa.add(hgsettings5)
-                    self.sa.add(hgsettings6)
-                    self.sa.commit()
+                sett6 = RhodeCodeUi.query()\
+                        .filter(RhodeCodeUi.ui_key == RhodeCodeUi.HOOK_PULL)\
+                        .one()
+                sett6.ui_active = bool(form_result[_f('hooks_%s' %
+                                             RhodeCodeUi.HOOK_PULL)])
 
-                    h.flash(_('Updated mercurial settings'),
-                            category='success')
-
-                except:
-                    log.error(traceback.format_exc())
-                    h.flash(_('error occurred during updating '
-                              'application settings'), category='error')
+                Session().add(sett1)
+                Session().add(sett2)
+                Session().add(sett3)
+                Session().add(sett4)
+                Session().add(sett5)
+                Session().add(sett6)
+                Session().commit()
 
-                    self.sa.rollback()
+                h.flash(_('Updated mercurial settings'), category='success')
 
-            except formencode.Invalid, errors:
-                return htmlfill.render(
-                     render('admin/settings/settings.html'),
-                     defaults=errors.value,
-                     errors=errors.error_dict or {},
-                     prefix_error=False,
-                     encoding="UTF-8")
+            except Exception:
+                log.error(traceback.format_exc())
+                h.flash(_('error occurred during updating '
+                          'application settings'), category='error')
 
         if setting_id == 'hooks':
             ui_key = request.POST.get('new_hook_ui_key')
@@ -259,8 +250,8 @@
 
                 if update:
                     h.flash(_('Updated hooks'), category='success')
-                self.sa.commit()
-            except:
+                Session().commit()
+            except Exception:
                 log.error(traceback.format_exc())
                 h.flash(_('error occurred during hook creation'),
                         category='error')
@@ -296,7 +287,7 @@
         if setting_id == 'hooks':
             hook_id = request.POST.get('hook_id')
             RhodeCodeUi.delete(hook_id)
-            self.sa.commit()
+            Session().commit()
 
     @HasPermissionAllDecorator('hg.admin')
     def show(self, setting_id, format='html'):
@@ -329,7 +320,7 @@
         # url('admin_settings_my_account')
 
         c.user = User.get(self.rhodecode_user.user_id)
-        all_repos = self.sa.query(Repository)\
+        all_repos = Session().query(Repository)\
                      .filter(Repository.user_id == c.user.user_id)\
                      .order_by(func.lower(Repository.repo_name)).all()
 
@@ -369,7 +360,7 @@
             UserModel().update_my_account(uid, form_result)
             h.flash(_('Your account was updated successfully'),
                     category='success')
-            Session.commit()
+            Session().commit()
         except formencode.Invalid, errors:
             c.user = User.get(self.rhodecode_user.user_id)
 
@@ -386,10 +377,10 @@
                     % form_result.get('username'), category='error')
 
         return redirect(url('my_account'))
-    
+
     @NotAnonymous()
     def my_account_my_repos(self):
-        all_repos = self.sa.query(Repository)\
+        all_repos = Session().query(Repository)\
             .filter(Repository.user_id == self.rhodecode_user.user_id)\
             .order_by(func.lower(Repository.repo_name))\
             .all()
@@ -425,7 +416,7 @@
 
     @NotAnonymous()
     def get_hg_ui_settings(self):
-        ret = self.sa.query(RhodeCodeUi).all()
+        ret = RhodeCodeUi.query().all()
 
         if not ret:
             raise Exception('Could not get application ui settings !')
--- a/rhodecode/controllers/admin/users.py	Wed Jul 25 22:21:26 2012 +0200
+++ b/rhodecode/controllers/admin/users.py	Thu Jul 26 15:36:44 2012 +0200
@@ -126,7 +126,7 @@
                           None, self.ip_addr, self.sa)
             h.flash(_('created user %s') % usr,
                     category='success')
-            Session.commit()
+            Session().commit()
         except formencode.Invalid, errors:
             return htmlfill.render(
                 render('admin/users/user_add.html'),
@@ -166,7 +166,7 @@
             action_logger(self.rhodecode_user, 'admin_updated_user:%s' % usr,
                           None, self.ip_addr, self.sa)
             h.flash(_('User updated successfully'), category='success')
-            Session.commit()
+            Session().commit()
         except formencode.Invalid, errors:
             c.user_email_map = UserEmailMap.query()\
                             .filter(UserEmailMap.user == c.user).all()
@@ -198,7 +198,7 @@
         user_model = UserModel()
         try:
             user_model.delete(id)
-            Session.commit()
+            Session().commit()
             h.flash(_('successfully deleted user'), category='success')
         except (UserOwnsReposException, DefaultUserException), e:
             h.flash(e, category='warning')
@@ -252,7 +252,7 @@
             user_model.grant_perm(id, perm)
             h.flash(_("Granted 'repository create' permission to user"),
                     category='success')
-            Session.commit()
+            Session().commit()
         else:
             perm = Permission.get_by_key('hg.create.repository')
             user_model.revoke_perm(id, perm)
@@ -261,7 +261,7 @@
             user_model.grant_perm(id, perm)
             h.flash(_("Revoked 'repository create' permission to user"),
                     category='success')
-            Session.commit()
+            Session().commit()
         return redirect(url('edit_user', id=id))
 
     def add_email(self, id):
@@ -274,7 +274,7 @@
 
         try:
             user_model.add_extra_email(id, email)
-            Session.commit()
+            Session().commit()
             h.flash(_("Added email %s to user") % email, category='success')
         except formencode.Invalid, error:
             msg = error.error_dict['email']
@@ -290,6 +290,6 @@
         # url('user_emails_delete', id=ID, method='delete')
         user_model = UserModel()
         user_model.delete_extra_email(id, request.POST.get('del_email'))
-        Session.commit()
+        Session().commit()
         h.flash(_("Removed email from user"), category='success')
         return redirect(url('edit_user', id=id))
--- a/rhodecode/controllers/admin/users_groups.py	Wed Jul 25 22:21:26 2012 +0200
+++ b/rhodecode/controllers/admin/users_groups.py	Thu Jul 26 15:36:44 2012 +0200
@@ -65,7 +65,7 @@
     def index(self, format='html'):
         """GET /users_groups: All items in the collection"""
         # url('users_groups')
-        c.users_groups_list = self.sa.query(UsersGroup).all()
+        c.users_groups_list = UsersGroup().query().all()
         return render('admin/users_groups/users_groups.html')
 
     def create(self):
@@ -82,7 +82,7 @@
                           'admin_created_users_group:%s' % gr,
                           None, self.ip_addr, self.sa)
             h.flash(_('created users group %s') % gr, category='success')
-            Session.commit()
+            Session().commit()
         except formencode.Invalid, errors:
             return htmlfill.render(
                 render('admin/users_groups/users_group_add.html'),
@@ -117,7 +117,7 @@
                            c.group_members_obj]
 
         c.available_members = [(x.user_id, x.username) for x in
-                               self.sa.query(User).all()]
+                               User.query().all()]
 
         available_members = [safe_unicode(x[0]) for x in c.available_members]
 
@@ -133,7 +133,7 @@
                           'admin_updated_users_group:%s' % gr,
                           None, self.ip_addr, self.sa)
             h.flash(_('updated users group %s') % gr, category='success')
-            Session.commit()
+            Session().commit()
         except formencode.Invalid, errors:
             e = errors.error_dict or {}
 
@@ -165,7 +165,7 @@
 
         try:
             UsersGroupModel().delete(id)
-            Session.commit()
+            Session().commit()
             h.flash(_('successfully deleted users group'), category='success')
         except UsersGroupsAssignedException, e:
             h.flash(e, category='error')
@@ -183,7 +183,7 @@
         """GET /users_groups/id/edit: Form to edit an existing item"""
         # url('edit_users_group', id=ID)
 
-        c.users_group = self.sa.query(UsersGroup).get(id)
+        c.users_group = UsersGroup.get(id)
         if not c.users_group:
             return redirect(url('users_groups'))
 
@@ -192,7 +192,7 @@
         c.group_members = [(x.user_id, x.username) for x in
                            c.group_members_obj]
         c.available_members = [(x.user_id, x.username) for x in
-                               self.sa.query(User).all()]
+                               User.query().all()]
         defaults = c.users_group.get_dict()
         perm = Permission.get_by_key('hg.create.repository')
         defaults.update({'create_repo_perm':
@@ -219,7 +219,7 @@
             h.flash(_("Granted 'repository create' permission to user"),
                     category='success')
 
-            Session.commit()
+            Session().commit()
         else:
             perm = Permission.get_by_key('hg.create.repository')
             UsersGroupModel().revoke_perm(id, perm)
@@ -228,5 +228,5 @@
             UsersGroupModel().grant_perm(id, perm)
             h.flash(_("Revoked 'repository create' permission to user"),
                     category='success')
-            Session.commit()
+            Session().commit()
         return redirect(url('edit_users_group', id=id))
--- a/rhodecode/lib/db_manage.py	Wed Jul 25 22:21:26 2012 +0200
+++ b/rhodecode/lib/db_manage.py	Thu Jul 26 15:36:44 2012 +0200
@@ -59,7 +59,7 @@
     def init_db(self):
         engine = create_engine(self.dburi, echo=self.log_sql)
         init_model(engine)
-        self.sa = meta.Session
+        self.sa = meta.Session()
 
     def create_tables(self, override=False, defaults={}):
         """
@@ -445,18 +445,25 @@
         paths.ui_key = '/'
         paths.ui_value = path
 
-        hgsettings1 = RhodeCodeSetting('realm', 'RhodeCode authentication')
-        hgsettings2 = RhodeCodeSetting('title', 'RhodeCode')
-        hgsettings3 = RhodeCodeSetting('ga_code', '')
+        sett1 = RhodeCodeSetting('realm', 'RhodeCode authentication')
+        sett2 = RhodeCodeSetting('title', 'RhodeCode')
+        sett3 = RhodeCodeSetting('ga_code', '')
+
+        sett4 = RhodeCodeSetting('show_public_icon', True)
+        sett5 = RhodeCodeSetting('show_private_icon', True)
+        sett6 = RhodeCodeSetting('stylify_metatags', False)
 
         self.sa.add(web1)
         self.sa.add(web2)
         self.sa.add(web3)
         self.sa.add(web4)
         self.sa.add(paths)
-        self.sa.add(hgsettings1)
-        self.sa.add(hgsettings2)
-        self.sa.add(hgsettings3)
+        self.sa.add(sett1)
+        self.sa.add(sett2)
+        self.sa.add(sett3)
+        self.sa.add(sett4)
+        self.sa.add(sett5)
+        self.sa.add(sett6)
 
         self.create_ldap_options()
 
--- a/rhodecode/templates/admin/settings/settings.html	Wed Jul 25 22:21:26 2012 +0200
+++ b/rhodecode/templates/admin/settings/settings.html	Thu Jul 26 15:36:44 2012 +0200
@@ -115,8 +115,8 @@
     </div>
     ${h.end_form()}
 
-    <h3>${_('Mercurial settings')}</h3>
-    ${h.form(url('admin_setting', setting_id='mercurial'),method='put')}
+    <h3>${_('VCS settings')}</h3>
+    ${h.form(url('admin_setting', setting_id='vcs'),method='put')}
     <div class="form">
         <!-- fields -->