mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-16 15:19:06 +00:00
Enable transfer library and group
This commit is contained in:
@@ -188,3 +188,13 @@ class RepoSettingForm(forms.Form):
|
||||
repo_desc = forms.CharField(error_messages={'required': _('Library description is required')})
|
||||
days = forms.IntegerField(required=False,
|
||||
error_messages={'invalid': _('Please enter a number')})
|
||||
repo_owner = forms.CharField(required=False)
|
||||
|
||||
def clean_repo_owner(self):
|
||||
repo_owner = self.cleaned_data['repo_owner']
|
||||
try:
|
||||
User.objects.get(email=repo_owner)
|
||||
return repo_owner
|
||||
except User.DoesNotExist:
|
||||
raise forms.ValidationError(_('User %s is not found.') % repo_owner)
|
||||
|
||||
|
@@ -44,6 +44,7 @@
|
||||
{% else %}
|
||||
<li><a href="{% url 'group_make_pub' group.id %}">{% trans "Make Public" %}</a></li>
|
||||
{% endif %}
|
||||
<li><a id="group-transfer" href="#" >{% trans "Transfer" %}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -97,6 +98,13 @@
|
||||
</table>
|
||||
{% endif %}
|
||||
|
||||
<form id="group-transfer-form" method="post" action="{% url 'group_transfer' group.id %}" name="group-transfer-form" class="hide">{% csrf_token %}
|
||||
<h3>{% trans "Transfer Group To"%}</h3>
|
||||
<input type="text" name="email" value="" placeholder="{% trans "email"%}" />
|
||||
<p class="tip">{% trans "Tip: the email should be already registered."%}</p>
|
||||
<p class="error hide"></p>
|
||||
<input type="submit" value="{% trans "Submit"%}" id="group-transfer-submit" />
|
||||
</form>
|
||||
|
||||
{% include 'group/grpmember_add_form.html' %}
|
||||
{% endblock %}
|
||||
@@ -128,5 +136,21 @@ contact_list.push({value:contact_email, label:contact_email});
|
||||
{% with post_url=admin_add_url %}
|
||||
{% include 'group/grpadmin_add_js.html' %}
|
||||
{% endwith %}
|
||||
|
||||
$('#group-transfer').click(function() {
|
||||
$('#group-transfer-form').modal({appendTo: "#main", focus:false});
|
||||
return false;
|
||||
});
|
||||
$('#group-transfer-submit').click(function() {
|
||||
var email = $('#group-transfer-form input[name="email"]').val();
|
||||
|
||||
if (!email) {
|
||||
apply_form_error('group-transfer-form', '{% trans "Email can not be blank."%}');
|
||||
return false;
|
||||
}
|
||||
|
||||
$('#group-transfer-form').submit();
|
||||
return false;
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
@@ -6,7 +6,7 @@ from views import group_info, group_members, group_member_operations, group_add_
|
||||
group_remove_admin, group_discuss, group_wiki, group_wiki_create, \
|
||||
group_wiki_page_new, group_wiki_page_edit, group_wiki_pages, \
|
||||
group_wiki_page_delete, group_remove, group_dismiss, group_quit, \
|
||||
group_make_public, group_revoke_public
|
||||
group_make_public, group_revoke_public, group_transfer
|
||||
|
||||
urlpatterns = patterns('',
|
||||
url(r'^(?P<group_id>\d+)/$', group_info, name='group_info'),
|
||||
@@ -23,6 +23,7 @@ urlpatterns = patterns('',
|
||||
url(r'^(?P<group_id>\d+)/manage/$', group_manage, name='group_manage'),
|
||||
url(r'^(?P<group_id>\d+)/remove/$', group_remove, name='group_remove'),
|
||||
url(r'^(?P<group_id>\d+)/dismiss/$', group_dismiss, name='group_dismiss'),
|
||||
url(r'^(?P<group_id>\d+)/transfer/$', group_transfer, name='group_transfer'),
|
||||
url(r'^(?P<group_id>\d+)/make_pub/$', group_make_public, name='group_make_pub'),
|
||||
url(r'^(?P<group_id>\d+)/revoke_pub/$', group_revoke_public, name='group_revoke_pub'),
|
||||
url(r'^(?P<group_id>\d+)/quit/$', group_quit, name='group_quit'),
|
||||
|
@@ -233,6 +233,26 @@ def group_dismiss(request, group_id):
|
||||
|
||||
return HttpResponseRedirect(reverse('group_list'))
|
||||
|
||||
@login_required
|
||||
@group_staff_required
|
||||
def group_transfer(request, group_id):
|
||||
"""Change group creator.
|
||||
"""
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
group_id = int(group_id)
|
||||
username = request.user.username
|
||||
email = request.POST.get('email', '')
|
||||
if email != username:
|
||||
if not is_group_user(group_id, email):
|
||||
ccnet_threaded_rpc.group_add_member(group_id, username, email)
|
||||
|
||||
ccnet_threaded_rpc.set_group_creator(group_id, email)
|
||||
|
||||
next = reverse('group_list', args=[])
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
@login_required
|
||||
def group_make_public(request, group_id):
|
||||
"""
|
||||
|
@@ -129,6 +129,9 @@
|
||||
<input type="radio" name="history" value="no_history" {% if history_limit == 0 %}checked="checked"{% endif %} class="vam" /> <span class="vam">{% trans "Don't keep history" %}</span><br />
|
||||
<input type="radio" name="history" value="partial_history" {% if history_limit > 0 %}checked="checked"{% endif %} class="vam" /> <span calss="vam">{% trans "Only keep a period of history:" %} <input type="text" name="days" size="4" {% if history_limit <= 0 %} disabled="disabled" class="input-disabled" {% else %} value="{{history_limit}}" {% endif %} /> {% trans "days" %}</span><br />
|
||||
{% endif %}
|
||||
<label>{% trans "Owner" %}</label><br />
|
||||
<input type="text" name="repo_owner" value="{{repo_owner}}" class="long-input"/><br />
|
||||
|
||||
<p class="error hide"></p>
|
||||
<input type="submit" value="{% trans "Submit" %}" class="submit" />
|
||||
<button class="simplemodal-close">{% trans "Cancel" %}</button>
|
||||
@@ -280,6 +283,7 @@ $('#repo-setting-form').submit(function() {
|
||||
'repo_id': $('#repo-setting-form input[name="repo_id"]').val(),
|
||||
'repo_name': $('#repo-setting-form input[name="repo_name"]').val(),
|
||||
'repo_desc': $('#repo-setting-form input[name="repo_desc"]').val(),
|
||||
'repo_owner': $('#repo-setting-form input[name="repo_owner"]').val(),
|
||||
{% if not ENABLE_SUB_LIBRARY or not repo.is_virtual %}
|
||||
'days': days
|
||||
{% endif %}
|
||||
|
@@ -387,6 +387,7 @@ def repo_save_settings(request):
|
||||
repo_name = form.cleaned_data['repo_name']
|
||||
repo_desc = form.cleaned_data['repo_desc']
|
||||
days = form.cleaned_data['days']
|
||||
repo_owner = form.cleaned_data['repo_owner']
|
||||
|
||||
repo = get_repo(repo_id)
|
||||
if not repo:
|
||||
@@ -419,6 +420,10 @@ def repo_save_settings(request):
|
||||
return HttpResponse(json.dumps({'error': _(u'Failed to save settings on server')}),
|
||||
status=400, content_type=content_type)
|
||||
|
||||
# set library owner
|
||||
if repo_owner is not None and repo_owner != username:
|
||||
seafile_api.set_repo_owner(repo_id, repo_owner)
|
||||
|
||||
messages.success(request, _(u'Settings saved.'))
|
||||
return HttpResponse(json.dumps({'success': True}),
|
||||
content_type=content_type)
|
||||
|
@@ -185,8 +185,9 @@ def render_repo(request, repo):
|
||||
no_quota = is_no_quota(repo.id)
|
||||
history_limit = seaserv.get_repo_history_limit(repo.id)
|
||||
search_repo_id = None if repo.encrypted else repo.id
|
||||
repo_owner = seafile_api.get_repo_owner(repo.id)
|
||||
is_repo_owner = True if repo_owner == username else False
|
||||
|
||||
is_repo_owner = seafile_api.is_repo_owner(username, repo.id)
|
||||
more_start = None
|
||||
file_list, dir_list, dirent_more = get_repo_dirents(request, repo.id, head_commit, path, offset=0, limit=100)
|
||||
if dirent_more:
|
||||
@@ -209,6 +210,7 @@ def render_repo(request, repo):
|
||||
return render_to_response('repo.html', {
|
||||
'repo': repo,
|
||||
'user_perm': user_perm,
|
||||
'repo_owner': repo_owner,
|
||||
'is_repo_owner': is_repo_owner,
|
||||
'current_commit': head_commit,
|
||||
'password_set': True,
|
||||
|
Reference in New Issue
Block a user