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

[groups] use new collection url

This commit is contained in:
llj
2015-12-02 11:25:11 +08:00
parent 1c18e3e716
commit 51b44c40a3
5 changed files with 4 additions and 107 deletions

View File

@@ -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+)/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'^group_list/$', GroupList.as_view()),
url(r'^html/events/$', EventsHtml.as_view()),
url(r'^html/more_events/$', AjaxEvents.as_view(), name="more_events"),

View File

@@ -3680,109 +3680,6 @@ class GroupRepo(APIView):
return HttpResponse(json.dumps({'success': True}), status=200,
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):
if user.is_anonymous():
return False

View File

@@ -31,7 +31,7 @@ define([
return Common.compareTwoWord(a.name, b.name);
});
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');
var groupRepos = new GroupRepos();
groupRepos.setGroupID(group_id);

View File

@@ -60,6 +60,7 @@ define([
var _this = this;
this.groups.fetch({
cache: false,
data: {'with_repos': 1}, // list repos of every group
reset: true,
success: function (collection, response, opts) {
},
@@ -104,7 +105,7 @@ define([
return false;
}
Common.disableButton($('[type="submit"]', $form));
groups.create({'group_name': group_name}, {
groups.create({'group_name': group_name, 'repos':[]}, {
wait: true,
validate: true,
prepend: true, // show newly created group at the top

View File

@@ -102,7 +102,7 @@ define([
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 '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_basic_info': return siteRoot + 'ajax/group/' + options.group_id + '/basic-info/';
case 'toggle_group_modules': return siteRoot + 'ajax/group/' + options.group_id + '/toggle-modules/';