mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-01 07:01:12 +00:00
[groups] use new collection url
This commit is contained in:
@@ -81,7 +81,6 @@ urlpatterns = patterns('',
|
|||||||
url(r'^groups/(?P<group_id>\d+)/changes/$', GroupChanges.as_view(), name="api2-group-changes"),
|
url(r'^groups/(?P<group_id>\d+)/changes/$', GroupChanges.as_view(), name="api2-group-changes"),
|
||||||
url(r'^groups/(?P<group_id>\d+)/repos/$', GroupRepos.as_view(), name="api2-grouprepos"),
|
url(r'^groups/(?P<group_id>\d+)/repos/$', GroupRepos.as_view(), name="api2-grouprepos"),
|
||||||
url(r'^groups/(?P<group_id>\d+)/repos/(?P<repo_id>[-0-9a-f]{36})/$', GroupRepo.as_view(), name="api2-grouprepo"),
|
url(r'^groups/(?P<group_id>\d+)/repos/(?P<repo_id>[-0-9a-f]{36})/$', GroupRepo.as_view(), name="api2-grouprepo"),
|
||||||
url(r'^group_list/$', GroupList.as_view()),
|
|
||||||
|
|
||||||
url(r'^html/events/$', EventsHtml.as_view()),
|
url(r'^html/events/$', EventsHtml.as_view()),
|
||||||
url(r'^html/more_events/$', AjaxEvents.as_view(), name="more_events"),
|
url(r'^html/more_events/$', AjaxEvents.as_view(), name="more_events"),
|
||||||
|
@@ -3680,109 +3680,6 @@ class GroupRepo(APIView):
|
|||||||
return HttpResponse(json.dumps({'success': True}), status=200,
|
return HttpResponse(json.dumps({'success': True}), status=200,
|
||||||
content_type=json_content_type)
|
content_type=json_content_type)
|
||||||
|
|
||||||
class GroupList(APIView):
|
|
||||||
authentication_classes = (TokenAuthentication, SessionAuthentication)
|
|
||||||
permission_classes = (IsAuthenticated,)
|
|
||||||
throttle_classes = (UserRateThrottle, )
|
|
||||||
|
|
||||||
def post(self, request):
|
|
||||||
result = {}
|
|
||||||
content_type = 'application/json; charset=utf-8'
|
|
||||||
username = request.user.username
|
|
||||||
|
|
||||||
if not request.user.permissions.can_add_group():
|
|
||||||
return api_error(status.HTTP_403_FORBIDDEN,
|
|
||||||
'You do not have permission to create group.')
|
|
||||||
|
|
||||||
# check plan
|
|
||||||
num_of_groups = getattr(request.user, 'num_of_groups', -1)
|
|
||||||
if num_of_groups > 0:
|
|
||||||
current_groups = len(get_personal_groups_by_user(username))
|
|
||||||
if current_groups > num_of_groups:
|
|
||||||
result['error'] = 'You can only create %d groups.' % num_of_groups
|
|
||||||
return HttpResponse(json.dumps(result), status=500,
|
|
||||||
content_type=content_type)
|
|
||||||
|
|
||||||
group_name = request.DATA.get('group_name', None)
|
|
||||||
group_name = group_name.strip()
|
|
||||||
if not validate_group_name(group_name):
|
|
||||||
result['error'] = 'Failed to rename group, group name can only contain letters, numbers, blank, hyphen or underscore.'
|
|
||||||
return HttpResponse(json.dumps(result), status=403,
|
|
||||||
content_type=content_type)
|
|
||||||
|
|
||||||
# Check whether group name is duplicated.
|
|
||||||
if request.cloud_mode:
|
|
||||||
checked_groups = get_personal_groups_by_user(username)
|
|
||||||
else:
|
|
||||||
checked_groups = get_personal_groups(-1, -1)
|
|
||||||
for g in checked_groups:
|
|
||||||
if g.group_name == group_name:
|
|
||||||
result['error'] = 'There is already a group with that name.'
|
|
||||||
return HttpResponse(json.dumps(result), status=400,
|
|
||||||
content_type=content_type)
|
|
||||||
|
|
||||||
# Group name is valid, create that group.
|
|
||||||
try:
|
|
||||||
group_id = ccnet_threaded_rpc.create_group(group_name.encode('utf-8'),
|
|
||||||
username)
|
|
||||||
new_group = {
|
|
||||||
"id": group_id,
|
|
||||||
"name": group_name,
|
|
||||||
"is_staff": True,
|
|
||||||
"repos": [],
|
|
||||||
}
|
|
||||||
return HttpResponse(json.dumps(new_group), content_type=content_type)
|
|
||||||
except SearpcError, e:
|
|
||||||
result['error'] = e.msg
|
|
||||||
return HttpResponse(json.dumps(result), status=500,
|
|
||||||
content_type=content_type)
|
|
||||||
|
|
||||||
def get(self, request):
|
|
||||||
"""
|
|
||||||
List all groups.
|
|
||||||
"""
|
|
||||||
org_id = None
|
|
||||||
if is_org_context(request):
|
|
||||||
org_id = request.user.org.org_id
|
|
||||||
|
|
||||||
username = request.user.username
|
|
||||||
groups = get_groups_by_user(request)
|
|
||||||
group_list = []
|
|
||||||
|
|
||||||
for g in groups:
|
|
||||||
group = {
|
|
||||||
"id": g.id,
|
|
||||||
"name": g.group_name,
|
|
||||||
"is_staff": check_group_staff(g.id, username),
|
|
||||||
"repos": [],
|
|
||||||
}
|
|
||||||
|
|
||||||
if org_id:
|
|
||||||
repos = seafile_api.get_org_group_repos(org_id, g.id)
|
|
||||||
else:
|
|
||||||
repos = seafile_api.get_repos_by_group(g.id)
|
|
||||||
|
|
||||||
for r in repos:
|
|
||||||
repo = {
|
|
||||||
"id": r.id,
|
|
||||||
"name": r.name,
|
|
||||||
"desc": r.desc,
|
|
||||||
"size": r.size,
|
|
||||||
"size_formatted": filesizeformat(r.size),
|
|
||||||
"mtime": r.last_modified,
|
|
||||||
"mtime_relative": translate_seahub_time(r.last_modified),
|
|
||||||
"encrypted": r.encrypted,
|
|
||||||
"permission": r.permission,
|
|
||||||
"owner": r.user,
|
|
||||||
"owner_nickname": email2nickname(r.user),
|
|
||||||
"share_from_me": True if username == r.user else False,
|
|
||||||
}
|
|
||||||
group['repos'].append(repo)
|
|
||||||
|
|
||||||
group_list.append(group)
|
|
||||||
return HttpResponse(json.dumps(group_list), content_type=json_content_type)
|
|
||||||
|
|
||||||
|
|
||||||
def is_group_staff(group, user):
|
def is_group_staff(group, user):
|
||||||
if user.is_anonymous():
|
if user.is_anonymous():
|
||||||
return False
|
return False
|
||||||
|
@@ -31,7 +31,7 @@ define([
|
|||||||
return Common.compareTwoWord(a.name, b.name);
|
return Common.compareTwoWord(a.name, b.name);
|
||||||
});
|
});
|
||||||
var group_id = this.model.get('id'),
|
var group_id = this.model.get('id'),
|
||||||
is_staff = this.model.get('is_staff'),
|
is_staff = $.inArray(app.pageOptions.username, this.model.get('admins')) != -1 ? true : false,
|
||||||
$listContainer = this.$('tbody');
|
$listContainer = this.$('tbody');
|
||||||
var groupRepos = new GroupRepos();
|
var groupRepos = new GroupRepos();
|
||||||
groupRepos.setGroupID(group_id);
|
groupRepos.setGroupID(group_id);
|
||||||
|
@@ -60,6 +60,7 @@ define([
|
|||||||
var _this = this;
|
var _this = this;
|
||||||
this.groups.fetch({
|
this.groups.fetch({
|
||||||
cache: false,
|
cache: false,
|
||||||
|
data: {'with_repos': 1}, // list repos of every group
|
||||||
reset: true,
|
reset: true,
|
||||||
success: function (collection, response, opts) {
|
success: function (collection, response, opts) {
|
||||||
},
|
},
|
||||||
@@ -104,7 +105,7 @@ define([
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Common.disableButton($('[type="submit"]', $form));
|
Common.disableButton($('[type="submit"]', $form));
|
||||||
groups.create({'group_name': group_name}, {
|
groups.create({'group_name': group_name, 'repos':[]}, {
|
||||||
wait: true,
|
wait: true,
|
||||||
validate: true,
|
validate: true,
|
||||||
prepend: true, // show newly created group at the top
|
prepend: true, // show newly created group at the top
|
||||||
|
@@ -102,7 +102,7 @@ define([
|
|||||||
case 'get_unseen_notices_num': return siteRoot + 'ajax/unseen-notices-count/';
|
case 'get_unseen_notices_num': return siteRoot + 'ajax/unseen-notices-count/';
|
||||||
case 'set_notice_seen_by_id': return siteRoot + 'ajax/set_notice_seen_by_id/';
|
case 'set_notice_seen_by_id': return siteRoot + 'ajax/set_notice_seen_by_id/';
|
||||||
case 'repo_set_password': return siteRoot + 'repo/set_password/';
|
case 'repo_set_password': return siteRoot + 'repo/set_password/';
|
||||||
case 'groups': return siteRoot + 'api2/group_list/';
|
case 'groups': return siteRoot + 'api/v2.1/groups/';
|
||||||
case 'group_repos': return siteRoot + 'api2/groups/' + options.group_id + '/repos/';
|
case 'group_repos': return siteRoot + 'api2/groups/' + options.group_id + '/repos/';
|
||||||
case 'group_basic_info': return siteRoot + 'ajax/group/' + options.group_id + '/basic-info/';
|
case 'group_basic_info': return siteRoot + 'ajax/group/' + options.group_id + '/basic-info/';
|
||||||
case 'toggle_group_modules': return siteRoot + 'ajax/group/' + options.group_id + '/toggle-modules/';
|
case 'toggle_group_modules': return siteRoot + 'ajax/group/' + options.group_id + '/toggle-modules/';
|
||||||
|
Reference in New Issue
Block a user