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:
@@ -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 %}
|
||||
|
@@ -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"),
|
||||
)
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user