mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-23 20:37:42 +00:00
[sysadmin] add repo trash
This commit is contained in:
@@ -108,6 +108,106 @@ def sys_list_system(request):
|
||||
'repos': repos,
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
@login_required
|
||||
@sys_staff_required
|
||||
def sys_repo_trash(request):
|
||||
""" List deleted repos (by owner) """
|
||||
|
||||
search_owner = request.GET.get('name', '')
|
||||
if search_owner:
|
||||
if is_valid_username(search_owner):
|
||||
repos = seafserv_threaded_rpc.get_trash_repos_by_owner(search_owner)
|
||||
return render_to_response(
|
||||
'sysadmin/sys_repo_trash.html', {
|
||||
'repos': repos,
|
||||
'search_owner': search_owner,
|
||||
}, context_instance=RequestContext(request))
|
||||
else:
|
||||
messages.error(request, _(u'Invalid username'))
|
||||
return HttpResponseRedirect(reverse('sys_repo_trash'))
|
||||
|
||||
try:
|
||||
current_page = int(request.GET.get('page', '1'))
|
||||
per_page = int(request.GET.get('per_page', '25'))
|
||||
except ValueError:
|
||||
current_page = 1
|
||||
per_page = 25
|
||||
|
||||
repos_all = seafserv_threaded_rpc.get_trash_repo_list(per_page * (current_page -1),
|
||||
per_page + 1)
|
||||
repos = repos_all[:per_page]
|
||||
if len(repos_all) == per_page + 1:
|
||||
page_next = True
|
||||
else:
|
||||
page_next = False
|
||||
|
||||
return render_to_response(
|
||||
'sysadmin/sys_repo_trash.html', {
|
||||
'repos': repos,
|
||||
'current_page': current_page,
|
||||
'prev_page': current_page-1,
|
||||
'next_page': current_page+1,
|
||||
'per_page': per_page,
|
||||
'page_next': page_next,
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
@login_required
|
||||
@sys_staff_required
|
||||
def sys_repo_trash_restore(request, repo_id):
|
||||
"""Restore deleted repo by id"""
|
||||
|
||||
referer = request.META.get('HTTP_REFERER', None)
|
||||
next = reverse('sys_repo_trash') if referer is None else referer
|
||||
|
||||
try:
|
||||
seafserv_threaded_rpc.restore_repo_from_trash(repo_id)
|
||||
messages.success(request, _(u'Success'))
|
||||
except SearpcError, e:
|
||||
logger.error(e)
|
||||
messages.error(request, _(u'Failed'))
|
||||
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
@login_required
|
||||
@sys_staff_required
|
||||
def sys_repo_trash_remove(request, repo_id):
|
||||
"""Remove deleted repo by id"""
|
||||
|
||||
referer = request.META.get('HTTP_REFERER', None)
|
||||
next = reverse('sys_repo_trash') if referer is None else referer
|
||||
|
||||
try:
|
||||
seafserv_threaded_rpc.del_repo_from_trash(repo_id)
|
||||
messages.success(request, _(u'Success'))
|
||||
except SearpcError, e:
|
||||
logger.error(e)
|
||||
messages.error(request, _(u'Failed'))
|
||||
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
@login_required
|
||||
@sys_staff_required
|
||||
def sys_repo_trash_clear(request):
|
||||
"""Clear repo trash (by owner)"""
|
||||
|
||||
next = reverse('sys_repo_trash')
|
||||
owner = request.GET.get('owner', '')
|
||||
try:
|
||||
if owner:
|
||||
if is_valid_username(owner):
|
||||
seafserv_threaded_rpc.empty_repo_trash_by_owner(owner)
|
||||
else:
|
||||
messages.error(request, _(u'Invalid username'))
|
||||
return HttpResponseRedirect(next)
|
||||
else:
|
||||
seafserv_threaded_rpc.empty_repo_trash()
|
||||
except SearpcError, e:
|
||||
logger.error(e)
|
||||
messages.error(request, _(u'Failed'))
|
||||
|
||||
messages.success(request, _(u'Success'))
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
def list_repos_by_name_and_owner(repo_name, owner):
|
||||
repos = []
|
||||
owned_repos = seafile_api.get_owned_repo_list(owner)
|
||||
|
Reference in New Issue
Block a user