1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-25 14:50:29 +00:00

Enable user to choose default library

This commit is contained in:
zhengxie
2013-12-05 11:17:51 +08:00
parent b36fdf55f8
commit b047a83a58
3 changed files with 79 additions and 3 deletions

View File

@@ -57,11 +57,33 @@
</form>
</div>
<div class="setting-item">
<h3>{% trans "Default Library Setting" %}</h3>
{% if default_repo %}
<p>Your default library is <a href="{% url 'repo' default_repo.id %}">{{default_repo.name}}</a>.</p>
{% else %}
<p>You do not have a default library.</p>
{% endif %}
<button id="default-lib">{% trans "Choose Default Library" %}</button>
</div>
<div class="setting-item">
<h3>{% trans "Delete Account" %}</h3>
<p>{% trans "This operation will not be reverted. Please think twice!" %}</p>
<button id="account-delete-btn" data-url="{% url 'delete_user_account' request.user.username %}">{% trans "Delete" %}</button>
</div>
<form id="default-lib-form" action="{% url 'default_repo' %}" method="post" class="file-choose-form hide">{% csrf_token %}
<h3>{% trans "Choose default library:" %}</h3>
<div class="dir-tree-cont">
<div id="repos-dirs"></div>
</div>
<input type="hidden" name="dst_repo" value="" />
<p class="error hide">{% trans "Please click and choose a library."%}</p>
<input type="submit" value="{% trans "Submit"%}" class="submit" />
<button class="simplemodal-close">{% trans "Cancel"%}</button>
</form>
{% endblock %}
{% block extra_script %}
@@ -72,5 +94,26 @@ addConfirmTo($('#account-delete-btn'), {
'title' : '{% trans "Delete Account" %}',
'con' : '{% trans "Really want to delete your account?" %}'
});
var all_repos = [];
{% for a_repo in owned_repos %}
all_repos.push({
'data': '{{ a_repo.props.name }}',
'attr': {'repo_id': '{{ a_repo.props.id }}', 'root_node': true},
});
{% endfor %}
$('#default-lib').click(function() {
var form = $('#default-lib-form'),
file_tree = new FileTree();
form.modal({appendTo:'#main', autoResize:true, focus:false});
file_tree.renderDirTree($('#repos-dirs').data('site_root', '{{SITE_ROOT}}'), form, all_repos);
});
$('#default-lib-form').submit(function() {
var dst_repo = $('[name="dst_repo"]', $(this)).val();
if (!$.trim(dst_repo)) {
$('.error', form).removeClass('hide');
return false;
}
});
</script>
{% endblock %}

View File

@@ -3,8 +3,10 @@ from django.conf.urls.defaults import *
urlpatterns = patterns('seahub.profile.views',
# url(r'^list_user/$', 'list_userids', name="list_userids"),
url(r'^$', 'edit_profile', name="edit_profile"),
url(r'^(?P<username_or_id>[^/]+)/$', 'user_profile', name="user_profile"),
url(r'^(?P<user>[^/]+)/get/$', 'get_user_profile', name="get_user_profile"),
url(r'^(?P<user>[^/]+)/delete/$', 'delete_user_account', name="delete_user_account"),
url(r'^default-repo/$', 'default_repo', name="default_repo"),
url(r'^(?P<username_or_id>[^/]+)/$', 'user_profile', name="user_profile"),
# url(r'^logout/$', 'logout_relay', name="logout_relay"),
)

View File

@@ -8,7 +8,8 @@ from django.template import Context, RequestContext
from django.contrib import messages
from django.utils.translation import ugettext as _
from seaserv import ccnet_rpc, ccnet_threaded_rpc, get_binding_peerids
from seaserv import ccnet_rpc, ccnet_threaded_rpc, get_binding_peerids, \
seafile_api
from pysearpc import SearpcError
from forms import ProfileForm
@@ -67,10 +68,19 @@ def edit_profile(request):
sub_lib_enabled = UserOptions.objects.is_sub_lib_enabled(username)
default_repo_id = UserOptions.objects.get_default_repo(username)
if default_repo_id:
default_repo = seafile_api.get_repo(default_repo_id)
else:
default_repo = None
owned_repos = seafile_api.get_owned_repo_list(username)
return render_to_response('profile/set_profile.html', {
'form': form,
'server_crypto': server_crypto,
"sub_lib_enabled": sub_lib_enabled,
'default_repo': default_repo,
'owned_repos': owned_repos,
}, context_instance=RequestContext(request))
def user_profile(request, username_or_id):
@@ -164,3 +174,24 @@ def delete_user_account(request, user):
user = User.objects.get(email=user)
user.delete()
return HttpResponseRedirect(settings.LOGIN_URL)
@login_required
def default_repo(request):
"""Handle post request to create default repo for user.
"""
if request.method != 'POST':
raise Http404
repo_id = request.POST.get('dst_repo', '')
referer = request.META.get('HTTP_REFERER', None)
next = settings.SITE_ROOT if referer is None else referer
repo = seafile_api.get_repo(repo_id)
if repo is None:
messages.error(request, _('Failed to set default library.'))
return HttpResponseRedirect(next)
username = request.user.username
UserOptions.objects.set_default_repo(username, repo.id)
messages.success(request, _('Successfully set "%s" as your default library.') % repo.name)
return HttpResponseRedirect(next)