Mercurial > kallithea
comparison rhodecode/controllers/forks.py @ 2776:63e58ef80ef1
Merge beta branch into stable
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sun, 02 Sep 2012 21:19:54 +0200 |
parents | d2d35cf2b351 |
children | faffec4abbda |
comparison
equal
deleted
inserted
replaced
2301:9d097c2592d3 | 2776:63e58ef80ef1 |
---|---|
33 | 33 |
34 import rhodecode.lib.helpers as h | 34 import rhodecode.lib.helpers as h |
35 | 35 |
36 from rhodecode.lib.helpers import Page | 36 from rhodecode.lib.helpers import Page |
37 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator, \ | 37 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator, \ |
38 NotAnonymous, HasRepoPermissionAny | 38 NotAnonymous, HasRepoPermissionAny, HasPermissionAllDecorator,\ |
39 HasPermissionAnyDecorator | |
39 from rhodecode.lib.base import BaseRepoController, render | 40 from rhodecode.lib.base import BaseRepoController, render |
40 from rhodecode.model.db import Repository, RepoGroup, UserFollowing, User | 41 from rhodecode.model.db import Repository, RepoGroup, UserFollowing, User |
41 from rhodecode.model.repo import RepoModel | 42 from rhodecode.model.repo import RepoModel |
42 from rhodecode.model.forms import RepoForkForm | 43 from rhodecode.model.forms import RepoForkForm |
44 from rhodecode.model.scm import ScmModel | |
43 | 45 |
44 log = logging.getLogger(__name__) | 46 log = logging.getLogger(__name__) |
45 | 47 |
46 | 48 |
47 class ForksController(BaseRepoController): | 49 class ForksController(BaseRepoController): |
51 super(ForksController, self).__before__() | 53 super(ForksController, self).__before__() |
52 | 54 |
53 def __load_defaults(self): | 55 def __load_defaults(self): |
54 c.repo_groups = RepoGroup.groups_choices() | 56 c.repo_groups = RepoGroup.groups_choices() |
55 c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups) | 57 c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups) |
58 choices, c.landing_revs = ScmModel().get_repo_landing_revs() | |
59 c.landing_revs_choices = choices | |
56 | 60 |
57 def __load_data(self, repo_name=None): | 61 def __load_data(self, repo_name=None): |
58 """ | 62 """ |
59 Load defaults settings for edit, and update | 63 Load defaults settings for edit, and update |
60 | 64 |
118 return c.forks_data | 122 return c.forks_data |
119 | 123 |
120 return render('/forks/forks.html') | 124 return render('/forks/forks.html') |
121 | 125 |
122 @NotAnonymous() | 126 @NotAnonymous() |
127 @HasPermissionAnyDecorator('hg.admin', 'hg.fork.repository') | |
123 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', | 128 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
124 'repository.admin') | 129 'repository.admin') |
125 def fork(self, repo_name): | 130 def fork(self, repo_name): |
126 c.repo_info = Repository.get_by_repo_name(repo_name) | 131 c.repo_info = Repository.get_by_repo_name(repo_name) |
127 if not c.repo_info: | 132 if not c.repo_info: |
140 defaults=defaults, | 145 defaults=defaults, |
141 encoding="UTF-8", | 146 encoding="UTF-8", |
142 force_defaults=False | 147 force_defaults=False |
143 ) | 148 ) |
144 | 149 |
145 | |
146 @NotAnonymous() | 150 @NotAnonymous() |
151 @HasPermissionAnyDecorator('hg.admin', 'hg.fork.repository') | |
147 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', | 152 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
148 'repository.admin') | 153 'repository.admin') |
149 def fork_create(self, repo_name): | 154 def fork_create(self, repo_name): |
150 self.__load_defaults() | 155 self.__load_defaults() |
151 c.repo_info = Repository.get_by_repo_name(repo_name) | 156 c.repo_info = Repository.get_by_repo_name(repo_name) |
152 _form = RepoForkForm(old_data={'repo_type': c.repo_info.repo_type}, | 157 _form = RepoForkForm(old_data={'repo_type': c.repo_info.repo_type}, |
153 repo_groups=c.repo_groups_choices,)() | 158 repo_groups=c.repo_groups_choices, |
159 landing_revs=c.landing_revs_choices)() | |
154 form_result = {} | 160 form_result = {} |
155 try: | 161 try: |
156 form_result = _form.to_python(dict(request.POST)) | 162 form_result = _form.to_python(dict(request.POST)) |
157 # add org_path of repo so we can do a clone from it later | |
158 form_result['org_path'] = c.repo_info.repo_name | |
159 | 163 |
160 # create fork is done sometimes async on celery, db transaction | 164 # create fork is done sometimes async on celery, db transaction |
161 # management is handled there. | 165 # management is handled there. |
162 RepoModel().create_fork(form_result, self.rhodecode_user) | 166 RepoModel().create_fork(form_result, self.rhodecode_user.user_id) |
163 h.flash(_('forked %s repository as %s') \ | 167 h.flash(_('forked %s repository as %s') \ |
164 % (repo_name, form_result['repo_name']), | 168 % (repo_name, form_result['repo_name']), |
165 category='success') | 169 category='success') |
166 except formencode.Invalid, errors: | 170 except formencode.Invalid, errors: |
167 c.new_repo = errors.value['repo_name'] | 171 c.new_repo = errors.value['repo_name'] |