comparison rhodecode/model/repo.py @ 1594:9dae92a65e40 beta

fixes #288 - added group management into non admin repo settings form - fixes also issues with groups after API codes merge - all tests passes ok.
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 24 Oct 2011 22:40:43 +0200
parents 6f468ba37650
children 2c0d35e336b5 95c3e33ef32e
comparison
equal deleted inserted replaced
1593:92a4f7c496a5 1594:9dae92a65e40
92 (gr.users_group_id, gr.users_group_name, 92 (gr.users_group_id, gr.users_group_name,
93 len(gr.members)) 93 len(gr.members))
94 for gr in users_groups]) 94 for gr in users_groups])
95 return users_groups_array 95 return users_groups_array
96 96
97 def _get_defaults(self, repo_name):
98 """
99 Get's information about repository, and returns a dict for
100 usage in forms
101
102 :param repo_name:
103 """
104
105 repo_info = Repository.get_by_repo_name(repo_name)
106
107 if repo_info is None:
108 return None
109
110 defaults = repo_info.get_dict()
111 group, repo_name = repo_info.groups_and_repo
112 defaults['repo_name'] = repo_name
113 defaults['repo_group'] = getattr(group[-1] if group else None,
114 'group_id', None)
115
116 # fill owner
117 if repo_info.user:
118 defaults.update({'user': repo_info.user.username})
119 else:
120 replacement_user = User.query().filter(User.admin ==
121 True).first().username
122 defaults.update({'user': replacement_user})
123
124 # fill repository users
125 for p in repo_info.repo_to_perm:
126 defaults.update({'u_perm_%s' % p.user.username:
127 p.permission.permission_name})
128
129 # fill repository groups
130 for p in repo_info.users_group_to_perm:
131 defaults.update({'g_perm_%s' % p.users_group.users_group_name:
132 p.permission.permission_name})
133
134 return defaults
135
136
97 def update(self, repo_name, form_data): 137 def update(self, repo_name, form_data):
98 try: 138 try:
99 cur_repo = self.get_by_repo_name(repo_name, cache=False) 139 cur_repo = self.get_by_repo_name(repo_name, cache=False)
100 140
101 # update permissions 141 # update permissions
149 if k == 'user': 189 if k == 'user':
150 cur_repo.user = User.get_by_username(v) 190 cur_repo.user = User.get_by_username(v)
151 elif k == 'repo_name': 191 elif k == 'repo_name':
152 pass 192 pass
153 elif k == 'repo_group': 193 elif k == 'repo_group':
154 cur_repo.group_id = v 194 cur_repo.group = Group.get(v)
155 195
156 else: 196 else:
157 setattr(cur_repo, k, v) 197 setattr(cur_repo, k, v)
158 198
159 new_name = cur_repo.get_new_name(form_data['repo_name']) 199 new_name = cur_repo.get_new_name(form_data['repo_name'])
303 :param repo_name: 343 :param repo_name:
304 :param alias: 344 :param alias:
305 :param parent_id: 345 :param parent_id:
306 :param clone_uri: 346 :param clone_uri:
307 """ 347 """
308 from rhodecode.lib.utils import is_valid_repo,is_valid_repos_group 348 from rhodecode.lib.utils import is_valid_repo, is_valid_repos_group
309 349
310 if new_parent_id: 350 if new_parent_id:
311 paths = Group.get(new_parent_id).full_path.split(Group.url_sep()) 351 paths = Group.get(new_parent_id).full_path.split(Group.url_sep())
312 new_parent_path = os.sep.join(paths) 352 new_parent_path = os.sep.join(paths)
313 else: 353 else:
314 new_parent_path = '' 354 new_parent_path = ''
315 355
316 repo_path = os.path.join(*map(lambda x:safe_str(x), 356 repo_path = os.path.join(*map(lambda x:safe_str(x),
317 [self.repos_path, new_parent_path, repo_name])) 357 [self.repos_path, new_parent_path, repo_name]))
318 358
319 359
320 # check if this path is not a repository 360 # check if this path is not a repository
321 if is_valid_repo(repo_path, self.repos_path): 361 if is_valid_repo(repo_path, self.repos_path):
322 raise Exception('This path %s is a valid repository' % repo_path) 362 raise Exception('This path %s is a valid repository' % repo_path)
323 363
324 # check if this path is a group 364 # check if this path is a group
325 if is_valid_repos_group(repo_path, self.repos_path): 365 if is_valid_repos_group(repo_path, self.repos_path):
326 raise Exception('This path %s is a valid group' % repo_path) 366 raise Exception('This path %s is a valid group' % repo_path)
327 367
328 log.info('creating repo %s in %s @ %s', repo_name, repo_path, 368 log.info('creating repo %s in %s @ %s', repo_name, repo_path,
329 clone_uri) 369 clone_uri)
330 backend = get_backend(alias) 370 backend = get_backend(alias)
331 371
332 backend(repo_path, create=True, src_url=clone_uri) 372 backend(repo_path, create=True, src_url=clone_uri)
366 #disable repo 406 #disable repo
367 shutil.move(rm_path, os.path.join(self.repos_path, 'rm__%s__%s' \ 407 shutil.move(rm_path, os.path.join(self.repos_path, 'rm__%s__%s' \
368 % (datetime.today()\ 408 % (datetime.today()\
369 .strftime('%Y%m%d_%H%M%S_%f'), 409 .strftime('%Y%m%d_%H%M%S_%f'),
370 repo.repo_name))) 410 repo.repo_name)))
411