comparison rhodecode/model/db.py @ 1982:87f0800abc7b beta

#227 Initial version of repository groups permissions system - implemented none/read/write/admin permissions for groups - wrote more tests for permissions, and new permissions groups - a lot of code garden, splitted logic into proper models - permissions on groups doesn't propagate yet to repositories - deprecated some methods on api for managing permissions on repositories for users, and users groups
author Marcin Kuzminski <marcin@python-works.com>
date Sat, 28 Jan 2012 01:06:29 +0200
parents a76e9bacbedc
children 5eae67552695
comparison
equal deleted inserted replaced
1981:518f87919375 1982:87f0800abc7b
714 714
715 group_id = Column("group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 715 group_id = Column("group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
716 group_name = Column("group_name", String(length=255, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None) 716 group_name = Column("group_name", String(length=255, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None)
717 group_parent_id = Column("group_parent_id", Integer(), ForeignKey('groups.group_id'), nullable=True, unique=None, default=None) 717 group_parent_id = Column("group_parent_id", Integer(), ForeignKey('groups.group_id'), nullable=True, unique=None, default=None)
718 group_description = Column("group_description", String(length=10000, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) 718 group_description = Column("group_description", String(length=10000, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
719
720 repo_group_to_perm = relationship('UserRepoGroupToPerm', cascade='all', order_by='UserRepoGroupToPerm.group_to_perm_id')
721 users_group_to_perm = relationship('UsersGroupRepoGroupToPerm', cascade='all')
719 722
720 parent_group = relationship('RepoGroup', remote_side=group_id) 723 parent_group = relationship('RepoGroup', remote_side=group_id)
721 724
722 def __init__(self, group_name='', parent_group=None): 725 def __init__(self, group_name='', parent_group=None):
723 self.group_name = group_name 726 self.group_name = group_name
831 permission_id = Column("permission_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) 834 permission_id = Column("permission_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
832 permission_name = Column("permission_name", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) 835 permission_name = Column("permission_name", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
833 permission_longname = Column("permission_longname", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) 836 permission_longname = Column("permission_longname", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
834 837
835 def __repr__(self): 838 def __repr__(self):
836 return "<%s('%s:%s')>" % (self.__class__.__name__, 839 return "<%s('%s:%s')>" % (
837 self.permission_id, self.permission_name) 840 self.__class__.__name__, self.permission_id, self.permission_name
841 )
838 842
839 @classmethod 843 @classmethod
840 def get_by_key(cls, key): 844 def get_by_key(cls, key):
841 return cls.query().filter(cls.permission_name == key).scalar() 845 return cls.query().filter(cls.permission_name == key).scalar()
842 846
843 @classmethod 847 @classmethod
844 def get_default_perms(cls, default_user_id): 848 def get_default_perms(cls, default_user_id):
845 q = Session.query(UserRepoToPerm, Repository, cls)\ 849 q = Session.query(UserRepoToPerm, Repository, cls)\
846 .join((Repository, UserRepoToPerm.repository_id == Repository.repo_id))\ 850 .join((Repository, UserRepoToPerm.repository_id == Repository.repo_id))\
847 .join((cls, UserRepoToPerm.permission_id == cls.permission_id))\ 851 .join((cls, UserRepoToPerm.permission_id == cls.permission_id))\
848 .filter(UserRepoToPerm.user_id == default_user_id) 852 .filter(UserRepoToPerm.user_id == default_user_id)
853
854 return q.all()
855
856 @classmethod
857 def get_default_group_perms(cls, default_user_id):
858 q = Session.query(UserRepoGroupToPerm, RepoGroup, cls)\
859 .join((RepoGroup, UserRepoGroupToPerm.group_id == RepoGroup.group_id))\
860 .join((cls, UserRepoGroupToPerm.permission_id == cls.permission_id))\
861 .filter(UserRepoGroupToPerm.user_id == default_user_id)
849 862
850 return q.all() 863 return q.all()
851 864
852 865
853 class UserRepoToPerm(Base, BaseModel): 866 class UserRepoToPerm(Base, BaseModel):