repo-settings: moved advanced setion into pyramid views.
- improved delete method, and actions.
This commit is contained in:
parent
27a8d62042
commit
208136ab4d
13 changed files with 435 additions and 281 deletions
|
|
@ -288,51 +288,6 @@ class ReposController(BaseRepoController):
|
|||
return {'result': True}
|
||||
return {'result': False}
|
||||
|
||||
@HasRepoPermissionAllDecorator('repository.admin')
|
||||
@auth.CSRFRequired()
|
||||
def delete(self, repo_name):
|
||||
"""
|
||||
DELETE /repos/repo_name: Delete an existing item"""
|
||||
# Forms posted to this method should contain a hidden field:
|
||||
# <input type="hidden" name="_method" value="DELETE" />
|
||||
# Or using helpers:
|
||||
# h.form(url('repo', repo_name=ID),
|
||||
# method='delete')
|
||||
# url('repo', repo_name=ID)
|
||||
|
||||
repo_model = RepoModel()
|
||||
repo = repo_model.get_by_repo_name(repo_name)
|
||||
if not repo:
|
||||
h.not_mapped_error(repo_name)
|
||||
return redirect(url('repos'))
|
||||
try:
|
||||
_forks = repo.forks.count()
|
||||
handle_forks = None
|
||||
if _forks and request.POST.get('forks'):
|
||||
do = request.POST['forks']
|
||||
if do == 'detach_forks':
|
||||
handle_forks = 'detach'
|
||||
h.flash(_('Detached %s forks') % _forks, category='success')
|
||||
elif do == 'delete_forks':
|
||||
handle_forks = 'delete'
|
||||
h.flash(_('Deleted %s forks') % _forks, category='success')
|
||||
repo_model.delete(repo, forks=handle_forks)
|
||||
action_logger(c.rhodecode_user, 'admin_deleted_repo',
|
||||
repo_name, self.ip_addr, self.sa)
|
||||
ScmModel().mark_for_invalidation(repo_name)
|
||||
h.flash(_('Deleted repository %s') % repo_name, category='success')
|
||||
Session().commit()
|
||||
except AttachedForksError:
|
||||
h.flash(_('Cannot delete %s it still contains attached forks')
|
||||
% repo_name, category='warning')
|
||||
|
||||
except Exception:
|
||||
log.exception("Exception during deletion of repository")
|
||||
h.flash(_('An error occurred during deletion of %s') % repo_name,
|
||||
category='error')
|
||||
|
||||
return redirect(url('repos'))
|
||||
|
||||
@HasPermissionAllDecorator('hg.admin')
|
||||
def show(self, repo_name, format='html'):
|
||||
"""GET /repos/repo_name: Show a specific item"""
|
||||
|
|
@ -384,105 +339,6 @@ class ReposController(BaseRepoController):
|
|||
h.flash(msg, category='error')
|
||||
return redirect(url('edit_repo_fields', repo_name=repo_name))
|
||||
|
||||
@HasRepoPermissionAllDecorator('repository.admin')
|
||||
def edit_advanced(self, repo_name):
|
||||
"""GET /repo_name/settings: Form to edit an existing item"""
|
||||
c.repo_info = self._load_repo(repo_name)
|
||||
c.default_user_id = User.get_default_user().user_id
|
||||
c.in_public_journal = UserFollowing.query()\
|
||||
.filter(UserFollowing.user_id == c.default_user_id)\
|
||||
.filter(UserFollowing.follows_repository == c.repo_info).scalar()
|
||||
|
||||
c.active = 'advanced'
|
||||
c.has_origin_repo_read_perm = False
|
||||
if c.repo_info.fork:
|
||||
c.has_origin_repo_read_perm = h.HasRepoPermissionAny(
|
||||
'repository.write', 'repository.read', 'repository.admin')(
|
||||
c.repo_info.fork.repo_name, 'repo set as fork page')
|
||||
|
||||
if request.POST:
|
||||
return redirect(url('repo_edit_advanced'))
|
||||
return render('admin/repos/repo_edit.mako')
|
||||
|
||||
@HasRepoPermissionAllDecorator('repository.admin')
|
||||
@auth.CSRFRequired()
|
||||
def edit_advanced_journal(self, repo_name):
|
||||
"""
|
||||
Set's this repository to be visible in public journal,
|
||||
in other words assing default user to follow this repo
|
||||
|
||||
:param repo_name:
|
||||
"""
|
||||
|
||||
try:
|
||||
repo_id = Repository.get_by_repo_name(repo_name).repo_id
|
||||
user_id = User.get_default_user().user_id
|
||||
self.scm_model.toggle_following_repo(repo_id, user_id)
|
||||
h.flash(_('Updated repository visibility in public journal'),
|
||||
category='success')
|
||||
Session().commit()
|
||||
except Exception:
|
||||
h.flash(_('An error occurred during setting this'
|
||||
' repository in public journal'),
|
||||
category='error')
|
||||
|
||||
return redirect(url('edit_repo_advanced', repo_name=repo_name))
|
||||
|
||||
@HasRepoPermissionAllDecorator('repository.admin')
|
||||
@auth.CSRFRequired()
|
||||
def edit_advanced_fork(self, repo_name):
|
||||
"""
|
||||
Mark given repository as a fork of another
|
||||
|
||||
:param repo_name:
|
||||
"""
|
||||
|
||||
new_fork_id = request.POST.get('id_fork_of')
|
||||
try:
|
||||
|
||||
if new_fork_id and not new_fork_id.isdigit():
|
||||
log.error('Given fork id %s is not an INT', new_fork_id)
|
||||
|
||||
fork_id = safe_int(new_fork_id)
|
||||
repo = ScmModel().mark_as_fork(repo_name, fork_id,
|
||||
c.rhodecode_user.username)
|
||||
fork = repo.fork.repo_name if repo.fork else _('Nothing')
|
||||
Session().commit()
|
||||
h.flash(_('Marked repo %s as fork of %s') % (repo_name, fork),
|
||||
category='success')
|
||||
except RepositoryError as e:
|
||||
log.exception("Repository Error occurred")
|
||||
h.flash(str(e), category='error')
|
||||
except Exception as e:
|
||||
log.exception("Exception while editing fork")
|
||||
h.flash(_('An error occurred during this operation'),
|
||||
category='error')
|
||||
|
||||
return redirect(url('edit_repo_advanced', repo_name=repo_name))
|
||||
|
||||
@HasRepoPermissionAllDecorator('repository.admin')
|
||||
@auth.CSRFRequired()
|
||||
def edit_advanced_locking(self, repo_name):
|
||||
"""
|
||||
Unlock repository when it is locked !
|
||||
|
||||
:param repo_name:
|
||||
"""
|
||||
try:
|
||||
repo = Repository.get_by_repo_name(repo_name)
|
||||
if request.POST.get('set_lock'):
|
||||
Repository.lock(repo, c.rhodecode_user.user_id,
|
||||
lock_reason=Repository.LOCK_WEB)
|
||||
h.flash(_('Locked repository'), category='success')
|
||||
elif request.POST.get('set_unlock'):
|
||||
Repository.unlock(repo)
|
||||
h.flash(_('Unlocked repository'), category='success')
|
||||
except Exception as e:
|
||||
log.exception("Exception during unlocking")
|
||||
h.flash(_('An error occurred during unlocking'),
|
||||
category='error')
|
||||
return redirect(url('edit_repo_advanced', repo_name=repo_name))
|
||||
|
||||
@HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
|
||||
@auth.CSRFRequired()
|
||||
def toggle_locking(self, repo_name):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue