##// END OF EJS Templates
#56 added assignments of users groups into repository
marcink -
r1014:6fdc3ff6 beta
parent child Browse files
Show More
@@ -264,15 +264,18 b' class UserToPerm(Base, BaseModel):'
264 user = relationship('User')
264 user = relationship('User')
265 permission = relationship('Permission')
265 permission = relationship('Permission')
266
266
267
267 class UsersGroupToPerm(Base, BaseModel):
268 class UsersGroupToPerm(Base, BaseModel):
268 __tablename__ = 'users_group_to_perm'
269 __tablename__ = 'users_group_to_perm'
269 __table_args__ = (UniqueConstraint('users_group_id', 'permission_id'), {'useexisting':True})
270 __table_args__ = (UniqueConstraint('users_group_id', 'permission_id'), {'useexisting':True})
270 users_group_to_perm_id = Column("users_group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
271 users_group_to_perm_id = Column("users_group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
271 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None)
272 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None)
272 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
273 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
274 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=False, unique=None, default=None)
273
275
274 users_group = relationship('UsersGroup')
276 users_group = relationship('UsersGroup')
275 permission = relationship('Permission')
277 permission = relationship('Permission')
278 repository = relationship('Repository')
276
279
277 class GroupToPerm(Base, BaseModel):
280 class GroupToPerm(Base, BaseModel):
278 __tablename__ = 'group_to_perm'
281 __tablename__ = 'group_to_perm'
@@ -254,7 +254,7 b' class ValidPerms(formencode.validators.F'
254 new_type = value.get('perm_new_member_type')
254 new_type = value.get('perm_new_member_type')
255
255
256 if new_member and new_perm:
256 if new_member and new_perm:
257 if (new_member, new_perm) not in perms_new:
257 if (new_member, new_perm, new_type) not in perms_new:
258 perms_new.append((new_member, new_perm, new_type))
258 perms_new.append((new_member, new_perm, new_type))
259 else:
259 else:
260 usr = k[5:]
260 usr = k[5:]
@@ -266,6 +266,8 b' class ValidPerms(formencode.validators.F'
266 perms_update.append((usr, v, t))
266 perms_update.append((usr, v, t))
267 value['perms_updates'] = perms_update
267 value['perms_updates'] = perms_update
268 value['perms_new'] = perms_new
268 value['perms_new'] = perms_new
269
270 #update permissions
269 sa = meta.Session
271 sa = meta.Session
270 for k, v, t in perms_new:
272 for k, v, t in perms_new:
271 try:
273 try:
@@ -458,6 +460,7 b' def RepoForm(edit=False, old_data={}, su'
458 enable_downloads = StringBoolean(if_missing=False)
460 enable_downloads = StringBoolean(if_missing=False)
459 repo_type = OneOf(supported_backends)
461 repo_type = OneOf(supported_backends)
460 if edit:
462 if edit:
463 #this is repo owner
461 user = All(Int(not_empty=True), ValidRepoUser)
464 user = All(Int(not_empty=True), ValidRepoUser)
462
465
463 chained_validators = [ValidPerms]
466 chained_validators = [ValidPerms]
@@ -33,8 +33,9 b' from datetime import datetime'
33 from rhodecode.model import BaseModel
33 from rhodecode.model import BaseModel
34 from rhodecode.model.caching_query import FromCache
34 from rhodecode.model.caching_query import FromCache
35 from rhodecode.model.db import Repository, RepoToPerm, User, Permission, \
35 from rhodecode.model.db import Repository, RepoToPerm, User, Permission, \
36 Statistics, UsersGroup
36 Statistics, UsersGroup, UsersGroupToPerm
37 from rhodecode.model.user import UserModel
37 from rhodecode.model.user import UserModel
38 from rhodecode.model.users_group import UsersGroupMember, UsersGroupModel
38
39
39 from vcs.backends import get_backend
40 from vcs.backends import get_backend
40
41
@@ -105,29 +106,51 b' class RepoModel(BaseModel):'
105 try:
106 try:
106 cur_repo = self.get_by_repo_name(repo_name, cache=False)
107 cur_repo = self.get_by_repo_name(repo_name, cache=False)
107 user_model = UserModel(self.sa)
108 user_model = UserModel(self.sa)
109 users_group_model = UsersGroupModel(self.sa)
108
110
109 #update permissions
111 #update permissions
110 for username, perm, member_type in form_data['perms_updates']:
112 for member, perm, member_type in form_data['perms_updates']:
111 r2p = self.sa.query(RepoToPerm)\
113 if member_type == 'user':
112 .filter(RepoToPerm.user == user_model.get_by_username(username))\
114 r2p = self.sa.query(RepoToPerm)\
113 .filter(RepoToPerm.repository == cur_repo)\
115 .filter(RepoToPerm.user == user_model.get_by_username(member))\
114 .one()
116 .filter(RepoToPerm.repository == cur_repo)\
117 .one()
115
118
116 r2p.permission = self.sa.query(Permission)\
119 r2p.permission = self.sa.query(Permission)\
117 .filter(Permission.permission_name == perm)\
120 .filter(Permission.permission_name == perm)\
118 .scalar()
121 .scalar()
119 self.sa.add(r2p)
122 self.sa.add(r2p)
123 else:
124 g2p = self.sa.query(UsersGroupToPerm)\
125 .filter(UsersGroupToPerm.users_group == users_group_model.get_by_groupname(member))\
126 .filter(UsersGroupToPerm.repository == cur_repo)\
127 .one()
128
129 g2p.permission = self.sa.query(Permission)\
130 .filter(Permission.permission_name == perm)\
131 .scalar()
132 self.sa.add(g2p)
120
133
121 #set new permissions
134 #set new permissions
122 for username, perm, member_type in form_data['perms_new']:
135 for member, perm, member_type in form_data['perms_new']:
123 r2p = RepoToPerm()
136 if member_type == 'user':
124 r2p.repository = cur_repo
137 r2p = RepoToPerm()
125 r2p.user = user_model.get_by_username(username, cache=False)
138 r2p.repository = cur_repo
139 r2p.user = user_model.get_by_username(member)
126
140
127 r2p.permission = self.sa.query(Permission)\
141 r2p.permission = self.sa.query(Permission)\
128 .filter(Permission.permission_name == perm)\
142 .filter(Permission.permission_name == perm)\
129 .scalar()
143 .scalar()
130 self.sa.add(r2p)
144 self.sa.add(r2p)
145 else:
146 g2p = UsersGroupToPerm()
147 g2p.repository = cur_repo
148 g2p.users_group = users_group_model.get_by_groupname(member)
149
150 g2p.permission = self.sa.query(Permission)\
151 .filter(Permission.permission_name == perm)\
152 .scalar()
153 self.sa.add(g2p)
131
154
132 #update current repo
155 #update current repo
133 for k, v in form_data.items():
156 for k, v in form_data.items():
General Comments 0
You need to be logged in to leave comments. Login now