Changeset - 3760df6251e0
[Not reviewed]
default
0 22 0
Søren Løvborg - 9 years ago 2017-02-28 21:09:48
sorenl@unity3d.com
model: remove BaseModel class

The only remaining purpose of this class was to provide the "sa" field,
allowing a custom SQLAlchemy session to be used for model operations.
However, this never actually worked, nor was it used anywhere.

There's always a global SQLAlchemy session associated with the current
thread; using another session for a single function call does not make
any sense (as sessions cannot be mixed), unless the code works carefully
to ensure the two sessions (and all objects loaded from them) are kept
completely separate. Suffice to say that Kallithea does no such thing,
thus there's no need to pretend to support multiple concurrent sessions.
22 files changed with 143 insertions and 173 deletions:
0 comments (0 inline, 0 general)
kallithea/controllers/journal.py
Show inline comments
 
@@ -95,7 +95,7 @@ class JournalController(BaseController):
 
        if not repo_ids and user_ids:
 
            filtering_criterion = UserLog.user_id.in_(user_ids)
 
        if filtering_criterion is not None:
 
            journal = self.sa.query(UserLog) \
 
            journal = UserLog.query() \
 
                .options(joinedload(UserLog.user)) \
 
                .options(joinedload(UserLog.repository))
 
            #filter
 
@@ -197,7 +197,7 @@ class JournalController(BaseController):
 
        # Return a rendered template
 
        p = safe_int(request.GET.get('page'), 1)
 
        c.user = User.get(request.authuser.user_id)
 
        c.following = self.sa.query(UserFollowing) \
 
        c.following = UserFollowing.query() \
 
            .filter(UserFollowing.user_id == request.authuser.user_id) \
 
            .options(joinedload(UserFollowing.follows_repository)) \
 
            .all()
 
@@ -229,7 +229,7 @@ class JournalController(BaseController):
 
        """
 
        Produce an atom-1.0 feed via feedgenerator module
 
        """
 
        following = self.sa.query(UserFollowing) \
 
        following = UserFollowing.query() \
 
            .filter(UserFollowing.user_id == request.authuser.user_id) \
 
            .options(joinedload(UserFollowing.follows_repository)) \
 
            .all()
 
@@ -241,7 +241,7 @@ class JournalController(BaseController):
 
        """
 
        Produce an rss feed via feedgenerator module
 
        """
 
        following = self.sa.query(UserFollowing) \
 
        following = UserFollowing.query() \
 
            .filter(UserFollowing.user_id == request.authuser.user_id) \
 
            .options(joinedload(UserFollowing.follows_repository)) \
 
            .all()
 
@@ -279,7 +279,7 @@ class JournalController(BaseController):
 
        # Return a rendered template
 
        p = safe_int(request.GET.get('page'), 1)
 

	
 
        c.following = self.sa.query(UserFollowing) \
 
        c.following = UserFollowing.query() \
 
            .filter(UserFollowing.user_id == request.authuser.user_id) \
 
            .options(joinedload(UserFollowing.follows_repository)) \
 
            .all()
 
@@ -300,7 +300,7 @@ class JournalController(BaseController):
 
        """
 
        Produce an atom-1.0 feed via feedgenerator module
 
        """
 
        c.following = self.sa.query(UserFollowing) \
 
        c.following = UserFollowing.query() \
 
            .filter(UserFollowing.user_id == request.authuser.user_id) \
 
            .options(joinedload(UserFollowing.follows_repository)) \
 
            .all()
 
@@ -312,7 +312,7 @@ class JournalController(BaseController):
 
        """
 
        Produce an rss2 feed via feedgenerator module
 
        """
 
        c.following = self.sa.query(UserFollowing) \
 
        c.following = UserFollowing.query() \
 
            .filter(UserFollowing.user_id == request.authuser.user_id) \
 
            .options(joinedload(UserFollowing.follows_repository)) \
 
            .all()
kallithea/controllers/summary.py
Show inline comments
 
