changeset 8361:0456028c4ffe

db: introduce kallithea.DEFAULT_USER_ID to avoid repeated get_default_user()
author Mads Kiilerich <mads@kiilerich.com>
date Sun, 12 Apr 2020 02:43:07 +0200
parents 2045d30919e6
children bee01ae374a2
files kallithea/config/app_cfg.py kallithea/controllers/admin/repos.py kallithea/controllers/admin/users.py kallithea/controllers/forks.py kallithea/lib/auth.py kallithea/tests/conftest.py kallithea/tests/functional/test_admin_permissions.py kallithea/tests/functional/test_admin_users.py kallithea/tests/models/test_user_permissions_on_repo_groups.py
diffstat 9 files changed, 29 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/config/app_cfg.py	Sat Apr 11 18:53:10 2020 +0200
+++ b/kallithea/config/app_cfg.py	Sun Apr 12 02:43:07 2020 +0200
@@ -42,6 +42,7 @@
 from kallithea.lib.middleware.wrapper import RequestWrapper
 from kallithea.lib.utils import check_git_version, load_rcextensions, set_app_settings, set_indexer_config, set_vcs_config
 from kallithea.lib.utils2 import str2bool
+from kallithea.model import db
 
 
 log = logging.getLogger(__name__)
@@ -157,6 +158,8 @@
             sys.exit(1)
 
     # store some globals into kallithea
+    kallithea.DEFAULT_USER_ID = db.User.get_default_user().user_id
+
     if str2bool(config.get('use_celery')):
         kallithea.CELERY_APP = celerypylons.make_app()
     kallithea.CONFIG = config
--- a/kallithea/controllers/admin/repos.py	Sat Apr 11 18:53:10 2020 +0200
+++ b/kallithea/controllers/admin/repos.py	Sun Apr 12 02:43:07 2020 +0200
@@ -45,7 +45,7 @@
 from kallithea.lib.utils import action_logger
 from kallithea.lib.utils2 import safe_int
 from kallithea.lib.vcs import RepositoryError
-from kallithea.model.db import RepoGroup, Repository, RepositoryField, Setting, User, UserFollowing
+from kallithea.model.db import RepoGroup, Repository, RepositoryField, Setting, UserFollowing
 from kallithea.model.forms import RepoFieldForm, RepoForm, RepoPermsForm
 from kallithea.model.meta import Session
 from kallithea.model.repo import RepoModel
@@ -405,7 +405,7 @@
     @HasRepoPermissionLevelDecorator('admin')
     def edit_advanced(self, repo_name):
         c.repo_info = self._load_repo()
-        c.default_user_id = User.get_default_user().user_id
+        c.default_user_id = kallithea.DEFAULT_USER_ID
         c.in_public_journal = UserFollowing.query() \
             .filter(UserFollowing.user_id == c.default_user_id) \
             .filter(UserFollowing.follows_repository == c.repo_info).scalar()
@@ -442,7 +442,7 @@
 
         try:
             repo_id = Repository.get_by_repo_name(repo_name).repo_id
-            user_id = User.get_default_user().user_id
+            user_id = kallithea.DEFAULT_USER_ID
             self.scm_model.toggle_following_repo(repo_id, user_id)
             h.flash(_('Updated repository visibility in public journal'),
                     category='success')
--- a/kallithea/controllers/admin/users.py	Sat Apr 11 18:53:10 2020 +0200
+++ b/kallithea/controllers/admin/users.py	Sun Apr 12 02:43:07 2020 +0200
@@ -36,6 +36,7 @@
 from tg.i18n import ugettext as _
 from webob.exc import HTTPFound, HTTPNotFound
 
+import kallithea
 from kallithea.config.routing import url
 from kallithea.lib import auth_modules
 from kallithea.lib import helpers as h
@@ -387,7 +388,7 @@
             .filter(UserIpMap.user == c.user).all()
 
         c.default_user_ip_map = UserIpMap.query() \
