diff --git a/seahub/profile/templates/profile/set_profile.html b/seahub/profile/templates/profile/set_profile.html
index 58ab67b5d9..8a4397e346 100644
--- a/seahub/profile/templates/profile/set_profile.html
+++ b/seahub/profile/templates/profile/set_profile.html
@@ -57,11 +57,33 @@
+
+
{% trans "Default Library Setting" %}
+ {% if default_repo %}
+
Your default library is {{default_repo.name}}.
+ {% else %}
+
You do not have a default library.
+ {% endif %}
+
+
+
{% trans "Delete Account" %}
{% trans "This operation will not be reverted. Please think twice!" %}
+
+
+
{% 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;
+ }
+});
{% endblock %}
diff --git a/seahub/profile/urls.py b/seahub/profile/urls.py
index c89e359117..b75a1c58c4 100644
--- a/seahub/profile/urls.py
+++ b/seahub/profile/urls.py
@@ -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[^/]+)/$', 'user_profile', name="user_profile"),
url(r'^(?P[^/]+)/get/$', 'get_user_profile', name="get_user_profile"),
url(r'^(?P[^/]+)/delete/$', 'delete_user_account', name="delete_user_account"),
+ url(r'^default-repo/$', 'default_repo', name="default_repo"),
+
+ url(r'^(?P[^/]+)/$', 'user_profile', name="user_profile"),
# url(r'^logout/$', 'logout_relay', name="logout_relay"),
)
diff --git a/seahub/profile/views.py b/seahub/profile/views.py
index 6691bff02b..0e2addafb7 100644
--- a/seahub/profile/views.py
+++ b/seahub/profile/views.py
@@ -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
@@ -66,11 +67,20 @@ def edit_profile(request):
server_crypto = False
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)