@@ -132,7 +132,7 @@ class SummaryController(BaseRepoControll
 
        else:
 
            c.show_stats = False
 

	
 
        stats = self.sa.query(Statistics) \
 
        stats = Statistics.query() \
 
            .filter(Statistics.repository == c.db_repo) \
 
            .scalar()
 

	
 
@@ -188,7 +188,7 @@ class SummaryController(BaseRepoControll
 
        c.ts_min = ts_min_m
 
        c.ts_max = ts_max_y
 

	
 
        stats = self.sa.query(Statistics) \
 
        stats = Statistics.query() \
 
            .filter(Statistics.repository == c.db_repo) \
 
            .scalar()
 
        c.stats_percentage = 0
kallithea/lib/base.py
Show inline comments
 
@@ -432,8 +432,7 @@ class BaseController(WSGIController):
 

	
 
        c.my_pr_count = PullRequest.query(reviewer_id=request.authuser.user_id, include_closed=False).count()
 

	
 
        self.sa = meta.Session
 
        self.scm_model = ScmModel(self.sa)
 
        self.scm_model = ScmModel()
 

	
 
    @staticmethod
 
    def _determine_auth_user(api_key, bearer_token, session_authuser):
kallithea/lib/celerylib/tasks.py
Show inline comments
 
@@ -63,11 +63,11 @@ log = logging.getLogger(__name__)
 
@celerylib.dbsession
 
def whoosh_index(repo_location, full_index):
 
    from kallithea.lib.indexers.daemon import WhooshIndexingDaemon
 
    DBS = celerylib.get_session()
 
    celerylib.get_session() # initialize database connection
 

	
 
    index_location = config['index_dir']
 
    WhooshIndexingDaemon(index_location=index_location,
 
                         repo_location=repo_location, sa=DBS) \
 
                         repo_location=repo_location) \
 
                         .run(full_index=full_index)
 

	
 

	
 
@@ -354,7 +354,7 @@ def create_repo(form_data, cur_user):
 
    enable_downloads = defs.get('repo_enable_downloads')
 

	
 
    try:
 
        repo = RepoModel(DBS)._create_repo(
 
        repo = RepoModel()._create_repo(
 
            repo_name=repo_name_full,
 
            repo_type=repo_type,
 
            description=description,
 
@@ -377,7 +377,7 @@ def create_repo(form_data, cur_user):
 

	
 
        DBS.commit()
 
        # now create this repo on Filesystem
 
        RepoModel(DBS)._create_filesystem_repo(
 
        RepoModel()._create_filesystem_repo(
 
            repo_name=repo_name,
 
            repo_type=repo_type,
 
            repo_group=RepoGroup.guess_instance(repo_group),
 
@@ -400,7 +400,7 @@ def create_repo(form_data, cur_user):
 
        if repo:
 
            Repository.delete(repo.repo_id)
 
            DBS.commit()
 
            RepoModel(DBS)._delete_filesystem_repo(repo)
 
            RepoModel()._delete_filesystem_repo(repo)
 
        raise
 

	
 
    return True
 
@@ -436,7 +436,7 @@ def create_repo_fork(form_data, cur_user
 
    try:
 
        fork_of = Repository.guess_instance(form_data.get('fork_parent_id'))
 

	
 
        RepoModel(DBS)._create_repo(
 
        RepoModel()._create_repo(
 
            repo_name=repo_name_full,
 
            repo_type=repo_type,
 
            description=form_data['description'],
 
@@ -456,7 +456,7 @@ def create_repo_fork(form_data, cur_user
 
        source_repo_path = os.path.join(base_path, fork_of.repo_name)
 

	
 
        # now create this repo on Filesystem
 
        RepoModel(DBS)._create_filesystem_repo(
 
        RepoModel()._create_filesystem_repo(
 
            repo_name=repo_name,
 
            repo_type=repo_type,
 
            repo_group=RepoGroup.guess_instance(repo_group),
 
@@ -479,7 +479,7 @@ def create_repo_fork(form_data, cur_user
 
        if repo:
 
            Repository.delete(repo.repo_id)
 
            DBS.commit()
 
            RepoModel(DBS)._delete_filesystem_repo(repo)
 
            RepoModel()._delete_filesystem_repo(repo)
 
        raise
 

	
 
    return True
kallithea/lib/db_manage.py
Show inline comments
 
@@ -126,7 +126,7 @@ class DbManage(object):
 
        Fixes a old kallithea version path into new one without a '*'
 
        """
 

	
 
        paths = self.sa.query(Ui) \
 
        paths = Ui.query() \
 
                .filter(Ui.ui_key == '/') \
 
                .scalar()
 

	
 
@@ -139,7 +139,7 @@ class DbManage(object):
 
        Fixes a old default user with some 'nicer' default values,
 
        used mostly for anonymous access
 
        """
 
        def_user = self.sa.query(User).filter_by(is_default_user=True).one()
 
        def_user = User.query().filter_by(is_default_user=True).one()
 

	
 
        def_user.name = 'Anonymous'
 
        def_user.lastname = 'User'
 
@@ -214,7 +214,7 @@ class DbManage(object):
 

	
 
        #HOOKS
 
        hooks1_key = Ui.HOOK_UPDATE
 
        hooks1_ = self.sa.query(Ui) \
 
        hooks1_ = Ui.query() \
 
            .filter(Ui.ui_key == hooks1_key).scalar()
 

	
 
        hooks1 = Ui() if hooks1_ is None else hooks1_
 
@@ -225,7 +225,7 @@ class DbManage(object):
 
        self.sa.add(hooks1)
 

	
 
        hooks2_key = Ui.HOOK_REPO_SIZE
 
        hooks2_ = self.sa.query(Ui) \
 
        hooks2_ = Ui.query() \
 
            .filter(Ui.ui_key == hooks2_key).scalar()
 
        hooks2 = Ui() if hooks2_ is None else hooks2_
 
        hooks2.ui_section = 'hooks'
 
@@ -482,7 +482,7 @@ class DbManage(object):
 
        # module.(access|create|change|delete)_[name]
 
        # module.(none|read|write|admin)
 
        log.info('creating permissions')
 
        PermissionModel(self.sa).create_permissions()
 
        PermissionModel().create_permissions()
 

	
 
    def populate_default_permissions(self):
 
        """
 
@@ -490,4 +490,4 @@ class DbManage(object):
 
        permissions that are missing, and not alter already defined ones
 
        """
 
        log.info('creating default user permissions')
 
        PermissionModel(self.sa).create_default_permissions(user=User.DEFAULT_USER)
 
        PermissionModel().create_default_permissions(user=User.DEFAULT_USER)
kallithea/lib/indexers/daemon.py
Show inline comments
 
@@ -63,7 +63,7 @@ class WhooshIndexingDaemon(object):
 
    """
 

	
 
    def __init__(self, indexname=IDX_NAME, index_location=None,
 
                 repo_location=None, sa=None, repo_list=None,
 
                 repo_location=None, repo_list=None,
 
                 repo_update_list=None):
 
        self.indexname = indexname
 

	
 
@@ -75,7 +75,7 @@ class WhooshIndexingDaemon(object):
 
        if not repo_location:
 
            raise Exception('You have to provide repositories location')
 

	
 
        self.repo_paths = ScmModel(sa).repo_scan(self.repo_location)
 
        self.repo_paths = ScmModel().repo_scan(self.repo_location)
 

	
 
        #filter repo list
 
        if repo_list:
kallithea/lib/utils.py
Show inline comments
 
@@ -430,7 +430,7 @@ def map_groups(path):
 

	
 
    # last element is repo in nested groups structure
 
    groups = groups[:-1]
 
    rgm = RepoGroupModel(sa)
 
    rgm = RepoGroupModel()
 
    owner = User.get_first_admin()
 
    for lvl, group_name in enumerate(groups):
 
        group_name = u'/'.join(groups[:lvl] + [group_name])
 
@@ -531,7 +531,7 @@ def repo2db_mapper(initial_repo_list, re
 
                log.debug("Removing non-existing repository found in db `%s`",
 
                          repo.repo_name)
 
                try:
 
                    RepoModel(sa).delete(repo, forks='detach', fs_remove=False)
 
                    RepoModel().delete(repo, forks='detach', fs_remove=False)
 
                    sa.commit()
 
                except Exception:
 
                    #don't hold further removals on error
kallithea/model/api_key.py
Show inline comments
 
@@ -29,14 +29,13 @@ import time
 
import logging
 

	
 
from kallithea.lib.utils2 import generate_api_key
 
from kallithea.model.base import BaseModel
 
from kallithea.model.db import User, UserApiKeys
 
from kallithea.model.meta import Session
 

	
 
log = logging.getLogger(__name__)
 

	
 

	
 
class ApiKeyModel(BaseModel):
 
class ApiKeyModel(object):
 

	
 
    def create(self, user, description, lifetime=-1):
 
        """
kallithea/model/base.py
Show inline comments
 
@@ -44,18 +44,3 @@ def init_model(engine):
 
    engine_str = obfuscate_url_pw(str(engine.url))
 
    log.info("initializing db for %s", engine_str)
 
    meta.Base.metadata.bind = engine
 

	
 

	
 
class BaseModel(object):
 
    """
 
    Base Model for all Kallithea models, it adds sql alchemy session
 
    into instance of model
 

	
 
    :param sa: If passed it reuses this session instead of creating a new one
 
    """
 

	
 
    def __init__(self, sa=None):
 
        if sa is not None:
 
            self.sa = sa
 
        else:
 
            self.sa = meta.Session()
kallithea/model/changeset_status.py
Show inline comments
 
@@ -28,14 +28,13 @@ Original author and date, and relevant c
 
import logging
 
from sqlalchemy.orm import joinedload
 

	
 
from kallithea.model.base import BaseModel
 
from kallithea.model.db import ChangesetStatus, PullRequest, Repository, User
 
from kallithea.model.db import ChangesetStatus, PullRequest, Repository, User, Session
 
from kallithea.lib.exceptions import StatusChangeOnClosedPullRequestError
 

	
 
log = logging.getLogger(__name__)
 

	
 

	
 
class ChangesetStatusModel(BaseModel):
 
class ChangesetStatusModel(object):
 

	
 
    def _get_status_query(self, repo, revision, pull_request,
 
                          with_revisions=False):
 
@@ -190,5 +189,5 @@ class ChangesetStatusModel(BaseModel):
 
            new_status.revision = rev
 
            new_status.pull_request = pull_request
 
            new_statuses.append(new_status)
 
            self.sa.add(new_status)
 
            Session().add(new_status)
 
        return new_statuses
kallithea/model/comment.py
Show inline comments
 
@@ -32,7 +32,6 @@ from collections import defaultdict
 

	
 
from kallithea.lib.utils2 import extract_mentioned_users, safe_unicode
 
from kallithea.lib import helpers as h
 
from kallithea.model.base import BaseModel
 
from kallithea.model.db import ChangesetComment, User, \
 
    Notification, PullRequest, Repository
 
from kallithea.model.notification import NotificationModel
 
@@ -54,7 +53,7 @@ def _list_pull_request_commenters(pull_r
 
        .all())
 

	
 

	
 
class ChangesetCommentsModel(BaseModel):
 
class ChangesetCommentsModel(object):
 

	
 
    def _get_notification_data(self, repo, comment, author, comment_text,
 
                               line_no=None, revision=None, pull_request=None,
kallithea/model/gist.py
Show inline comments
 
@@ -35,8 +35,7 @@ import shutil
 
from kallithea.lib.utils2 import safe_unicode, safe_int, \
 
    time_to_datetime, AttributeDict
 
from kallithea.lib.compat import json
 
from kallithea.model.base import BaseModel
 
from kallithea.model.db import Gist, User
 
from kallithea.model.db import Gist, Session, User
 
from kallithea.model.repo import RepoModel
 
from kallithea.model.scm import ScmModel
 

	
 
@@ -54,7 +53,7 @@ def make_gist_id():
 
    return u''.join(rnd.choice(alphabet) for _ in xrange(length))
 

	
 

	
 
class GistModel(BaseModel):
 
class GistModel(object):
 

	
 
    def __delete_gist(self, gist):
 
        """
 
@@ -122,8 +121,8 @@ class GistModel(BaseModel):
 
        gist.owner_id = owner.user_id
 
        gist.gist_expires = gist_expires
 
        gist.gist_type = safe_unicode(gist_type)
 
        self.sa.add(gist)
 
        self.sa.flush() # make database assign gist.gist_id
 
        Session().add(gist)
 
        Session().flush() # make database assign gist.gist_id
 
        if gist_type == Gist.GIST_PUBLIC:
 
            # use DB ID for easy to use GIST ID
 
            gist_id = safe_unicode(gist.gist_id)
 
@@ -173,7 +172,7 @@ class GistModel(BaseModel):
 
    def delete(self, gist, fs_remove=True):
 
        gist = Gist.guess_instance(gist)
 
        try:
 
            self.sa.delete(gist)
 
            Session().delete(gist)
 
            if fs_remove:
 
                self.__delete_gist(gist)
 
            else:
kallithea/model/notification.py
Show inline comments
 
@@ -36,14 +36,13 @@ from sqlalchemy.orm import joinedload, s
 
import kallithea
 
from kallithea.lib import helpers as h
 
from kallithea.lib.utils2 import safe_unicode
 
from kallithea.model.base import BaseModel
 
from kallithea.model.db import Notification, User, UserNotification
 
from kallithea.model.meta import Session
 

	
 
log = logging.getLogger(__name__)
 

	
 

	
 
class NotificationModel(BaseModel):
 
class NotificationModel(object):
 

	
 
    def create(self, created_by, subject, body, recipients=None,
 
               type_=Notification.TYPE_MESSAGE, with_email=True,
 
@@ -262,7 +261,7 @@ class NotificationModel(BaseModel):
 
                )
 

	
 

	
 
class EmailNotificationModel(BaseModel):
 
class EmailNotificationModel(object):
 

	
 
    TYPE_CHANGESET_COMMENT = Notification.TYPE_CHANGESET_COMMENT
 
    TYPE_MESSAGE = Notification.TYPE_MESSAGE # only used for testing
kallithea/model/permission.py
Show inline comments
 
@@ -31,15 +31,14 @@ import traceback
 

	
 
from sqlalchemy.exc import DatabaseError
 

	
 
from kallithea.model.base import BaseModel
 
from kallithea.model.db import User, Permission, UserToPerm, UserRepoToPerm, \
 
    UserRepoGroupToPerm, UserUserGroupToPerm
 
from kallithea.model.db import Permission, Session, User, \
 
    UserToPerm, UserRepoToPerm, UserRepoGroupToPerm, UserUserGroupToPerm
 
from kallithea.lib.utils2 import str2bool
 

	
 
log = logging.getLogger(__name__)
 

	
 

	
 
class PermissionModel(BaseModel):
 
class PermissionModel(object):
 
    """
 
    Permissions model for Kallithea
 
    """
 
@@ -52,7 +51,7 @@ class PermissionModel(BaseModel):
 
            if not Permission.get_by_key(p[0]):
 
                new_perm = Permission()
 
                new_perm.permission_name = p[0]
 
                self.sa.add(new_perm)
 
                Session().add(new_perm)
 

	
 
    def create_default_permissions(self, user, force=False):
 
        """
 
@@ -81,8 +80,8 @@ class PermissionModel(BaseModel):
 

	
 
        if force:
 
            for perm in perms:
 
                self.sa.delete(perm)
 
            self.sa.commit()
 
                Session().delete(perm)
 
            Session().commit()
 
            defined_perms_groups = []
 
        # For every default permission that needs to be created, we check if
 
        # its group is already defined. If it's not, we create default permission.
 
@@ -92,7 +91,7 @@ class PermissionModel(BaseModel):
 
                log.debug('GR:%s not found, creating permission %s',
 
                          gr, perm_name)
 
                new_perm = _make_perm(perm_name)
 
                self.sa.add(new_perm)
 
                Session().add(new_perm)
 

	
 
    def update(self, form_result):
 
        perm_user = User.get_by_username(username=form_result['perm_user_name'])
 
@@ -112,11 +111,11 @@ class PermissionModel(BaseModel):
 
            # clear current entries, to make this function idempotent
 
            # it will fix even if we define more permissions or permissions
 
            # are somehow missing
 
            u2p = self.sa.query(UserToPerm) \
 
            u2p = UserToPerm.query() \
 
                .filter(UserToPerm.user == perm_user) \
 
                .all()
 
            for p in u2p:
 
                self.sa.delete(p)
 
                Session().delete(p)
 
            #create fresh set of permissions
 
            for def_perm_key in ['default_repo_perm',
 
                                 'default_group_perm',
 
@@ -129,14 +128,14 @@ class PermissionModel(BaseModel):
 
                                 'default_register',
 
                                 'default_extern_activate']:
 
                p = _make_new(perm_user, form_result[def_perm_key])
 
                self.sa.add(p)
 
                Session().add(p)
 

	
 
            #stage 3 update all default permissions for repos if checked
 
            if form_result['overwrite_default_repo']:
 
                _def_name = form_result['default_repo_perm'].split('repository.')[-1]
 
                _def = Permission.get_by_key('repository.' + _def_name)
 
                # repos
 
                for r2p in self.sa.query(UserRepoToPerm) \
 
                for r2p in UserRepoToPerm.query() \
 
                               .filter(UserRepoToPerm.user == perm_user) \
 
                               .all():
 

	
 
@@ -148,7 +147,7 @@ class PermissionModel(BaseModel):
 
                _def_name = form_result['default_group_perm'].split('group.')[-1]
 
                # groups
 
                _def = Permission.get_by_key('group.' + _def_name)
 
                for g2p in self.sa.query(UserRepoGroupToPerm) \
 
                for g2p in UserRepoGroupToPerm.query() \
 
                               .filter(UserRepoGroupToPerm.user == perm_user) \
 
                               .all():
 
                    g2p.permission = _def
 
@@ -157,13 +156,13 @@ class PermissionModel(BaseModel):
 
                _def_name = form_result['default_user_group_perm'].split('usergroup.')[-1]
 
                # groups
 
                _def = Permission.get_by_key('usergroup.' + _def_name)
 
                for g2p in self.sa.query(UserUserGroupToPerm) \
 
                for g2p in UserUserGroupToPerm.query() \
 
                               .filter(UserUserGroupToPerm.user == perm_user) \
 
                               .all():
 
                    g2p.permission = _def
 

	
 
            self.sa.commit()
 
            Session().commit()
 
        except (DatabaseError,):
 
            log.error(traceback.format_exc())
 
            self.sa.rollback()
 
            Session().rollback()
 
            raise
kallithea/model/pull_request.py
Show inline comments
 
@@ -35,7 +35,6 @@ from sqlalchemy.orm import joinedload
 
from kallithea.model.meta import Session
 
from kallithea.lib import helpers as h
 
from kallithea.lib.exceptions import UserInvalidException
 
from kallithea.model.base import BaseModel
 
from kallithea.model.db import PullRequest, PullRequestReviewer, Notification, \
 
    ChangesetStatus, User
 
from kallithea.model.notification import NotificationModel
 
@@ -45,7 +44,7 @@ from kallithea.lib.utils2 import extract
 
log = logging.getLogger(__name__)
 

	
 

	
 
class PullRequestModel(BaseModel):
 
class PullRequestModel(object):
 

	
 
    def _get_valid_reviewers(self, seq):
 
        """ Generate User objects from a sequence of user IDs, usernames or
kallithea/model/repo.py
Show inline comments
 
@@ -41,9 +41,8 @@ from kallithea.lib.utils2 import LazyPro
 
from kallithea.lib.caching_query import FromCache
 
from kallithea.lib.hooks import log_delete_repository
 

	
 
from kallithea.model.base import BaseModel
 
from kallithea.model.db import Repository, UserRepoToPerm, UserGroupRepoToPerm, \
 
    UserRepoGroupToPerm, UserGroupRepoGroupToPerm, User, Permission, \
 
    UserRepoGroupToPerm, UserGroupRepoGroupToPerm, User, Permission, Session, \
 
    Statistics, UserGroup, Ui, RepoGroup, RepositoryField
 

	
 
from kallithea.lib import helpers as h
 
@@ -54,7 +53,7 @@ from kallithea.model.scm import UserGrou
 
log = logging.getLogger(__name__)
 

	
 

	
 
class RepoModel(BaseModel):
 
class RepoModel(object):
 

	
 
    URL_SEPARATOR = Repository.url_sep()
 

	
 
@@ -74,7 +73,7 @@ class RepoModel(BaseModel):
 

	
 
        repo_to_perm.repository = repository
 
        repo_to_perm.user_id = def_user.user_id
 
        self.sa.add(repo_to_perm)
 
        Session().add(repo_to_perm)
 

	
 
        return repo_to_perm
 

	
 
@@ -84,11 +83,11 @@ class RepoModel(BaseModel):
 
        Gets the repositories root path from database
 
        """
 

	
 
        q = self.sa.query(Ui).filter(Ui.ui_key == '/').one()
 
        q = Ui.query().filter(Ui.ui_key == '/').one()
 
        return q.ui_value
 

	
 
    def get(self, repo_id, cache=False):
 
        repo = self.sa.query(Repository) \
 
        repo = Repository.query() \
 
            .filter(Repository.repo_id == repo_id)
 

	
 
        if cache:
 
@@ -100,7 +99,7 @@ class RepoModel(BaseModel):
 
        return Repository.guess_instance(repository)
 

	
 
    def get_by_repo_name(self, repo_name, cache=False):
 
        repo = self.sa.query(Repository) \
 
        repo = Repository.query() \
 
            .filter(Repository.repo_name == repo_name)
 

	
 
        if cache:
 
@@ -124,7 +123,7 @@ class RepoModel(BaseModel):
 
        return Repository.query().filter(Repository.repo_name.in_(repos))
 

	
 
    def get_users_js(self):
 
        users = self.sa.query(User) \
 
        users = User.query() \
 
            .filter(User.active == True) \
 
            .order_by(User.name, User.lastname) \
 
            .all()
 
@@ -140,7 +139,7 @@ class RepoModel(BaseModel):
 
        )
 

	
 
    def get_user_groups_js(self):
 
        user_groups = self.sa.query(UserGroup) \
 
        user_groups = UserGroup.query() \
 
            .filter(UserGroup.users_group_active == True) \
 
            .order_by(UserGroup.users_group_name) \
 
            .options(subqueryload(UserGroup.members)) \
 
@@ -391,7 +390,7 @@ class RepoModel(BaseModel):
 
                parent_repo = fork_of
 
                new_repo.fork = parent_repo
 

	
 
            self.sa.add(new_repo)
 
            Session().add(new_repo)
 

	
 
            if fork_of and copy_fork_permissions:
 
                repo = fork_of
 
@@ -429,11 +428,10 @@ class RepoModel(BaseModel):
 
                self._create_default_perms(new_repo, private)
 

	
 
            # now automatically start following this repository as owner
 
            ScmModel(self.sa).toggle_following_repo(new_repo.repo_id,
 
                                                    owner.user_id)
 
            ScmModel().toggle_following_repo(new_repo.repo_id, owner.user_id)
 
            # we need to flush here, in order to check if database won't
 
            # throw any exceptions, create filesystem dirs at the very end
 
            self.sa.flush()
 
            Session().flush()
 
            return new_repo
 
        except Exception:
 
            log.error(traceback.format_exc())
 
@@ -517,7 +515,7 @@ class RepoModel(BaseModel):
 

	
 
            old_repo_dict = repo.get_dict()
 
            try:
 
                self.sa.delete(repo)
 
                Session().delete(repo)
 
                if fs_remove:
 
                    self._delete_filesystem_repo(repo)
 
                else:
 
@@ -542,14 +540,14 @@ class RepoModel(BaseModel):
 
        permission = Permission.guess_instance(perm)
 

	
 
        # check if we have that permission already
 
        obj = self.sa.query(UserRepoToPerm) \
 
        obj = UserRepoToPerm.query() \
 
            .filter(UserRepoToPerm.user == user) \
 
            .filter(UserRepoToPerm.repository == repo) \
 
            .scalar()
 
        if obj is None:
 
            # create new !
 
            obj = UserRepoToPerm()
 
            self.sa.add(obj)
 
            Session().add(obj)
 
        obj.repository = repo
 
        obj.user = user
 
        obj.permission = permission
 
@@ -567,12 +565,12 @@ class RepoModel(BaseModel):
 
        user = User.guess_instance(user)
 
        repo = Repository.guess_instance(repo)
 

	
 
        obj = self.sa.query(UserRepoToPerm) \
 
        obj = UserRepoToPerm.query() \
 
            .filter(UserRepoToPerm.repository == repo) \
 
            .filter(UserRepoToPerm.user == user) \
 
            .scalar()
 
        if obj is not None:
 
            self.sa.delete(obj)
 
            Session().delete(obj)
 
            log.debug('Revoked perm on %s on %s', repo, user)
 

	
 
    def grant_user_group_permission(self, repo, group_name, perm):
 
@@ -590,7 +588,7 @@ class RepoModel(BaseModel):
 
        permission = Permission.guess_instance(perm)
 

	
 
        # check if we have that permission already
 
        obj = self.sa.query(UserGroupRepoToPerm) \
 
        obj = UserGroupRepoToPerm.query() \
 
            .filter(UserGroupRepoToPerm.users_group == group_name) \
 
            .filter(UserGroupRepoToPerm.repository == repo) \
 
            .scalar()
 
@@ -598,7 +596,7 @@ class RepoModel(BaseModel):
 
        if obj is None:
 
            # create new
 
            obj = UserGroupRepoToPerm()
 
            self.sa.add(obj)
 
            Session().add(obj)
 

	
 
        obj.repository = repo
 
        obj.users_group = group_name
 
@@ -617,12 +615,12 @@ class RepoModel(BaseModel):
 
        repo = Repository.guess_instance(repo)
 
        group_name = UserGroup.guess_instance(group_name)
 

	
 
        obj = self.sa.query(UserGroupRepoToPerm) \
 
        obj = UserGroupRepoToPerm.query() \
 
            .filter(UserGroupRepoToPerm.repository == repo) \
 
            .filter(UserGroupRepoToPerm.users_group == group_name) \
 
            .scalar()
 
        if obj is not None:
 
            self.sa.delete(obj)
 
            Session().delete(obj)
 
            log.debug('Revoked perm to %s on %s', repo, group_name)
 

	
 
    def delete_stats(self, repo_name):
 
@@ -633,10 +631,10 @@ class RepoModel(BaseModel):
 
        """
 
        repo = Repository.guess_instance(repo_name)
 
        try:
 
            obj = self.sa.query(Statistics) \
 
            obj = Statistics.query() \
 
                .filter(Statistics.repository == repo).scalar()
 
            if obj is not None:
 
                self.sa.delete(obj)
 
                Session().delete(obj)
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise
kallithea/model/repo_group.py
Show inline comments
 
@@ -34,14 +34,13 @@ import datetime
 

	
 
from kallithea.lib.utils2 import LazyProperty
 

	
 
from kallithea.model.base import BaseModel
 
from kallithea.model.db import RepoGroup, Ui, UserRepoGroupToPerm, \
 
from kallithea.model.db import RepoGroup, Session, Ui, UserRepoGroupToPerm, \
 
    User, Permission, UserGroupRepoGroupToPerm, UserGroup, Repository
 

	
 
log = logging.getLogger(__name__)
 

	
 

	
 
class RepoGroupModel(BaseModel):
 
class RepoGroupModel(object):
 

	
 
    @LazyProperty
 
    def repos_path(self):
 
@@ -66,7 +65,7 @@ class RepoGroupModel(BaseModel):
 

	
 
        repo_group_to_perm.group = new_group
 
        repo_group_to_perm.user_id = def_user.user_id
 
        self.sa.add(repo_group_to_perm)
 
        Session().add(repo_group_to_perm)
 
        return repo_group_to_perm
 

	
 
    def _create_group(self, group_name):
 
@@ -144,7 +143,7 @@ class RepoGroupModel(BaseModel):
 
            new_repo_group.parent_group = parent_group
 
            new_repo_group.group_name = new_repo_group.get_new_name(group_name)
 

	
 
            self.sa.add(new_repo_group)
 
            Session().add(new_repo_group)
 

	
 
            # create an ADMIN permission for owner except if we're super admin,
 
            # later owner should go into the owner field of groups
 
@@ -175,7 +174,7 @@ class RepoGroupModel(BaseModel):
 
            if not just_db:
 
                # we need to flush here, in order to check if database won't
 
                # throw any exceptions, create filesystem dirs at the very end
 
                self.sa.flush()
 
                Session().flush()
 
                self._create_group(new_repo_group.group_name)
 

	
 
            return new_repo_group
 
@@ -288,7 +287,7 @@ class RepoGroupModel(BaseModel):
 
            repo_group.parent_group = RepoGroup.get(form_data['parent_group_id'])
 
            repo_group.group_name = repo_group.get_new_name(form_data['group_name'])
 
            new_path = repo_group.full_path
 
            self.sa.add(repo_group)
 
            Session().add(repo_group)
 

	
 
            # iterate over all members of this groups and do fixes
 
            # set locking if given
 
@@ -322,7 +321,7 @@ class RepoGroupModel(BaseModel):
 
    def delete(self, repo_group, force_delete=False):
 
        repo_group = RepoGroup.guess_instance(repo_group)
 
        try:
 
            self.sa.delete(repo_group)
 
            Session().delete(repo_group)
 
            self._delete_group(repo_group, force_delete)
 
        except Exception:
 
            log.error('Error removing repo_group %s', repo_group)
 
@@ -444,14 +443,14 @@ class RepoGroupModel(BaseModel):
 
        permission = Permission.guess_instance(perm)
 

	
 
        # check if we have that permission already
 
        obj = self.sa.query(UserRepoGroupToPerm) \
 
        obj = UserRepoGroupToPerm.query() \
 
            .filter(UserRepoGroupToPerm.user == user) \
 
            .filter(UserRepoGroupToPerm.group == repo_group) \
 
            .scalar()
 
        if obj is None:
 
            # create new !
 
            obj = UserRepoGroupToPerm()
 
            self.sa.add(obj)
 
            Session().add(obj)
 
        obj.group = repo_group
 
        obj.user = user
 
        obj.permission = permission
 
@@ -470,12 +469,12 @@ class RepoGroupModel(BaseModel):
 
        repo_group = RepoGroup.guess_instance(repo_group)
 
        user = User.guess_instance(user)
 

	
 
        obj = self.sa.query(UserRepoGroupToPerm) \
 
        obj = UserRepoGroupToPerm.query() \
 
            .filter(UserRepoGroupToPerm.user == user) \
 
            .filter(UserRepoGroupToPerm.group == repo_group) \
 
            .scalar()
 
        if obj is not None:
 
            self.sa.delete(obj)
 
            Session().delete(obj)
 
            log.debug('Revoked perm on %s on %s', repo_group, user)
 

	
 
    def grant_user_group_permission(self, repo_group, group_name, perm):
 
@@ -494,7 +493,7 @@ class RepoGroupModel(BaseModel):
 
        permission = Permission.guess_instance(perm)
 

	
 
        # check if we have that permission already
 
        obj = self.sa.query(UserGroupRepoGroupToPerm) \
 
        obj = UserGroupRepoGroupToPerm.query() \
 
            .filter(UserGroupRepoGroupToPerm.group == repo_group) \
 
            .filter(UserGroupRepoGroupToPerm.users_group == group_name) \
 
            .scalar()
 
@@ -502,7 +501,7 @@ class RepoGroupModel(BaseModel):
 
        if obj is None:
 
            # create new
 
            obj = UserGroupRepoGroupToPerm()
 
            self.sa.add(obj)
 
            Session().add(obj)
 

	
 
        obj.group = repo_group
 
        obj.users_group = group_name
 
@@ -522,10 +521,10 @@ class RepoGroupModel(BaseModel):
 
        repo_group = RepoGroup.guess_instance(repo_group)
 
        group_name = UserGroup.guess_instance(group_name)
 

	
 
        obj = self.sa.query(UserGroupRepoGroupToPerm) \
 
        obj = UserGroupRepoGroupToPerm.query() \
 
            .filter(UserGroupRepoGroupToPerm.group == repo_group) \
 
            .filter(UserGroupRepoGroupToPerm.users_group == group_name) \
 
            .scalar()
 
        if obj is not None:
 
            self.sa.delete(obj)
 
            Session().delete(obj)
 
            log.debug('Revoked perm to %s on %s', repo_group, group_name)
kallithea/model/repo_permission.py
Show inline comments
 
@@ -24,14 +24,13 @@ Original author and date, and relevant c
 
"""
 

	
 
import logging
 
from kallithea.model.base import BaseModel
 
from kallithea.model.db import User, UserRepoToPerm, UserGroupRepoToPerm, \
 
    Permission, Repository
 
    Permission, Repository, Session
 

	
 
log = logging.getLogger(__name__)
 

	
 

	
 
class RepositoryPermissionModel(BaseModel):
 
class RepositoryPermissionModel(object):
 

	
 
    def get_user_permission(self, repository, user):
 
        repository = Repository.guess_instance(repository)
 
@@ -53,12 +52,12 @@ class RepositoryPermissionModel(BaseMode
 
            p.user = user
 
            p.repository = repository
 
            p.permission = permission
 
            self.sa.add(p)
 
            Session().add(p)
 

	
 
    def delete_user_permission(self, repository, user):
 
        current = self.get_user_permission(repository, user)
 
        if current:
 
            self.sa.delete(current)
 
            Session().delete(current)
 

	
 
    def get_users_group_permission(self, repository, users_group):
 
        return UserGroupRepoToPerm.query() \
 
@@ -78,12 +77,12 @@ class RepositoryPermissionModel(BaseMode
 
            p.users_group = users_group
 
            p.repository = repository
 
            p.permission = permission
 
            self.sa.add(p)
 
            Session().add(p)
 

	
 
    def delete_users_group_permission(self, repository, users_group):
 
        current = self.get_users_group_permission(repository, users_group)
 
        if current:
 
            self.sa.delete(current)
 
            Session().delete(current)
 

	
 
    def update_or_delete_user_permission(self, repository, user, permission):
 
        if permission:
kallithea/model/scm.py
Show inline comments
 
@@ -53,8 +53,7 @@ from kallithea.lib.auth import HasRepoPe
 
    HasUserGroupPermissionLevel, HasPermissionAny, HasPermissionAny
 
from kallithea.lib.utils import get_filesystem_repos, make_ui, \
 
    action_logger
 
from kallithea.model.base import BaseModel
 
from kallithea.model.db import Repository, Ui, CacheInvalidation, \
 
from kallithea.model.db import Repository, Session, Ui, CacheInvalidation, \
 
    UserFollowing, UserLog, User, RepoGroup, PullRequest
 
from kallithea.lib.hooks import log_push_action
 
from kallithea.lib.exceptions import NonRelativePathError, IMCCommitError
 
@@ -139,7 +138,7 @@ class UserGroupList(_PermCheckIterator):
 
                    extra_kwargs=extra_kwargs)
 

	
 

	
 
class ScmModel(BaseModel):
 
class ScmModel(object):
 
    """
 
    Generic Scm Model
 
    """
 
@@ -162,7 +161,7 @@ class ScmModel(BaseModel):
 
        Gets the repositories root path from database
 
        """
 

	
 
        q = self.sa.query(Ui).filter(Ui.ui_key == '/').one()
 
        q = Ui.query().filter(Ui.ui_key == '/').one()
 

	
 
        return q.ui_value
 

	
 
@@ -231,13 +230,13 @@ class ScmModel(BaseModel):
 

	
 
    def toggle_following_repo(self, follow_repo_id, user_id):
 

	
 
        f = self.sa.query(UserFollowing) \
 
        f = UserFollowing.query() \
 
            .filter(UserFollowing.follows_repository_id == follow_repo_id) \
 
            .filter(UserFollowing.user_id == user_id).scalar()
 

	
 
        if f is not None:
 
            try:
 
                self.sa.delete(f)
 
                Session().delete(f)
 
                action_logger(UserTemp(user_id),
 
                              'stopped_following_repo',
 
                              RepoTemp(follow_repo_id))
 
@@ -250,7 +249,7 @@ class ScmModel(BaseModel):
 
            f = UserFollowing()
 
            f.user_id = user_id
 
            f.follows_repository_id = follow_repo_id
 
            self.sa.add(f)
 
            Session().add(f)
 

	
 
            action_logger(UserTemp(user_id),
 
                          'started_following_repo',
 
@@ -260,13 +259,13 @@ class ScmModel(BaseModel):
 
            raise
 

	
 
    def toggle_following_user(self, follow_user_id, user_id):
 
        f = self.sa.query(UserFollowing) \
 
        f = UserFollowing.query() \
 
            .filter(UserFollowing.follows_user_id == follow_user_id) \
 
            .filter(UserFollowing.user_id == user_id).scalar()
 

	
 
        if f is not None:
 
            try:
 
                self.sa.delete(f)
 
                Session().delete(f)
 
                return
 
            except Exception:
 
                log.error(traceback.format_exc())
 
@@ -276,16 +275,16 @@ class ScmModel(BaseModel):
 
            f = UserFollowing()
 
            f.user_id = user_id
 
            f.follows_user_id = follow_user_id
 
            self.sa.add(f)
 
            Session().add(f)
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise
 

	
 
    def is_following_repo(self, repo_name, user_id, cache=False):
 
        r = self.sa.query(Repository) \
 
        r = Repository.query() \
 
            .filter(Repository.repo_name == repo_name).scalar()
 

	
 
        f = self.sa.query(UserFollowing) \
 
        f = UserFollowing.query() \
 
            .filter(UserFollowing.follows_repository == r) \
 
            .filter(UserFollowing.user_id == user_id).scalar()
 

	
 
@@ -294,7 +293,7 @@ class ScmModel(BaseModel):
 
    def is_following_user(self, username, user_id, cache=False):
 
        u = User.get_by_username(username)
 

	
 
        f = self.sa.query(UserFollowing) \
 
        f = UserFollowing.query() \
 
            .filter(UserFollowing.follows_user == u) \
 
            .filter(UserFollowing.user_id == user_id).scalar()
 

	
 
@@ -303,17 +302,17 @@ class ScmModel(BaseModel):
 
    def get_followers(self, repo):
 
        repo = Repository.guess_instance(repo)
 

	
 
        return self.sa.query(UserFollowing) \
 
        return UserFollowing.query() \
 
                .filter(UserFollowing.follows_repository == repo).count()
 

	
 
    def get_forks(self, repo):
 
        repo = Repository.guess_instance(repo)
 
        return self.sa.query(Repository) \
 
        return Repository.query() \
 
                .filter(Repository.fork == repo).count()
 

	
 
    def get_pull_requests(self, repo):
 
        repo = Repository.guess_instance(repo)
 
        return self.sa.query(PullRequest) \
 
        return PullRequest.query() \
 
                .filter(PullRequest.other_repo == repo) \
 
                .filter(PullRequest.status != PullRequest.STATUS_CLOSED).count()
 

	
 
@@ -682,7 +681,7 @@ class ScmModel(BaseModel):
 
        return tip
 

	
 
    def get_unread_journal(self):
 
        return self.sa.query(UserLog).count()
 
        return UserLog.query().count()
 

	
 
    def get_repo_landing_revs(self, repo=None):
 
        """
kallithea/model/user.py
Show inline comments
 
@@ -39,7 +39,6 @@ from sqlalchemy.exc import DatabaseError
 

	
 
from kallithea.lib.utils2 import safe_str, generate_api_key, get_current_authuser
 
from kallithea.lib.caching_query import FromCache
 
from kallithea.model.base import BaseModel
 
from kallithea.model.db import Permission, User, UserToPerm, Notification, \
 
    UserEmailMap, UserIpMap
 
from kallithea.lib.exceptions import DefaultUserException, \
 
@@ -50,11 +49,11 @@ from kallithea.model.meta import Session
 
log = logging.getLogger(__name__)
 

	
 

	
 
class UserModel(BaseModel):
 
class UserModel(object):
 
    password_reset_token_lifetime = 86400 # 24 hours
 

	
 
    def get(self, user_id, cache=False):
 
        user = self.sa.query(User)
 
        user = User.query()
 
        if cache:
 
            user = user.options(FromCache("sql_cache_short",
 
                                          "get_user_%s" % user_id))
 
@@ -271,7 +270,7 @@ class UserModel(BaseModel):
 
                _('User "%s" still owns %s user groups and cannot be '
 
                  'removed. Switch owners or remove those user groups: %s')
 
                % (user.username, len(usergroups), ', '.join(usergroups)))
 
        self.sa.delete(user)
 
        Session().delete(user)
 

	
 
        from kallithea.lib.hooks import log_delete_user
 
        log_delete_user(user.get_dict(), cur_user)
 
@@ -443,7 +442,7 @@ class UserModel(BaseModel):
 
        new = UserToPerm()
 
        new.user = user
 
        new.permission = perm
 
        self.sa.add(new)
 
        Session().add(new)
 
        return new
 

	
 
    def revoke_perm(self, user, perm):
 
@@ -476,7 +475,7 @@ class UserModel(BaseModel):
 
        obj = UserEmailMap()
 
        obj.user = user
 
        obj.email = data['email']
 
        self.sa.add(obj)
 
        Session().add(obj)
 
        return obj
 

	
 
    def delete_extra_email(self, user, email_id):
 
@@ -489,7 +488,7 @@ class UserModel(BaseModel):
 
        user = User.guess_instance(user)
 
        obj = UserEmailMap.query().get(email_id)
 
        if obj is not None:
 
            self.sa.delete(obj)
 
            Session().delete(obj)
 

	
 
    def add_extra_ip(self, user, ip):
 
        """
 
@@ -506,7 +505,7 @@ class UserModel(BaseModel):
 
        obj = UserIpMap()
 
        obj.user = user
 
        obj.ip_addr = data['ip']
 
        self.sa.add(obj)
 
        Session().add(obj)
 
        return obj
 

	
 
    def delete_extra_ip(self, user, ip_id):
 
@@ -519,4 +518,4 @@ class UserModel(BaseModel):
 
        user = User.guess_instance(user)
 
        obj = UserIpMap.query().get(ip_id)
 
        if obj:
 
            self.sa.delete(obj)
 
            Session().delete(obj)
kallithea/model/user_group.py
Show inline comments
 
@@ -27,8 +27,7 @@ Original author and date, and relevant c
 
import logging
 
import traceback
 

	
 
from kallithea.model.base import BaseModel
 
from kallithea.model.db import UserGroupMember, UserGroup, \
 
from kallithea.model.db import Session, UserGroupMember, UserGroup, \
 
    UserGroupRepoToPerm, Permission, UserGroupToPerm, User, UserUserGroupToPerm, \
 
    UserGroupUserGroupToPerm
 
from kallithea.lib.exceptions import UserGroupsAssignedException, \
 
@@ -37,7 +36,7 @@ from kallithea.lib.exceptions import Use
 
log = logging.getLogger(__name__)
 

	
 

	
 
class UserGroupModel(BaseModel):
 
class UserGroupModel(object):
 

	
 
    def _create_default_perms(self, user_group):
 
        # create default permission
 
@@ -53,7 +52,7 @@ class UserGroupModel(BaseModel):
 

	
 
        user_group_to_perm.user_group = user_group
 
        user_group_to_perm.user_id = def_user.user_id
 
        self.sa.add(user_group_to_perm)
 
        Session().add(user_group_to_perm)
 
        return user_group_to_perm
 

	
 
    def _update_permissions(self, user_group, perms_new=None,
 
@@ -108,7 +107,7 @@ class UserGroupModel(BaseModel):
 
            new_user_group.users_group_active = active
 
            if group_data:
 
                new_user_group.group_data = group_data
 
            self.sa.add(new_user_group)
 
            Session().add(new_user_group)
 
            self._create_default_perms(new_user_group)
 

	
 
            self.grant_user_permission(user_group=new_user_group,
 
@@ -132,13 +131,13 @@ class UserGroupModel(BaseModel):
 
                        for u_id in set(v):
 
                            member = UserGroupMember(user_group.users_group_id, u_id)
 
                            members_list.append(member)
 
                            self.sa.add(member)
 
                            Session().add(member)
 
                    user_group.members = members_list
 
                setattr(user_group, k, v)
 

	
 
            # Flush to make db assign users_group_member_id to newly
 
            # created UserGroupMembers.
 
            self.sa.flush()
 
            Session().flush()
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise
 
@@ -162,7 +161,7 @@ class UserGroupModel(BaseModel):
 
            if assigned_groups and not force:
 
                raise UserGroupsAssignedException(
 
                    'User Group assigned to %s' % ", ".join(assigned_groups))
 
            self.sa.delete(user_group)
 
            Session().delete(user_group)
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise
 
@@ -185,7 +184,7 @@ class UserGroupModel(BaseModel):
 
            user_group.members.append(user_group_member)
 
            user.group_member.append(user_group_member)
 

	
 
            self.sa.add(user_group_member)
 
            Session().add(user_group_member)
 
            return user_group_member
 
        except Exception:
 
            log.error(traceback.format_exc())
 
@@ -204,7 +203,7 @@ class UserGroupModel(BaseModel):
 

	
 
        if user_group_member:
 
            try:
 
                self.sa.delete(user_group_member)
 
                Session().delete(user_group_member)
 
                return True
 
            except Exception:
 
                log.error(traceback.format_exc())
 
@@ -236,7 +235,7 @@ class UserGroupModel(BaseModel):
 
        new = UserGroupToPerm()
 
        new.users_group = user_group
 
        new.permission = perm
 
        self.sa.add(new)
 
        Session().add(new)
 
        return new
 

	
 
    def revoke_perm(self, user_group, perm):
 
@@ -247,7 +246,7 @@ class UserGroupModel(BaseModel):
 
            .filter(UserGroupToPerm.users_group == user_group) \
 
            .filter(UserGroupToPerm.permission == perm).scalar()
 
        if obj is not None:
 
            self.sa.delete(obj)
 
            Session().delete(obj)
 

	
 
    def grant_user_permission(self, user_group, user, perm):
 
        """
 
@@ -265,14 +264,14 @@ class UserGroupModel(BaseModel):
 
        permission = Permission.guess_instance(perm)
 

	
 
        # check if we have that permission already
 
        obj = self.sa.query(UserUserGroupToPerm) \
 
        obj = UserUserGroupToPerm.query() \
 
            .filter(UserUserGroupToPerm.user == user) \
 
            .filter(UserUserGroupToPerm.user_group == user_group) \
 
            .scalar()
 
        if obj is None:
 
            # create new !
 
            obj = UserUserGroupToPerm()
 
            self.sa.add(obj)
 
            Session().add(obj)
 
        obj.user_group = user_group
 
        obj.user = user
 
        obj.permission = permission
 
@@ -291,12 +290,12 @@ class UserGroupModel(BaseModel):
 
        user_group = UserGroup.guess_instance(user_group)
 
        user = User.guess_instance(user)
 

	
 
        obj = self.sa.query(UserUserGroupToPerm) \
 
        obj = UserUserGroupToPerm.query() \
 
            .filter(UserUserGroupToPerm.user == user) \
 
            .filter(UserUserGroupToPerm.user_group == user_group) \
 
            .scalar()
 
        if obj is not None:
 
            self.sa.delete(obj)
 
            Session().delete(obj)
 
            log.debug('Revoked perm on %s on %s', user_group, user)
 

	
 
    def grant_user_group_permission(self, target_user_group, user_group, perm):
 
@@ -316,14 +315,14 @@ class UserGroupModel(BaseModel):
 
                                           'assigned to itself' % target_user_group)
 

	
 
        # check if we have that permission already
 
        obj = self.sa.query(UserGroupUserGroupToPerm) \
 
        obj = UserGroupUserGroupToPerm.query() \
 
            .filter(UserGroupUserGroupToPerm.target_user_group == target_user_group) \
 
            .filter(UserGroupUserGroupToPerm.user_group == user_group) \
 
            .scalar()
 
        if obj is None:
 
            # create new !
 
            obj = UserGroupUserGroupToPerm()
 
            self.sa.add(obj)
 
            Session().add(obj)
 
        obj.user_group = user_group
 
        obj.target_user_group = target_user_group
 
        obj.permission = permission
 
@@ -340,12 +339,12 @@ class UserGroupModel(BaseModel):
 
        target_user_group = UserGroup.guess_instance(target_user_group)
 
        user_group = UserGroup.guess_instance(user_group)
 

	
 
        obj = self.sa.query(UserGroupUserGroupToPerm) \
 
        obj = UserGroupUserGroupToPerm.query() \
 
            .filter(UserGroupUserGroupToPerm.target_user_group == target_user_group) \
 
            .filter(UserGroupUserGroupToPerm.user_group == user_group) \
 
            .scalar()
 
        if obj is not None:
 
            self.sa.delete(obj)
 
            Session().delete(obj)
 
            log.debug('Revoked perm on %s on %s', target_user_group, user_group)
 

	
 
    def enforce_groups(self, user, groups, extern_type=None):
kallithea/tests/scripts/manual_test_concurrency.py
Show inline comments
 
@@ -135,7 +135,7 @@ def create_test_repo(force=True):
 
                     'repo_type': 'hg',
 
                     'private':False,
 
                     'clone_uri': '' }
 
        rm = RepoModel(sa)
 
        rm = RepoModel()
 
        rm.base_path = '/home/hg'
 
        rm.create(form_data, user)
 

	
0 comments (0 inline, 0 general)