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!" %}

+ +
{% csrf_token %} +

{% trans "Choose default library:" %}

+
+
+
+ +

{% trans "Please click and choose a library."%}

+ + +
+ {% 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)