mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-21 03:18:23 +00:00
Modified sys list orphan repos
This commit is contained in:
@@ -2603,3 +2603,13 @@ textarea:-moz-placeholder {/* for FF */
|
|||||||
#plan-form input[type=radio] {
|
#plan-form input[type=radio] {
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#search-repo-form label{
|
||||||
|
display:block;
|
||||||
|
text-align:right;
|
||||||
|
width:40px;
|
||||||
|
float:left;
|
||||||
|
}
|
||||||
|
#search-repo-form input[type=text] {
|
||||||
|
margin: 4px 4px;
|
||||||
|
}
|
||||||
|
91
seahub/templates/sysadmin/sys_list_orphan.html
Normal file
91
seahub/templates/sysadmin/sys_list_orphan.html
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
{% extends "admin_base.html" %}
|
||||||
|
{% load i18n %}
|
||||||
|
{% block nav_seafadmin_class %}class="cur"{% endblock %}
|
||||||
|
|
||||||
|
{% block title_panel %}
|
||||||
|
<div class="tabnav">
|
||||||
|
<ul class="tabnav-tabs">
|
||||||
|
<li class="tabnav-tab"><a href="{% url 'sys_repo_admin' %}">{% trans "All" %}</a></li>
|
||||||
|
<li class="tabnav-tab tabnav-tab-cur">{% trans "Orphan" %}</li>
|
||||||
|
</ul>
|
||||||
|
<button class="icon-search fright" id="search-repo-btn">{% trans "Search Library" %}</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block main_panel %}
|
||||||
|
{% if repos %}
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th width="15%">{% trans "Name" %}</th>
|
||||||
|
<th width="25%">ID</th>
|
||||||
|
<th width="20%">{% trans "Owner" %}</th>
|
||||||
|
<th width="27%">{% trans "Description" %}</th>
|
||||||
|
<th width="13%">{% trans "Operations" %}</th>
|
||||||
|
</tr>
|
||||||
|
{% for repo in repos %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ repo.props.name }}</td>
|
||||||
|
<td style="font-size:11px;">{{ repo.id }}</td>
|
||||||
|
<td><a href="{{ SITE_ROOT }}useradmin/info/{{ repo.owner }}/">{{ repo.owner}}</a></td>
|
||||||
|
<td>{{ repo.props.desc }}</td>
|
||||||
|
<td>
|
||||||
|
<a href="#" data-url="{{ SITE_ROOT }}repo/remove/{{ repo.props.id }}/?next={{ request.path }}" data-target="{{ repo.props.name }}" class="repo-delete-btn op">{% trans "Delete" %}</a>
|
||||||
|
<a href="#" data-id="{{repo.id}}" data-name="{{repo.name}}" class="repo-transfer-btn op">{% trans "Transfer" %}</a>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
<p>{% trans "Empty" %}</p>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<form id="repo-transfer-form" method="post" action="{% url 'sys_repo_transfer' %}" class="simple-input-popup hide">{% csrf_token %}
|
||||||
|
<h3>{% trans "Transfer Library"%}</h3>
|
||||||
|
<label>{% trans "Email" %}</label><br />
|
||||||
|
<input type="text" name="email" value="" class="long-input"/><br />
|
||||||
|
<input type="hidden" name="repo_id" value="" />
|
||||||
|
|
||||||
|
<p class="error hide"></p>
|
||||||
|
<input type="submit" value="{% trans "Submit" %}" class="submit" />
|
||||||
|
<button class="simplemodal-close">{% trans "Cancel" %}</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block extra_script %}
|
||||||
|
<script type="text/javascript">
|
||||||
|
addConfirmTo($('.repo-delete-btn'), {
|
||||||
|
'title':'{% trans "Delete Library" %}',
|
||||||
|
'con':'{% trans "Are you sure you want to delete %s ?" %}'
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#search-repo-btn').click(function() {
|
||||||
|
location.href = "{% url 'sys_repo_search' %}";
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.repo-transfer-btn').click(function(){
|
||||||
|
var repo_id = $(this).data('id'),
|
||||||
|
repo_name = $(this).data('name'),
|
||||||
|
form = $('#repo-transfer-form');
|
||||||
|
|
||||||
|
$('#repo-transfer-form input[name="repo_id"]').val(repo_id);
|
||||||
|
form.modal({appendTo:'#main'});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#repo-transfer-form').submit(function() {
|
||||||
|
var form = $(this),
|
||||||
|
form_id = form.attr('id'),
|
||||||
|
email = $.trim(form.children('[name="email"]').val());
|
||||||
|
if (!email) {
|
||||||
|
apply_form_error(form_id, "{% trans "Email cannot be blank" %}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
form.submit();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{% endblock %}
|
||||||
|
|
@@ -2,10 +2,18 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% block nav_seafadmin_class %}class="cur"{% endblock %}
|
{% block nav_seafadmin_class %}class="cur"{% endblock %}
|
||||||
|
|
||||||
{% block main_panel %}
|
{% block title_panel %}
|
||||||
<h3>{% trans "All Libraries" %}</h3>
|
<div class="tabnav">
|
||||||
<button class="icon-search fright" id="search-repo-btn">{% trans "Search Library" %}</button>
|
<ul class="tabnav-tabs">
|
||||||
|
<li class="tabnav-tab tabnav-tab-cur">{% trans "All" %}</li>
|
||||||
|
<li class="tabnav-tab"><a href="{% url 'sys_list_orphan' %}">{% trans "Orphan" %}</a></li>
|
||||||
|
</ul>
|
||||||
|
<button class="icon-search fright" id="search-repo-btn">{% trans "Search Library" %}</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block main_panel %}
|
||||||
{% if repos %}
|
{% if repos %}
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
|
@@ -9,9 +9,6 @@
|
|||||||
<input type="text" name="name" id="id_name" class="input" value="{{name}}"/><br />
|
<input type="text" name="name" id="id_name" class="input" value="{{name}}"/><br />
|
||||||
<label>{% trans "Owner" %}</label>
|
<label>{% trans "Owner" %}</label>
|
||||||
<input type="text" name="owner" id="id_owner" class="input" value="{{owner}}"/><br />
|
<input type="text" name="owner" id="id_owner" class="input" value="{{owner}}"/><br />
|
||||||
<label>{% trans "Orphan" %}</label>
|
|
||||||
<input type="radio" name="orphan" id="orphan_yes" value="yes" {% if orphan == 'yes' %}checked{% endif %}>Yes
|
|
||||||
<input type="radio" name="orphan" id="orphan_no" value="no" {% if orphan != 'yes' %}checked{% endif%}>No<br />
|
|
||||||
|
|
||||||
<p class="error hide"></p>
|
<p class="error hide"></p>
|
||||||
|
|
||||||
|
@@ -18,7 +18,7 @@ from seahub.views.wiki import personal_wiki, personal_wiki_pages, \
|
|||||||
from seahub.views.sysadmin import sys_repo_admin, sys_user_admin, user_search,\
|
from seahub.views.sysadmin import sys_repo_admin, sys_user_admin, user_search,\
|
||||||
sys_group_admin, user_info, user_add, user_remove, user_make_admin, \
|
sys_group_admin, user_info, user_add, user_remove, user_make_admin, \
|
||||||
user_remove_admin, user_reset, user_activate, sys_publink_admin, \
|
user_remove_admin, user_reset, user_activate, sys_publink_admin, \
|
||||||
sys_repo_search, sys_repo_transfer
|
sys_repo_search, sys_repo_transfer, sys_list_orphan
|
||||||
from seahub.views.ajax import *
|
from seahub.views.ajax import *
|
||||||
|
|
||||||
# Uncomment the next two lines to enable the admin:
|
# Uncomment the next two lines to enable the admin:
|
||||||
@@ -143,7 +143,8 @@ urlpatterns = patterns('',
|
|||||||
(r'^share/', include('seahub.share.urls')),
|
(r'^share/', include('seahub.share.urls')),
|
||||||
|
|
||||||
### system admin ###
|
### system admin ###
|
||||||
(r'^sys/seafadmin/$', sys_repo_admin),
|
url(r'^sys/seafadmin/$', sys_repo_admin, name='sys_repo_admin'),
|
||||||
|
url(r'^sys/seafadmin/orphan/$', sys_list_orphan, name='sys_list_orphan'),
|
||||||
url(r'^sys/seafadmin/search/$', sys_repo_search, name='sys_repo_search'),
|
url(r'^sys/seafadmin/search/$', sys_repo_search, name='sys_repo_search'),
|
||||||
url(r'^sys/seafadmin/transfer/$', sys_repo_transfer, name='sys_repo_transfer'),
|
url(r'^sys/seafadmin/transfer/$', sys_repo_transfer, name='sys_repo_transfer'),
|
||||||
url(r'^sys/useradmin/$', sys_user_admin, name='sys_useradmin'),
|
url(r'^sys/useradmin/$', sys_user_admin, name='sys_useradmin'),
|
||||||
|
@@ -69,33 +69,12 @@ def sys_repo_admin(request):
|
|||||||
},
|
},
|
||||||
context_instance=RequestContext(request))
|
context_instance=RequestContext(request))
|
||||||
|
|
||||||
def list_orphan_repos_by_name(repo_name):
|
|
||||||
ret_list = []
|
|
||||||
try:
|
|
||||||
repos = seafile_api.get_orphan_repo_list()
|
|
||||||
for e in repos:
|
|
||||||
if e.name == repo_name:
|
|
||||||
e.owner = seafile_api.get_repo_owner(e.id)
|
|
||||||
ret_list.append(e)
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(e)
|
|
||||||
return ret_list
|
|
||||||
|
|
||||||
def list_orphan_repos():
|
|
||||||
try:
|
|
||||||
repos = seafile_api.get_orphan_repo_list()
|
|
||||||
for e in repos:
|
|
||||||
e.owner = seafile_api.get_repo_owner(e.id)
|
|
||||||
return repos
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(e)
|
|
||||||
return []
|
|
||||||
|
|
||||||
def list_repos_by_name_and_owner(repo_name, owner):
|
def list_repos_by_name_and_owner(repo_name, owner):
|
||||||
repos = []
|
repos = []
|
||||||
owned_repos = seafile_api.get_owned_repo_list(owner)
|
owned_repos = seafile_api.get_owned_repo_list(owner)
|
||||||
for repo in owned_repos:
|
for repo in owned_repos:
|
||||||
if repo.name == repo_name:
|
if repo_name in repo.name:
|
||||||
repo.owner = owner
|
repo.owner = owner
|
||||||
repos.append(repo)
|
repos.append(repo)
|
||||||
return repos
|
return repos
|
||||||
@@ -104,7 +83,7 @@ def list_repos_by_name(repo_name):
|
|||||||
repos = []
|
repos = []
|
||||||
repos_all = seafile_api.get_repo_list(-1, -1)
|
repos_all = seafile_api.get_repo_list(-1, -1)
|
||||||
for repo in repos_all:
|
for repo in repos_all:
|
||||||
if repo.name == repo_name:
|
if repo_name in repo.name:
|
||||||
try:
|
try:
|
||||||
repo.owner = seafile_api.get_repo_owner(repo.id)
|
repo.owner = seafile_api.get_repo_owner(repo.id)
|
||||||
except SearpcError:
|
except SearpcError:
|
||||||
@@ -125,15 +104,8 @@ def sys_repo_search(request):
|
|||||||
"""
|
"""
|
||||||
repo_name = request.GET.get('name', '')
|
repo_name = request.GET.get('name', '')
|
||||||
owner = request.GET.get('owner', '')
|
owner = request.GET.get('owner', '')
|
||||||
orphan = request.GET.get('orphan', 'no')
|
|
||||||
repos = []
|
repos = []
|
||||||
|
|
||||||
if orphan == 'yes':
|
|
||||||
if repo_name:
|
|
||||||
repos = list_orphan_repos_by_name(repo_name)
|
|
||||||
else:
|
|
||||||
repos = list_orphan_repos()
|
|
||||||
else:
|
|
||||||
if repo_name and owner : # search by name and owner
|
if repo_name and owner : # search by name and owner
|
||||||
repos = list_repos_by_name_and_owner(repo_name, owner)
|
repos = list_repos_by_name_and_owner(repo_name, owner)
|
||||||
elif repo_name: # search by name
|
elif repo_name: # search by name
|
||||||
@@ -145,7 +117,6 @@ def sys_repo_search(request):
|
|||||||
'repos': repos,
|
'repos': repos,
|
||||||
'name': repo_name,
|
'name': repo_name,
|
||||||
'owner': owner,
|
'owner': owner,
|
||||||
'orphan': orphan,
|
|
||||||
}, context_instance=RequestContext(request))
|
}, context_instance=RequestContext(request))
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@@ -553,4 +524,16 @@ def sys_repo_transfer(request):
|
|||||||
messages.error(request, _(u'Failed to transfer, invalid arguments.'))
|
messages.error(request, _(u'Failed to transfer, invalid arguments.'))
|
||||||
return HttpResponseRedirect(reverse(sys_repo_admin))
|
return HttpResponseRedirect(reverse(sys_repo_admin))
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
@sys_staff_required
|
||||||
|
def sys_list_orphan(request):
|
||||||
|
try:
|
||||||
|
repos = seafile_api.get_orphan_repo_list()
|
||||||
|
return repos
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(e)
|
||||||
|
repos = []
|
||||||
|
|
||||||
|
return render_to_response('sysadmin/sys_list_orphan.html', {
|
||||||
|
'repos': repos,
|
||||||
|
}, context_instance=RequestContext(request))
|
||||||
|
Reference in New Issue
Block a user