Mercurial > kallithea
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): |