##// END OF EJS Templates
Add quick toggle link for locking for users with write or admin permissions
marcink -
r2833:2f3cba7b beta
parent child Browse files
Show More
@@ -141,6 +141,7 b' def make_map(config):'
141 141 m.connect('repo_locking', "/repo_locking/{repo_name:.*?}",
142 142 action="repo_locking", conditions=dict(method=["PUT"],
143 143 function=check_repo))
144
144 145 with rmap.submapper(path_prefix=ADMIN_PREFIX,
145 146 controller='admin/repos_groups') as m:
146 147 m.connect("repos_groups", "/repos_groups",
@@ -561,6 +562,10 b' def make_map(config):'
561 562 controller='settings', action='index',
562 563 conditions=dict(function=check_repo))
563 564
565 rmap.connect('toggle_locking', "/{repo_name:.*?}/locking_toggle",
566 controller='settings', action="toggle_locking",
567 conditions=dict(method=["GET"], function=check_repo))
568
564 569 rmap.connect('repo_fork_create_home', '/{repo_name:.*?}/fork',
565 570 controller='forks', action='fork_create',
566 571 conditions=dict(function=check_repo, method=["POST"]))
@@ -35,13 +35,14 b' from pylons.i18n.translation import _'
35 35
36 36 import rhodecode.lib.helpers as h
37 37
38 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAllDecorator
38 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAllDecorator,\
39 HasRepoPermissionAnyDecorator
39 40 from rhodecode.lib.base import BaseRepoController, render
40 41 from rhodecode.lib.utils import invalidate_cache, action_logger
41 42
42 43 from rhodecode.model.forms import RepoSettingsForm
43 44 from rhodecode.model.repo import RepoModel
44 from rhodecode.model.db import RepoGroup
45 from rhodecode.model.db import RepoGroup, Repository
45 46 from rhodecode.model.meta import Session
46 47 from rhodecode.model.scm import ScmModel
47 48
@@ -109,7 +110,7 b' class SettingsController(BaseRepoControl'
109 110 changed_name = form_result['repo_name_full']
110 111 action_logger(self.rhodecode_user, 'user_updated_repo',
111 112 changed_name, self.ip_addr, self.sa)
112 Session.commit()
113 Session().commit()
113 114 except formencode.Invalid, errors:
114 115 c.repo_info = repo_model.get_by_repo_name(repo_name)
115 116 c.users_array = repo_model.get_users_js()
@@ -153,10 +154,38 b' class SettingsController(BaseRepoControl'
153 154 repo_model.delete(repo)
154 155 invalidate_cache('get_repo_cached_%s' % repo_name)
155 156 h.flash(_('deleted repository %s') % repo_name, category='success')
156 Session.commit()
157 Session().commit()
157 158 except Exception:
158 159 log.error(traceback.format_exc())
159 160 h.flash(_('An error occurred during deletion of %s') % repo_name,
160 161 category='error')
161 162
162 163 return redirect(url('home'))
164
165 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
166 def toggle_locking(self, repo_name):
167 """
168 Toggle locking of repository by simple GET call to url
169
170 :param repo_name:
171 """
172
173 try:
174 repo = Repository.get_by_repo_name(repo_name)
175
176 if repo.enable_locking:
177 if repo.locked[0]:
178 Repository.unlock(repo)
179 action = _('unlocked')
180 else:
181 Repository.lock(repo, c.rhodecode_user.user_id)
182 action = _('locked')
183
184 h.flash(_('Repository has been %s') % action,
185 category='success')
186 except Exception, e:
187 log.error(traceback.format_exc())
188 h.flash(_('An error occurred during unlocking'),
189 category='error')
190 return redirect(url('summary_home', repo_name=repo_name))
191
@@ -658,6 +658,24 b' div:hover > a.permalink {'
658 658 padding: 12px 9px 7px 24px;
659 659 }
660 660
661 #header #header-inner #quick li ul li a.locking_add,#header #header-inner #quick li ul li a.locking_add:hover
662 {
663 background: #FFF url("../images/icons/lock_add.png") no-repeat 4px
664 9px;
665 width: 167px;
666 margin: 0;
667 padding: 12px 9px 7px 24px;
668 }
669
670 #header #header-inner #quick li ul li a.locking_del,#header #header-inner #quick li ul li a.locking_del:hover
671 {
672 background: #FFF url("../images/icons/lock_delete.png") no-repeat 4px
673 9px;
674 width: 167px;
675 margin: 0;
676 padding: 12px 9px 7px 24px;
677 }
678
661 679 #header #header-inner #quick li ul li a.pull_request,#header #header-inner #quick li ul li a.pull_request:hover
662 680 {
663 681 background: #FFF url("../images/icons/arrow_join.png") no-repeat 4px
@@ -206,12 +206,21 b''
206 206 <li>${h.link_to(_('settings'),h.url('repo_settings_home',repo_name=c.repo_name),class_='settings')}</li>
207 207 %endif
208 208 %endif
209
209 210 <li>${h.link_to(_('fork'),h.url('repo_fork_home',repo_name=c.repo_name),class_='fork')}</li>
210 211 %if h.is_hg(c.rhodecode_repo):
211 212 <li>${h.link_to(_('Open new pull request'),h.url('pullrequest_home',repo_name=c.repo_name),class_='pull_request')}</li>
212 213 %endif
213 214 <li>${h.link_to(_('search'),h.url('search_repo',search_repo=c.repo_name),class_='search')}</li>
214 215
216 %if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name) and c.rhodecode_db_repo.enable_locking:
217 %if c.rhodecode_db_repo.locked[0]:
218 <li>${h.link_to(_('unlock'), h.url('toggle_locking',repo_name=c.repo_name),class_='locking_del')}</li>
219 %else:
220 <li>${h.link_to(_('lock'), h.url('toggle_locking',repo_name=c.repo_name),class_='locking_add')}</li>
221 %endif
222 %endif
223
215 224 % if h.HasPermissionAll('hg.admin')('access admin main page'):
216 225 <li>
217 226 ${h.link_to(_('admin'),h.url('admin_home'),class_='admin')}
@@ -227,7 +236,7 b''
227 236 <li class="last">${h.link_to(_('settings'),h.url('admin_settings'),class_='settings')}</li>
228 237 </ul>
229 238 </%def>
230
239 ## ADMIN MENU
231 240 ${admin_menu()}
232 241 </li>
233 242 % endif
General Comments 0
You need to be logged in to leave comments. Login now