Show More
@@ -116,19 +116,21 b' def make_map(config):' | |||||
116 |
|
116 | |||
117 | #settings actions |
|
117 | #settings actions | |
118 | m.connect('repo_stats', "/repos_stats/{repo_name:.*}", |
|
118 | m.connect('repo_stats', "/repos_stats/{repo_name:.*}", | |
119 | action="repo_stats", conditions=dict(method=["DELETE"], |
|
119 | action="repo_stats", conditions=dict(method=["DELETE"], | |
120 |
|
|
120 | function=check_repo)) | |
121 | m.connect('repo_cache', "/repos_cache/{repo_name:.*}", |
|
121 | m.connect('repo_cache', "/repos_cache/{repo_name:.*}", | |
122 | action="repo_cache", conditions=dict(method=["DELETE"], |
|
122 | action="repo_cache", conditions=dict(method=["DELETE"], | |
|
123 | function=check_repo)) | |||
|
124 | m.connect('repo_public_journal',"/repos_public_journal/{repo_name:.*}", | |||
|
125 | action="repo_public_journal", conditions=dict(method=["PUT"], | |||
123 | function=check_repo)) |
|
126 | function=check_repo)) | |
124 | m.connect('repo_public_journal', |
|
|||
125 | "/repos_public_journal/{repo_name:.*}", |
|
|||
126 | action="repo_public_journal", conditions=dict(method=["PUT"], |
|
|||
127 | function=check_repo)) |
|
|||
128 | m.connect('repo_pull', "/repo_pull/{repo_name:.*}", |
|
127 | m.connect('repo_pull', "/repo_pull/{repo_name:.*}", | |
129 | action="repo_pull", conditions=dict(method=["PUT"], |
|
128 | action="repo_pull", conditions=dict(method=["PUT"], | |
130 |
|
|
129 | function=check_repo)) | |
131 |
|
130 | m.connect('repo_as_fork', "/repo_as_fork/{repo_name:.*}", | ||
|
131 | action="repo_as_fork", conditions=dict(method=["PUT"], | |||
|
132 | function=check_repo)) | |||
|
133 | ||||
132 | with rmap.submapper(path_prefix=ADMIN_PREFIX, |
|
134 | with rmap.submapper(path_prefix=ADMIN_PREFIX, | |
133 | controller='admin/repos_groups') as m: |
|
135 | controller='admin/repos_groups') as m: | |
134 | m.connect("repos_groups", "/repos_groups", |
|
136 | m.connect("repos_groups", "/repos_groups", |
@@ -111,6 +111,10 b' class ReposController(BaseController):' | |||||
111 | c.repo_last_rev) * 100) |
|
111 | c.repo_last_rev) * 100) | |
112 |
|
112 | |||
113 | defaults = RepoModel()._get_defaults(repo_name) |
|
113 | defaults = RepoModel()._get_defaults(repo_name) | |
|
114 | ||||
|
115 | c.repos_list = [('', _('--REMOVE FORK--'))] | |||
|
116 | c.repos_list += [(x.repo_id, x.repo_name) for x in | |||
|
117 | Repository.query().order_by(Repository.repo_name).all()] | |||
114 | return defaults |
|
118 | return defaults | |
115 |
|
119 | |||
116 | @HasPermissionAllDecorator('hg.admin') |
|
120 | @HasPermissionAllDecorator('hg.admin') | |
@@ -380,6 +384,28 b' class ReposController(BaseController):' | |||||
380 | return redirect(url('edit_repo', repo_name=repo_name)) |
|
384 | return redirect(url('edit_repo', repo_name=repo_name)) | |
381 |
|
385 | |||
382 | @HasPermissionAllDecorator('hg.admin') |
|
386 | @HasPermissionAllDecorator('hg.admin') | |
|
387 | def repo_as_fork(self, repo_name): | |||
|
388 | """ | |||
|
389 | Mark given repository as a fork of another | |||
|
390 | ||||
|
391 | :param repo_name: | |||
|
392 | """ | |||
|
393 | try: | |||
|
394 | fork_id = request.POST.get('id_fork_of') | |||
|
395 | repo = ScmModel().mark_as_fork(repo_name, fork_id, | |||
|
396 | self.rhodecode_user.username) | |||
|
397 | fork = repo.fork.repo_name if repo.fork else _('Nothing') | |||
|
398 | Session.commit() | |||
|
399 | h.flash(_('Marked repo %s as fork of %s' % (repo_name,fork)), | |||
|
400 | category='success') | |||
|
401 | except Exception, e: | |||
|
402 | raise | |||
|
403 | h.flash(_('An error occurred during this operation'), | |||
|
404 | category='error') | |||
|
405 | ||||
|
406 | return redirect(url('edit_repo', repo_name=repo_name)) | |||
|
407 | ||||
|
408 | @HasPermissionAllDecorator('hg.admin') | |||
383 | def show(self, repo_name, format='html'): |
|
409 | def show(self, repo_name, format='html'): | |
384 | """GET /repos/repo_name: Show a specific item""" |
|
410 | """GET /repos/repo_name: Show a specific item""" | |
385 | # url('repo', repo_name=ID) |
|
411 | # url('repo', repo_name=ID) |
@@ -89,5 +89,4 b' class BaseModel(object):' | |||||
89 | else: |
|
89 | else: | |
90 | if instance: |
|
90 | if instance: | |
91 | raise Exception('given object must be int or Instance' |
|
91 | raise Exception('given object must be int or Instance' | |
92 | ' of %s got %s' % (type(cls), |
|
92 | ' of %s got %s' % (type(cls), type(instance))) | |
93 | type(instance))) |
|
@@ -117,6 +117,18 b' class ScmModel(BaseModel):' | |||||
117 | Generic Scm Model |
|
117 | Generic Scm Model | |
118 | """ |
|
118 | """ | |
119 |
|
119 | |||
|
120 | def __get_repo(self, instance): | |||
|
121 | cls = Repository | |||
|
122 | if isinstance(instance, cls): | |||
|
123 | return instance | |||
|
124 | elif isinstance(instance, int) or str(instance).isdigit(): | |||
|
125 | return cls.get(instance) | |||
|
126 | elif isinstance(instance, basestring): | |||
|
127 | return cls.get_by_repo_name(instance) | |||
|
128 | elif instance: | |||
|
129 | raise Exception('given object must be int, basestr or Instance' | |||
|
130 | ' of %s got %s' % (type(cls), type(instance))) | |||
|
131 | ||||
120 | @LazyProperty |
|
132 | @LazyProperty | |
121 | def repos_path(self): |
|
133 | def repos_path(self): | |
122 | """ |
|
134 | """ | |
@@ -279,6 +291,13 b' class ScmModel(BaseModel):' | |||||
279 | return self.sa.query(Repository)\ |
|
291 | return self.sa.query(Repository)\ | |
280 | .filter(Repository.fork_id == repo_id).count() |
|
292 | .filter(Repository.fork_id == repo_id).count() | |
281 |
|
293 | |||
|
294 | def mark_as_fork(self, repo, fork, user): | |||
|
295 | repo = self.__get_repo(repo) | |||
|
296 | fork = self.__get_repo(fork) | |||
|
297 | repo.fork = fork | |||
|
298 | self.sa.add(repo) | |||
|
299 | return repo | |||
|
300 | ||||
282 | def pull_changes(self, repo_name, username): |
|
301 | def pull_changes(self, repo_name, username): | |
283 | dbrepo = Repository.get_by_repo_name(repo_name) |
|
302 | dbrepo = Repository.get_by_repo_name(repo_name) | |
284 | clone_uri = dbrepo.clone_uri |
|
303 | clone_uri = dbrepo.clone_uri |
@@ -131,14 +131,13 b'' | |||||
131 | ${h.form(url('repo_stats', repo_name=c.repo_info.repo_name),method='delete')} |
|
131 | ${h.form(url('repo_stats', repo_name=c.repo_info.repo_name),method='delete')} | |
132 | <div class="form"> |
|
132 | <div class="form"> | |
133 | <div class="fields"> |
|
133 | <div class="fields"> | |
134 |
${h.submit('reset_stats_%s' % c.repo_info.repo_name,_('Reset current statistics'),class_=" |
|
134 | ${h.submit('reset_stats_%s' % c.repo_info.repo_name,_('Reset current statistics'),class_="ui-btn",onclick="return confirm('"+_('Confirm to remove current statistics')+"');")} | |
135 | <div class="field" style="border:none"> |
|
135 | <div class="field" style="border:none;color:#888"> | |
136 | <ul> |
|
136 | <ul> | |
137 | <li>${_('Fetched to rev')}: ${c.stats_revision}/${c.repo_last_rev}</li> |
|
137 | <li>${_('Fetched to rev')}: ${c.stats_revision}/${c.repo_last_rev}</li> | |
138 | <li>${_('Percentage of stats gathered')}: ${c.stats_percentage} %</li> |
|
138 | <li>${_('Percentage of stats gathered')}: ${c.stats_percentage} %</li> | |
139 | </ul> |
|
139 | </ul> | |
140 | </div> |
|
140 | </div> | |
141 |
|
||||
142 | </div> |
|
141 | </div> | |
143 | </div> |
|
142 | </div> | |
144 | ${h.end_form()} |
|
143 | ${h.end_form()} | |
@@ -148,7 +147,7 b'' | |||||
148 | ${h.form(url('repo_pull', repo_name=c.repo_info.repo_name),method='put')} |
|
147 | ${h.form(url('repo_pull', repo_name=c.repo_info.repo_name),method='put')} | |
149 | <div class="form"> |
|
148 | <div class="form"> | |
150 | <div class="fields"> |
|
149 | <div class="fields"> | |
151 |
${h.submit('remote_pull_%s' % c.repo_info.repo_name,_('Pull changes from remote location'),class_=" |
|
150 | ${h.submit('remote_pull_%s' % c.repo_info.repo_name,_('Pull changes from remote location'),class_="ui-btn",onclick="return confirm('"+_('Confirm to pull changes from remote side')+"');")} | |
152 | <div class="field" style="border:none"> |
|
151 | <div class="field" style="border:none"> | |
153 | <ul> |
|
152 | <ul> | |
154 | <li><a href="${c.repo_info.clone_uri}">${c.repo_info.clone_uri}</a></li> |
|
153 | <li><a href="${c.repo_info.clone_uri}">${c.repo_info.clone_uri}</a></li> | |
@@ -163,7 +162,7 b'' | |||||
163 | ${h.form(url('repo_cache', repo_name=c.repo_info.repo_name),method='delete')} |
|
162 | ${h.form(url('repo_cache', repo_name=c.repo_info.repo_name),method='delete')} | |
164 | <div class="form"> |
|
163 | <div class="form"> | |
165 | <div class="fields"> |
|
164 | <div class="fields"> | |
166 |
${h.submit('reset_cache_%s' % c.repo_info.repo_name,_('Invalidate repository cache'),class_=" |
|
165 | ${h.submit('reset_cache_%s' % c.repo_info.repo_name,_('Invalidate repository cache'),class_="ui-btn",onclick="return confirm('"+_('Confirm to invalidate repository cache')+"');")} | |
167 | </div> |
|
166 | </div> | |
168 | </div> |
|
167 | </div> | |
169 | ${h.end_form()} |
|
168 | ${h.end_form()} | |
@@ -171,14 +170,20 b'' | |||||
171 | <h3>${_('Public journal')}</h3> |
|
170 | <h3>${_('Public journal')}</h3> | |
172 | ${h.form(url('repo_public_journal', repo_name=c.repo_info.repo_name),method='put')} |
|
171 | ${h.form(url('repo_public_journal', repo_name=c.repo_info.repo_name),method='put')} | |
173 | <div class="form"> |
|
172 | <div class="form"> | |
174 | <div class="fields"> |
|
|||
175 | ${h.hidden('auth_token',str(h.get_token()))} |
|
173 | ${h.hidden('auth_token',str(h.get_token()))} | |
|
174 | <div class="field"> | |||
176 | %if c.in_public_journal: |
|
175 | %if c.in_public_journal: | |
177 |
${h.submit('set_public_%s' % c.repo_info.repo_name,_('Remove from public journal'),class_=" |
|
176 | ${h.submit('set_public_%s' % c.repo_info.repo_name,_('Remove from public journal'),class_="ui-btn")} | |
178 | %else: |
|
177 | %else: | |
179 |
${h.submit('set_public_%s' % c.repo_info.repo_name,_('Add to public journal'),class_=" |
|
178 | ${h.submit('set_public_%s' % c.repo_info.repo_name,_('Add to public journal'),class_="ui-btn")} | |
180 | %endif |
|
179 | %endif | |
181 |
|
|
180 | </div> | |
|
181 | <div class="field" style="border:none;color:#888"> | |||
|
182 | <ul> | |||
|
183 | <li>${_('''All actions made on this repository will be accessible to everyone in public journal''')} | |||
|
184 | </li> | |||
|
185 | </ul> | |||
|
186 | </div> | |||
182 | </div> |
|
187 | </div> | |
183 | ${h.end_form()} |
|
188 | ${h.end_form()} | |
184 |
|
189 | |||
@@ -186,8 +191,30 b'' | |||||
186 | ${h.form(url('repo', repo_name=c.repo_info.repo_name),method='delete')} |
|
191 | ${h.form(url('repo', repo_name=c.repo_info.repo_name),method='delete')} | |
187 | <div class="form"> |
|
192 | <div class="form"> | |
188 | <div class="fields"> |
|
193 | <div class="fields"> | |
189 |
${h.submit('remove_%s' % c.repo_info.repo_name,_('Remove this repository'),class_=" |
|
194 | ${h.submit('remove_%s' % c.repo_info.repo_name,_('Remove this repository'),class_="ui-btn red",onclick="return confirm('"+_('Confirm to delete this repository')+"');")} | |
190 | </div> |
|
195 | </div> | |
|
196 | <div class="field" style="border:none;color:#888"> | |||
|
197 | <ul> | |||
|
198 | <li>${_('''This repository will be renamed in a special way in order to be unaccesible for RhodeCode and VCS systems. | |||
|
199 | If you need fully delete it from filesystem please do it manually''')} | |||
|
200 | </li> | |||
|
201 | </ul> | |||
|
202 | </div> | |||
|
203 | </div> | |||
|
204 | ${h.end_form()} | |||
|
205 | ||||
|
206 | <h3>${_('Set as fork')}</h3> | |||
|
207 | ${h.form(url('repo_as_fork', repo_name=c.repo_info.repo_name),method='put')} | |||
|
208 | <div class="form"> | |||
|
209 | <div class="fields"> | |||
|
210 | ${h.select('id_fork_of','',c.repos_list,class_="medium")} | |||
|
211 | ${h.submit('set_as_fork_%s' % c.repo_info.repo_name,_('set'),class_="ui-btn",)} | |||
|
212 | </div> | |||
|
213 | <div class="field" style="border:none;color:#888"> | |||
|
214 | <ul> | |||
|
215 | <li>${_('''Manually set this repository as a fork of another''')}</li> | |||
|
216 | </ul> | |||
|
217 | </div> | |||
191 | </div> |
|
218 | </div> | |
192 | ${h.end_form()} |
|
219 | ${h.end_form()} | |
193 |
|
220 |
General Comments 0
You need to be logged in to leave comments.
Login now