mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-05 00:43:53 +00:00
Enable change repo name and desc.
This commit is contained in:
@@ -107,6 +107,8 @@ def translate_commit_desc(value):
|
||||
return value.replace('Reverted file to status at', _('Reverted file to status at'))
|
||||
elif value.startswith('Recovered deleted directory'):
|
||||
return value.replace('Recovered deleted directory', _('Recovered deleted directory'))
|
||||
elif value.startswith('Changed library'):
|
||||
return value.replace('Changed library name or description', _('Changed library name or description'))
|
||||
elif value.startswith('Merged') or value.startswith('Auto merge'):
|
||||
return _('Auto merge by seafile system')
|
||||
else:
|
||||
|
2
forms.py
2
forms.py
@@ -219,5 +219,7 @@ class RepoSettingForm(forms.Form):
|
||||
Form for saving repo settings.
|
||||
"""
|
||||
repo_id = forms.CharField(error_messages={'required': _('Repo id is required')})
|
||||
repo_name = forms.CharField(error_messages={'required': _('Repo name is required')})
|
||||
repo_desc = forms.CharField(error_messages={'required': _('Repo description is required')})
|
||||
days = forms.IntegerField(error_messages={'required': _('Days can\'t be empty'),
|
||||
'invalid': _('Please enter a number')})
|
||||
|
@@ -1098,6 +1098,9 @@ textarea:-moz-placeholder {/* for FF */
|
||||
#recycle-btn {
|
||||
background-position:3px -29px;
|
||||
}
|
||||
#repo-setting-form input[name^="repo"] {
|
||||
width:100%;
|
||||
}
|
||||
#repo-setting-btn {
|
||||
background-position:3px -53px;
|
||||
}
|
||||
|
@@ -257,6 +257,10 @@
|
||||
{% if is_repo_owner or request.user.is_staff %}
|
||||
<form id="repo-setting-form" action="" method="post" class="simple-input-popup hide">{% csrf_token %}
|
||||
<h3>{% trans "Library Settings" %}</h3>
|
||||
<label>{% trans "Name" %}</label><br />
|
||||
<input type="text" name="repo_name" value="{{ repo.name }}" /><br />
|
||||
<label>{% trans "Description" %}</label></br />
|
||||
<input type="text" name="repo_desc" value="{{ repo.desc }}" /><br />
|
||||
<label>{% trans "History" %}</label><br />
|
||||
<input type="hidden" name="repo_id" value="{{ repo.id }}" />
|
||||
<input type="radio" name="history" value="full_history" {% if history_limit < 0 %}checked="checked"{% endif %} /> {% trans "Keep full history" %}<br />
|
||||
@@ -407,6 +411,8 @@ $('#repo-setting-form').submit(function() {
|
||||
beforeSend: prepareCSRFToken,
|
||||
data: {
|
||||
'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(),
|
||||
'days': days
|
||||
},
|
||||
success: function(data) {
|
||||
|
@@ -28,10 +28,8 @@ function listCommitDetails(url, t) {
|
||||
show(data['newdir'], '{% trans "New directories" %}');
|
||||
show(data['deldir'], '{% trans "Deleted directories" %}');
|
||||
if (!con) {
|
||||
if (data['init_commit']) {
|
||||
if (data['cmt_desc']) {
|
||||
con = '<p>' + data['cmt_desc'] + '</p>';
|
||||
} else {
|
||||
con = '<p>{% trans "No conflict in the merge." %}</p>';
|
||||
}
|
||||
}
|
||||
$('#ls-ch').css('text-align','left').html(heading + time + con);
|
||||
|
@@ -19,7 +19,7 @@ from service import get_repos, get_repo, get_commits, get_branches, remove_repo,
|
||||
list_personal_repos_by_owner, get_repo_token_nonnull, get_repo_owner, \
|
||||
server_repo_size, get_file_id_by_path, get_commit, set_repo_history_limit,\
|
||||
get_repo_history_limit, list_inner_pub_repos_by_owner, unset_inner_pub_repo,\
|
||||
count_inner_pub_repos
|
||||
count_inner_pub_repos, edit_repo
|
||||
|
||||
from service import get_binding_peerids, is_valid_filename, check_permission,\
|
||||
is_passwd_set
|
||||
|
@@ -362,6 +362,14 @@ def get_repos():
|
||||
def get_repo(repo_id):
|
||||
return seafserv_threaded_rpc.get_repo(repo_id)
|
||||
|
||||
def edit_repo(repo_id, name, desc, user):
|
||||
try:
|
||||
ret = seafserv_threaded_rpc.edit_repo(repo_id, name, desc, user)
|
||||
except SearpcError, e:
|
||||
print str(e)
|
||||
ret = -1
|
||||
return True if ret == 0 else False
|
||||
|
||||
def remove_repo(repo_id):
|
||||
seafserv_threaded_rpc.remove_repo(repo_id)
|
||||
|
||||
|
78
views.py
78
views.py
@@ -39,7 +39,7 @@ from seaserv import ccnet_rpc, ccnet_threaded_rpc, get_repos, get_emailusers, \
|
||||
get_group, get_shared_groups_by_repo, is_group_user, check_permission, \
|
||||
list_personal_shared_repos, is_org_group, get_org_id_by_group, is_org_repo,\
|
||||
list_inner_pub_repos, get_org_groups_by_repo, is_org_repo_owner, \
|
||||
get_org_repo_owner, is_passwd_set, get_file_size, check_quota, \
|
||||
get_org_repo_owner, is_passwd_set, get_file_size, check_quota, edit_repo,\
|
||||
get_related_users_by_repo, get_related_users_by_org_repo, HtmlDiff, \
|
||||
get_session_info, get_group_repoids, get_repo_owner, get_file_id_by_path, \
|
||||
get_repo_history_limit, set_repo_history_limit, MAX_UPLOAD_FILE_SIZE, \
|
||||
@@ -555,24 +555,48 @@ def repo_recycle_view(request, repo_id):
|
||||
@login_required
|
||||
@ctx_switch_required
|
||||
def repo_save_settings(request):
|
||||
if request.method == 'POST':
|
||||
content_type = 'application/json; charset=utf-8'
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
form = RepoSettingForm(request.POST)
|
||||
if form.is_valid():
|
||||
repo_id = form.cleaned_data['repo_id']
|
||||
days = form.cleaned_data['days']
|
||||
username = request.user.username
|
||||
content_type = 'application/json; charset=utf-8'
|
||||
|
||||
res = set_repo_history_limit(repo_id, days)
|
||||
if res == 0:
|
||||
messages.success(request, _(u'Settings saved.'))
|
||||
return HttpResponse(json.dumps({'success': True}), content_type=content_type)
|
||||
else:
|
||||
return HttpResponse(json.dumps({'error': _(u'Failed to save settings on server')}),
|
||||
status=400, content_type=content_type)
|
||||
form = RepoSettingForm(request.POST)
|
||||
if form.is_valid():
|
||||
repo_id = form.cleaned_data['repo_id']
|
||||
if request.user.org:
|
||||
is_owner = True if is_org_repo_owner(
|
||||
request.user.org['org_id'], repo_id, username) else False
|
||||
else:
|
||||
return HttpResponse(json.dumps({'error': str(form.errors.values()[0])}),
|
||||
status=400, content_type=content_type)
|
||||
is_owner = True if is_repo_owner(username, repo_id) else False
|
||||
if not is_owner:
|
||||
err_msg = _(u'You do not have permission to perform this action.')
|
||||
return HttpResponse(json.dumps({'error': err_msg}),
|
||||
status=403, content_type=content_type)
|
||||
|
||||
repo_name = form.cleaned_data['repo_name']
|
||||
repo_desc = form.cleaned_data['repo_desc']
|
||||
days = form.cleaned_data['days']
|
||||
|
||||
if edit_repo(repo_id, repo_name, repo_desc, username):
|
||||
return HttpResponse(json.dumps({'success': True}),
|
||||
content_type=content_type)
|
||||
else:
|
||||
err_msg = _(u'Failed to edit repo information.')
|
||||
return HttpResponse(json.dumps({'error': err_msg}),
|
||||
status=500, content_type=content_type)
|
||||
|
||||
res = set_repo_history_limit(repo_id, days)
|
||||
if res == 0:
|
||||
messages.success(request, _(u'Settings saved.'))
|
||||
return HttpResponse(json.dumps({'success': True}),
|
||||
content_type=content_type)
|
||||
else:
|
||||
return HttpResponse(json.dumps({'error': _(u'Failed to save settings on server')}),
|
||||
status=400, content_type=content_type)
|
||||
else:
|
||||
return HttpResponse(json.dumps({'error': str(form.errors.values()[0])}),
|
||||
status=400, content_type=content_type)
|
||||
|
||||
def upload_error_msg (code):
|
||||
err_msg = _(u'Internal Server Error')
|
||||
@@ -854,31 +878,31 @@ def repo_history_changes(request, repo_id):
|
||||
content_type = 'application/json; charset=utf-8'
|
||||
|
||||
if not access_to_repo(request, repo_id, ''):
|
||||
return HttpResponse(json.dumps(changes),
|
||||
content_type=content_type)
|
||||
return HttpResponse(json.dumps(changes), content_type=content_type)
|
||||
|
||||
repo = get_repo(repo_id)
|
||||
if not repo:
|
||||
return HttpResponse(json.dumps(changes),
|
||||
content_type=content_type)
|
||||
return HttpResponse(json.dumps(changes), content_type=content_type)
|
||||
|
||||
if repo.encrypted and not is_passwd_set(repo_id, request.user.username):
|
||||
return HttpResponse(json.dumps(changes),
|
||||
content_type=content_type)
|
||||
return HttpResponse(json.dumps(changes), content_type=content_type)
|
||||
|
||||
commit_id = request.GET.get('commit_id', '')
|
||||
if not commit_id:
|
||||
return HttpResponse(json.dumps(changes),
|
||||
content_type=content_type)
|
||||
return HttpResponse(json.dumps(changes), content_type=content_type)
|
||||
|
||||
changes = get_diff(repo_id, '', commit_id)
|
||||
|
||||
if get_commit(commit_id).parent_id is None:
|
||||
c = get_commit(commit_id)
|
||||
if c.parent_id is None:
|
||||
# A commit is a first commit only if it's parent id is None.
|
||||
changes['init_commit'] = True
|
||||
changes['cmt_desc'] = repo.desc
|
||||
elif c.second_parent_id is None:
|
||||
# Normal commit only has one parent.
|
||||
changes['cmt_desc'] = c.desc
|
||||
else:
|
||||
changes['init_commit'] = False
|
||||
# A commit is a merge only if it has two parents.
|
||||
changes['cmt_desc'] = _('No conflict in the merge.')
|
||||
|
||||
return HttpResponse(json.dumps(changes), content_type=content_type)
|
||||
|
||||
|
Reference in New Issue
Block a user