Mercurial > kallithea
diff rhodecode/model/db.py @ 1266:a1bcfe58a1ab beta
Fixed #161 form saves the create repository permission.
routing update for users to support second form posting.
models updates
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Mon, 18 Apr 2011 20:18:12 +0200 |
parents | a671db5bdd58 |
children | aa7e45ad0cea |
line wrap: on
line diff
--- a/rhodecode/model/db.py Sun Apr 17 16:26:40 2011 +0200 +++ b/rhodecode/model/db.py Mon Apr 18 20:18:12 2011 +0200 @@ -33,7 +33,9 @@ from sqlalchemy.orm import relationship, backref from sqlalchemy.orm.interfaces import MapperExtension +from rhodecode.lib import str2bool from rhodecode.model.meta import Base, Session +from rhodecode.model.caching_query import FromCache log = logging.getLogger(__name__) @@ -61,6 +63,35 @@ return "<%s('%s:%s')>" % (self.__class__.__name__, self.app_settings_name, self.app_settings_value) + + @classmethod + def get_app_settings(cls, cache=False): + + ret = Session.query(cls) + + if cache: + ret = ret.options(FromCache("sql_cache_short", "get_hg_settings")) + + if not ret: + raise Exception('Could not get application settings !') + settings = {} + for each in ret: + settings['rhodecode_' + each.app_settings_name] = \ + each.app_settings_value + + return settings + + @classmethod + def get_ldap_settings(cls, cache=False): + ret = Session.query(cls)\ + .filter(cls.app_settings_name.startswith('ldap_'))\ + .all() + fd = {} + for row in ret: + fd.update({row.app_settings_name:str2bool(row.app_settings_value)}) + return fd + + class RhodeCodeUi(Base): __tablename__ = 'rhodecode_ui' __table_args__ = {'useexisting':True} @@ -285,6 +316,10 @@ return "<%s('%s:%s')>" % (self.__class__.__name__, self.permission_id, self.permission_name) + @classmethod + def get_by_key(cls, key): + return Session.query(cls).filter(cls.permission_name == key).scalar() + class RepoToPerm(Base): __tablename__ = 'repo_to_perm' __table_args__ = (UniqueConstraint('user_id', 'repository_id'), {'useexisting':True}) @@ -307,6 +342,40 @@ user = relationship('User') permission = relationship('Permission') + @classmethod + def has_perm(cls, user_id, perm): + if not isinstance(perm, Permission): + raise Exception('perm needs to be an instance of Permission class') + + return Session.query(cls).filter(cls.user_id == user_id)\ + .filter(cls.permission == perm).scalar() is not None + + @classmethod + def grant_perm(cls, user_id, perm): + if not isinstance(perm, Permission): + raise Exception('perm needs to be an instance of Permission class') + + new = cls() + new.user_id = user_id + new.permission = perm + try: + Session.add(new) + Session.commit() + except: + Session.rollback() + + + @classmethod + def revoke_perm(cls, user_id, perm): + if not isinstance(perm, Permission): + raise Exception('perm needs to be an instance of Permission class') + + try: + Session.query(cls).filter(cls.user_id == user_id)\ + .filter(cls.permission == perm).delete() + Session.commit() + except: + Session.rollback() class UsersGroupToPerm(Base): __tablename__ = 'users_group_to_perm'