-            .filter(UserIpMap.user == User.get_default_user()).all()
+            .filter(UserIpMap.user_id == kallithea.DEFAULT_USER_ID).all()
 
         defaults = c.user.get_dict()
         return htmlfill.render(
--- a/kallithea/controllers/forks.py	Sat Apr 11 18:53:10 2020 +0200
+++ b/kallithea/controllers/forks.py	Sun Apr 12 02:43:07 2020 +0200
@@ -35,13 +35,14 @@
 from tg.i18n import ugettext as _
 from webob.exc import HTTPFound
 
+import kallithea
 import kallithea.lib.helpers as h
 from kallithea.config.routing import url
 from kallithea.lib.auth import HasPermissionAny, HasPermissionAnyDecorator, HasRepoPermissionLevel, HasRepoPermissionLevelDecorator, LoginRequired
 from kallithea.lib.base import BaseRepoController, render
 from kallithea.lib.page import Page
 from kallithea.lib.utils2 import safe_int
-from kallithea.model.db import Repository, Ui, User, UserFollowing
+from kallithea.model.db import Repository, Ui, UserFollowing
 from kallithea.model.forms import RepoForkForm
 from kallithea.model.repo import RepoModel
 from kallithea.model.scm import AvailableRepoGroupChoices, ScmModel
@@ -76,7 +77,7 @@
             h.not_mapped_error(c.repo_name)
             raise HTTPFound(location=url('repos'))
 
-        c.default_user_id = User.get_default_user().user_id
+        c.default_user_id = kallithea.DEFAULT_USER_ID
         c.in_public_journal = UserFollowing.query() \
             .filter(UserFollowing.user_id == c.default_user_id) \
             .filter(UserFollowing.follows_repository == c.repo_info).scalar()
--- a/kallithea/lib/auth.py	Sat Apr 11 18:53:10 2020 +0200
+++ b/kallithea/lib/auth.py	Sun Apr 12 02:43:07 2020 +0200
@@ -39,11 +39,12 @@
 from tg.i18n import ugettext as _
 from webob.exc import HTTPForbidden, HTTPFound
 
+import kallithea
 from kallithea.config.routing import url
 from kallithea.lib.utils import get_repo_group_slug, get_repo_slug, get_user_group_slug
 from kallithea.lib.utils2 import ascii_bytes, ascii_str, safe_bytes
 from kallithea.lib.vcs.utils.lazy import LazyProperty
-from kallithea.model.db import (Permission, User, UserApiKeys, UserGroup, UserGroupMember, UserGroupRepoGroupToPerm, UserGroupRepoToPerm, UserGroupToPerm,
+from kallithea.model.db import (Permission, UserApiKeys, UserGroup, UserGroupMember, UserGroupRepoGroupToPerm, UserGroupRepoToPerm, UserGroupToPerm,
                                 UserGroupUserGroupToPerm, UserIpMap, UserToPerm)
 from kallithea.model.meta import Session
 from kallithea.model.user import UserModel
@@ -138,12 +139,9 @@
     #======================================================================
     # fetch default permissions
     #======================================================================
-    default_user = User.get_by_username('default')
-    default_user_id = default_user.user_id
-
-    default_repo_perms = Permission.get_default_perms(default_user_id)
-    default_repo_groups_perms = Permission.get_default_group_perms(default_user_id)
-    default_user_group_perms = Permission.get_default_user_group_perms(default_user_id)
+    default_repo_perms = Permission.get_default_perms(kallithea.DEFAULT_USER_ID)
+    default_repo_groups_perms = Permission.get_default_group_perms(kallithea.DEFAULT_USER_ID)
+    default_user_group_perms = Permission.get_default_user_group_perms(kallithea.DEFAULT_USER_ID)
 
     if user_is_admin:
         #==================================================================
@@ -178,7 +176,7 @@
 
     # default global permissions taken from the default user
     default_global_perms = UserToPerm.query() \
-        .filter(UserToPerm.user_id == default_user_id) \
+        .filter(UserToPerm.user_id == kallithea.DEFAULT_USER_ID) \
         .options(joinedload(UserToPerm.permission))
 
     for perm in default_global_perms:
@@ -544,8 +542,7 @@
     def get_allowed_ips(cls, user_id):
         _set = set()
 
-        default_ips = UserIpMap.query().filter(UserIpMap.user_id ==
-                                        User.get_default_user().user_id)
+        default_ips = UserIpMap.query().filter(UserIpMap.user_id == kallithea.DEFAULT_USER_ID)
         for ip in default_ips:
             try:
                 _set.add(ip.ip_addr)
--- a/kallithea/tests/conftest.py	Sat Apr 11 18:53:10 2020 +0200
+++ b/kallithea/tests/conftest.py	Sun Apr 12 02:43:07 2020 +0200
@@ -145,7 +145,7 @@
     user_model = UserModel()
 
     user_ids = []
-    user_ids.append(User.get_default_user().user_id)
+    user_ids.append(kallithea.DEFAULT_USER_ID)
     user_ids.append(User.get_by_username(TEST_USER_REGULAR_LOGIN).user_id)
 
     for user_id in user_ids:
--- a/kallithea/tests/functional/test_admin_permissions.py	Sat Apr 11 18:53:10 2020 +0200
+++ b/kallithea/tests/functional/test_admin_permissions.py	Sun Apr 12 02:43:07 2020 +0200
@@ -1,3 +1,4 @@
+import kallithea
 from kallithea.model.db import User, UserIpMap
 from kallithea.tests import base
 
@@ -17,7 +18,7 @@
 
     def test_add_delete_ips(self, auto_clear_ip_permissions):
         self.log_user()
-        default_user_id = User.get_default_user().user_id
+        default_user_id = kallithea.DEFAULT_USER_ID
 
         # Add IP and verify it is shown in UI and both gives access and rejects
 
--- a/kallithea/tests/functional/test_admin_users.py	Sat Apr 11 18:53:10 2020 +0200
+++ b/kallithea/tests/functional/test_admin_users.py	Sun Apr 12 02:43:07 2020 +0200
@@ -17,6 +17,7 @@
 from tg.util.webtest import test_context
 from webob.exc import HTTPNotFound
 
+import kallithea
 from kallithea.controllers.admin.users import UsersController
 from kallithea.lib import helpers as h
 from kallithea.lib.auth import check_password
@@ -578,7 +579,7 @@
         assert u._get_user_or_raise_if_default(user.user_id) == user
         # the default user should raise
         with pytest.raises(HTTPNotFound):
-            u._get_user_or_raise_if_default(User.get_default_user().user_id)
+            u._get_user_or_raise_if_default(kallithea.DEFAULT_USER_ID)
 
 
 class TestAdminUsersControllerForDefaultUser(base.TestController):
--- a/kallithea/tests/models/test_user_permissions_on_repo_groups.py	Sat Apr 11 18:53:10 2020 +0200
+++ b/kallithea/tests/models/test_user_permissions_on_repo_groups.py	Sun Apr 12 02:43:07 2020 +0200
@@ -1,6 +1,7 @@
 import functools
 
-from kallithea.model.db import RepoGroup, Repository, User
+import kallithea
+from kallithea.model.db import RepoGroup, Repository
 from kallithea.model.meta import Session
 from kallithea.model.repo_group import RepoGroupModel
 from kallithea.tests.models.common import _check_expected_count, _create_project_tree, _destroy_project_tree, _get_perms, check_tree_perms, expected_count
@@ -19,7 +20,7 @@
     if not user_id:
         user_id = test_u1_id
         permissions_setup_func(group_name, perm, recursive,
-                               user_id=User.get_default_user().user_id)
+                               user_id=kallithea.DEFAULT_USER_ID)
 
     repo_group = RepoGroup.get_by_group_name(group_name=group_name)
     if not repo_group:
@@ -116,7 +117,7 @@
     # other repos and groups should have this permission now set !
     recursive = 'all'
     group = 'g0'
-    default_user_id = User.get_default_user().user_id
+    default_user_id = kallithea.DEFAULT_USER_ID
     permissions_setup_func(group, 'group.write', recursive=recursive,
                            user_id=default_user_id)
 
@@ -196,7 +197,7 @@
     recursive = 'repos'
     group = 'g0/g0_1'
     perm = 'group.none'
-    default_user_id = User.get_default_user().user_id
+    default_user_id = kallithea.DEFAULT_USER_ID
 
     permissions_setup_func(group, perm, recursive=recursive,
                            user_id=default_user_id)
@@ -254,7 +255,7 @@
     # remain intact as we use groups only mode !
     recursive = 'groups'
     group = 'g0/g0_1'
-    default_user_id = User.get_default_user().user_id
+    default_user_id = kallithea.DEFAULT_USER_ID
     permissions_setup_func(group, 'group.write', recursive=recursive,
                            user_id=default_user_id)