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