1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-16 15:19:06 +00:00

Clean public library related code

This commit is contained in:
Daniel Pan
2016-03-09 20:54:33 +08:00
parent b75e8e8d9c
commit f0e40d9120
7 changed files with 16 additions and 188 deletions

View File

@@ -212,8 +212,6 @@
app["pageOptions"] = {
site_root: "{{ SITE_ROOT }}",
csrfToken: "{{ csrf_token }}",
reposUrl: "{% url 'api2-repos' %}",
pubReposUrl: "{% url 'api2-pub-repos' %}",
groups: (function () {
var groups = [];
{% for group in request.user.joined_groups %}

View File

@@ -178,10 +178,6 @@ urlpatterns = patterns(
url(r'^ajax/unset-inner-pub-repo/(?P<repo_id>[-0-9a-f]{36})/$', ajax_unset_inner_pub_repo, name='ajax_unset_inner_pub_repo'),
### Organizaion ###
url(r'^pubinfo/libraries/$', pubrepo, name='pubrepo'),
url(r'^ajax/publicrepo/create/$', public_repo_create, name='public_repo_create'),
url(r'^pubinfo/users/$', pubuser, name='pubuser'),
### Apps ###
(r'^api2/', include('seahub.api2.urls')),

View File

@@ -1232,125 +1232,6 @@ def list_inner_pub_repos(request):
return []
@login_required
def pubrepo(request):
"""
Show public libraries.
"""
if not request.user.permissions.can_view_org():
raise Http404
username = request.user.username
if request.cloud_mode and request.user.org is not None:
org_id = request.user.org.org_id
public_repos = seaserv.list_org_inner_pub_repos(org_id, username)
for r in public_repos:
if r.user == username:
r.share_from_me = True
return render_to_response('organizations/pubrepo.html', {
'public_repos': public_repos,
'create_shared_repo': True,
}, context_instance=RequestContext(request))
if not request.cloud_mode:
public_repos = seaserv.list_inner_pub_repos(username)
for r in public_repos:
if r.user == username:
r.share_from_me = True
return render_to_response('pubrepo.html', {
'public_repos': public_repos,
'create_shared_repo': True,
}, context_instance=RequestContext(request))
raise Http404
def get_pub_users(request, start, limit):
if is_org_context(request):
url_prefix = request.user.org.url_prefix
users_plus_one = seaserv.get_org_users_by_url_prefix(url_prefix,
start, limit)
elif request.cloud_mode:
raise Http404 # no pubuser in cloud mode
else:
users_plus_one = seaserv.get_emailusers('DB', start,
limit, is_active=True)
return users_plus_one
def count_pub_users(request):
if is_org_context(request):
url_prefix = request.user.org.url_prefix
# TODO: need a new api to count org users.
org_users = seaserv.get_org_users_by_url_prefix(url_prefix, -1, -1)
return len(org_users)
elif request.cloud_mode:
return 0
else:
return seaserv.ccnet_threaded_rpc.count_emailusers('DB')
@login_required
def pubuser(request):
"""
Show public users in database or ldap depending on request arg ``ldap``.
"""
if not request.user.permissions.can_view_org():
raise Http404
# Make sure page request is an int. If not, deliver first page.
try:
current_page = int(request.GET.get('page', '1'))
except ValueError:
current_page = 1
per_page = 20 # show 20 users per-page
# Show LDAP users or Database users.
have_ldap_user = False
if len(seaserv.get_emailusers('LDAPImport', 0, 1, is_active=True)) > 0:
have_ldap_user = True
try:
ldap = True if int(request.GET.get('ldap', 0)) == 1 else False
except ValueError:
ldap = False
if ldap and have_ldap_user:
# return ldap imported active users
users_plus_one = seaserv.get_emailusers('LDAPImport',
per_page * (current_page - 1),
per_page + 1,
is_active=True)
else:
users_plus_one = get_pub_users(request, per_page * (current_page - 1),
per_page + 1)
has_prev = False if current_page == 1 else True
has_next = True if len(users_plus_one) == per_page + 1 else False
if ldap and have_ldap_user:
# return the number of ldap imported active users
emailusers_count = seaserv.ccnet_threaded_rpc.count_emailusers('LDAP')
else:
emailusers_count = count_pub_users(request)
num_pages = int(ceil(emailusers_count / float(per_page)))
page_range = get_page_range(current_page, num_pages)
show_paginator = True if len(page_range) > 1 else False
users = users_plus_one[:per_page]
return render_to_response('pubuser.html', {
'users': users,
'current_page': current_page,
'has_prev': has_prev,
'has_next': has_next,
'page_range': page_range,
'show_paginator': show_paginator,
'have_ldap_user': have_ldap_user,
'ldap': ldap,
}, context_instance=RequestContext(request))
@login_required_ajax
def repo_set_password(request):
content_type = 'application/json; charset=utf-8'

View File

@@ -1817,63 +1817,6 @@ def _create_repo_common(request, repo_name, repo_desc, encryption,
return repo_id
@login_required_ajax
def public_repo_create(request):
'''
Handle ajax post to create public repo.
'''
if request.method != 'POST':
return Http404
result = {}
content_type = 'application/json; charset=utf-8'
if not request.user.permissions.can_add_repo():
result['error'] = _(u"You do not have permission to create library")
return HttpResponse(json.dumps(result), status=403,
content_type=content_type)
form = SharedRepoCreateForm(request.POST)
if not form.is_valid():
result['error'] = str(form.errors.values()[0])
return HttpResponseBadRequest(json.dumps(result),
content_type=content_type)
repo_name = form.cleaned_data['repo_name']
repo_desc = form.cleaned_data['repo_desc']
permission = form.cleaned_data['permission']
encryption = int(form.cleaned_data['encryption'])
uuid = form.cleaned_data['uuid']
magic_str = form.cleaned_data['magic_str']
encrypted_file_key = form.cleaned_data['encrypted_file_key']
repo_id = _create_repo_common(request, repo_name, repo_desc, encryption,
uuid, magic_str, encrypted_file_key)
if repo_id is None:
result['error'] = _(u'Internal Server Error')
return HttpResponse(json.dumps(result), status=500,
content_type=content_type)
org_id = -1
if is_org_context(request):
org_id = request.user.org.org_id
seaserv.seafserv_threaded_rpc.set_org_inner_pub_repo(
org_id, repo_id, permission)
else:
seafile_api.add_inner_pub_repo(repo_id, permission)
username = request.user.username
repo_created.send(sender=None,
org_id=org_id,
creator=username,
repo_id=repo_id,
repo_name=repo_name)
result['success'] = True
return HttpResponse(json.dumps(result), content_type=content_type)
@login_required_ajax
def events(request):
events_count = 15

View File

@@ -1,15 +1,19 @@
define([
'underscore',
'backbone',
'common',
'app/models/pub-repo'
], function(_, Backbone, PubRepo) {
], function(_, Backbone, Common, PubRepo) {
'use strict';
var PubRepoCollection = Backbone.Collection.extend({
model: PubRepo,
url: app.pageOptions.pubReposUrl,
comparator: -'mtime'
comparator: -'mtime',
url: function() {
return Common.getUrl({name: 'pub_repos'});
}
});

View File

@@ -1,15 +1,19 @@
define([
'underscore',
'backbone',
'common',
'app/models/repo'
], function(_, Backbone, Repo) {
], function(_, Backbone, Common, Repo) {
'use strict';
var RepoCollection = Backbone.Collection.extend({
model: Repo,
url: app.pageOptions.reposUrl,
type: 'mine',
url: function() {
return Common.getUrl({name: 'repos'});
},
initialize: function(options) {
//console.log('init RepoCollection');
if (options) {
@@ -20,7 +24,7 @@ define([
fetch: function(options) {
// override default fetch url
options = options ? _.clone(options) : {};
options.url = this.url + '?type=' + this.type;
options.url = this.url() + '?type=' + this.type;
//call Backbone's fetch
return Backbone.Collection.prototype.fetch.call(this, options);

View File

@@ -89,6 +89,8 @@ define([
case 'get_dirents': return siteRoot + 'ajax/repo/' + options.repo_id + '/dirents/';
// Repos
case 'repos': return siteRoot + 'api2/repos/';
case 'pub_repos': return siteRoot + 'api2/repos/public/';
case 'repo_del': return siteRoot + 'ajax/repo/' + options.repo_id + '/remove/';
case 'sub_repo': return siteRoot + 'ajax/repo/' + options.repo_id + '/dir/sub_repo/';
case 'get_my_unenc_repos': return siteRoot + 'ajax/my-unenc-repos/';