mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-24 21:07:17 +00:00
create a shared repo in group page
This commit is contained in:
86
group/templates/group/create_group_repo_js.html
Normal file
86
group/templates/group/create_group_repo_js.html
Normal file
@@ -0,0 +1,86 @@
|
||||
//repo-create-form
|
||||
$('#repo-create')
|
||||
.click(function() {
|
||||
$('#repo-create-form').modal({appendTo: '#main', autoResize: true});
|
||||
})
|
||||
.hover(
|
||||
function() {
|
||||
$(this).css({'background-color': '#fff', 'cursor': 'pointer'});
|
||||
},
|
||||
function() {
|
||||
$(this).css('background-color', '#f5f5f5');
|
||||
}
|
||||
);
|
||||
$('#encrypt-switch').click(function () {
|
||||
if ($(this).attr('checked')) {
|
||||
$('#repo-create-form input[type="password"]').attr('disabled', false).removeClass('input-disabled');
|
||||
} else {
|
||||
$('#repo-create-form input[type="password"]').attr('disabled', true).addClass('input-disabled');
|
||||
}
|
||||
});
|
||||
$('#repo-create-submit').click(function() {
|
||||
var passwd = $('#repo-create-form input[name="passwd"]'),
|
||||
passwd_again = $('#repo-create-form input[name="passwd_again"]');
|
||||
|
||||
if (!$('#repo-name').val()) {
|
||||
apply_form_error('repo-create-form', '目录名不能为空。');
|
||||
return false;
|
||||
}
|
||||
if (!$('#repo-desc').val()) {
|
||||
apply_form_error('repo-create-form', '描述不能为空。');
|
||||
return false;
|
||||
}
|
||||
if ($('#encrypt-switch').attr('checked')) {
|
||||
if (!passwd.val()) {
|
||||
apply_form_error('repo-create-form', '密码不能为空。');
|
||||
return false;
|
||||
}
|
||||
if (!passwd_again.val()) {
|
||||
apply_form_error('repo-create-form', '请确认密码。');
|
||||
return false;
|
||||
}
|
||||
if (passwd.val().length < 3) {
|
||||
apply_form_error('repo-create-form', '密码太短。');
|
||||
return false;
|
||||
}
|
||||
if (passwd.val().length > 15) {
|
||||
apply_form_error('repo-create-form', '密码太长。');
|
||||
return false;
|
||||
}
|
||||
if (passwd.val() != passwd_again.val()) {
|
||||
apply_form_error('repo-create-form', '两次输入的密码不一致。');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: '{{ SITE_ROOT }}group/{{group_id}}/create-repo/',
|
||||
type: 'POST',
|
||||
dataType: 'json',
|
||||
cache: 'false',
|
||||
beforeSend: prepareCSRFToken,
|
||||
data: {
|
||||
'repo_name': $('#repo-name').val(),
|
||||
'repo_desc': $('#repo-desc').val(),
|
||||
'encryption': $('#encrypt-switch').attr('checked') ? 1 : 0,
|
||||
'passwd': passwd.val(),
|
||||
'passwd_again': passwd_again.val(),
|
||||
},
|
||||
success: function(data) {
|
||||
console.log(data);
|
||||
if (data['success']) {
|
||||
location.reload(true);
|
||||
} else {
|
||||
apply_form_error('repo-create-form', data['error']);
|
||||
}
|
||||
},
|
||||
error: function(data, textStatus, jqXHR) {
|
||||
var errors = $.parseJSON(data.responseText);
|
||||
$.each(errors, function(index, value) {
|
||||
apply_form_error('repo-create-form', value[0]);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
@@ -49,6 +49,7 @@
|
||||
|
||||
<div class="main fleft">
|
||||
<h3>小组里共享的同步目录</h3>
|
||||
<button id="repo-create">新建共享目录</button>
|
||||
{% if repos %}
|
||||
<table>
|
||||
<tr>
|
||||
@@ -180,6 +181,8 @@
|
||||
|
||||
</textarea>
|
||||
|
||||
{% include "snippets/repo_create_form.html" %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block extra_script %}
|
||||
@@ -251,5 +254,6 @@ $('#user-profile').hover(
|
||||
}
|
||||
);
|
||||
{% include 'group/msg_reply_js.html' %}
|
||||
{% include 'group/create_group_repo_js.html' %}
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
@@ -1,13 +1,15 @@
|
||||
from django.conf.urls.defaults import *
|
||||
|
||||
from views import group_list, group_info, group_member_operations, \
|
||||
group_members, msg_reply, msg_reply_new, group_recommend
|
||||
group_members, msg_reply, msg_reply_new, group_recommend, \
|
||||
create_group_repo
|
||||
|
||||
urlpatterns = patterns('',
|
||||
url(r'^(?P<group_id>[\d]+)/$', group_info, name='group_info'),
|
||||
url(r'^reply/(?P<msg_id>[\d]+)/$', msg_reply, name='msg_reply'),
|
||||
url(r'^reply/new/$', msg_reply_new, name='msg_reply_new'),
|
||||
url(r'^(?P<group_id>[\d]+)/members/$', group_members, name='group_members'),
|
||||
url(r'^(?P<group_id>[\d]+)/create-repo/$', create_group_repo, name='create_group_repo'),
|
||||
(r'^(?P<group_id>[\d]+)/member/(?P<user_name>[^/]+)/$', group_member_operations),
|
||||
url(r'^recommend/$', group_recommend, name='group_recommend'),
|
||||
)
|
||||
|
@@ -27,6 +27,7 @@ from seahub.shortcuts import get_first_object_or_none
|
||||
from seahub.utils import render_error, render_permission_error, \
|
||||
validate_group_name, string2list
|
||||
from seahub.views import is_registered_user
|
||||
from seahub.forms import RepoCreateForm
|
||||
|
||||
@login_required
|
||||
def group_list(request):
|
||||
@@ -595,3 +596,58 @@ def group_recommend(request):
|
||||
# TODO: need more clear error message
|
||||
messages.add_message(request, messages.ERROR, '推荐失败')
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
@login_required
|
||||
def create_group_repo(request, group_id):
|
||||
"""Create a repo and share it to current group"""
|
||||
|
||||
content_type = 'application/json; charset=utf-8'
|
||||
|
||||
def json_error(err_msg):
|
||||
result = {'error': [err_msg]}
|
||||
return HttpResponseBadRequest(json.dumps(result),
|
||||
content_type=content_type)
|
||||
group_id = int(group_id)
|
||||
if not get_group(group_id):
|
||||
return json_error(u'共享失败:小组不存在')
|
||||
|
||||
# Check whether user belong to the group
|
||||
groups = ccnet_threaded_rpc.get_groups(request.user.username)
|
||||
for group in groups:
|
||||
if group.props.id == group_id:
|
||||
break
|
||||
else:
|
||||
return json_error(u"共享失败:未加入该小组")
|
||||
|
||||
form = RepoCreateForm(request.POST)
|
||||
if not form.is_valid():
|
||||
return json_error(form.errors)
|
||||
else:
|
||||
repo_name = form.cleaned_data['repo_name']
|
||||
repo_desc = form.cleaned_data['repo_desc']
|
||||
encrypted = form.cleaned_data['encryption']
|
||||
passwd = form.cleaned_data['passwd']
|
||||
user = request.user.username
|
||||
try:
|
||||
repo_id = seafserv_threaded_rpc.create_repo(repo_name, repo_desc,
|
||||
user, passwd)
|
||||
except:
|
||||
repo_id = None
|
||||
if not repo_id:
|
||||
return json_error(u"创建目录失败")
|
||||
|
||||
try:
|
||||
status = seafserv_threaded_rpc.group_share_repo(repo_id, group_id, user, 'rw')
|
||||
except SearpcError, e:
|
||||
# if share failed, remove the newly created repo
|
||||
seafserv_threaded_rpc.remove_repo(repo_id)
|
||||
|
||||
return json_error(u'共享失败:内部错误')
|
||||
else:
|
||||
if status != 0:
|
||||
seafserv_threaded_rpc.remove_repo(repo_id)
|
||||
return json_error(u'共享失败:内部错误')
|
||||
else:
|
||||
result = {'success': True}
|
||||
return HttpResponse(json.dumps(result),
|
||||
content_type=content_type)
|
||||
|
Reference in New Issue
Block a user