Merge branch 'backport-ee-js-groups-api' into 'master'
Backport Group API code that was added in EE only Group API code that was added in EE only. /cc @vsizov See merge request !7205
This commit is contained in:
commit
588bc001e2
7 changed files with 33 additions and 16 deletions
|
@ -22,16 +22,14 @@
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
// Return groups list. Filtered by query
|
// Return groups list. Filtered by query
|
||||||
// Only active groups retrieved
|
groups: function(query, options, callback) {
|
||||||
groups: function(query, skip_ldap, skip_groups, callback) {
|
|
||||||
var url = Api.buildUrl(Api.groupsPath);
|
var url = Api.buildUrl(Api.groupsPath);
|
||||||
return $.ajax({
|
return $.ajax({
|
||||||
url: url,
|
url: url,
|
||||||
data: {
|
data: $.extend({
|
||||||
search: query,
|
search: query,
|
||||||
skip_groups: skip_groups,
|
per_page: 20
|
||||||
per_page: 20
|
}, options),
|
||||||
},
|
|
||||||
dataType: "json"
|
dataType: "json"
|
||||||
}).done(function(groups) {
|
}).done(function(groups) {
|
||||||
return callback(groups);
|
return callback(groups);
|
||||||
|
|
|
@ -6,15 +6,16 @@
|
||||||
function GroupsSelect() {
|
function GroupsSelect() {
|
||||||
$('.ajax-groups-select').each((function(_this) {
|
$('.ajax-groups-select').each((function(_this) {
|
||||||
return function(i, select) {
|
return function(i, select) {
|
||||||
var skip_ldap, skip_groups;
|
var all_available, skip_groups;
|
||||||
skip_ldap = $(select).hasClass('skip_ldap');
|
all_available = $(select).data('all-available');
|
||||||
skip_groups = $(select).data('skip-groups') || [];
|
skip_groups = $(select).data('skip-groups') || [];
|
||||||
return $(select).select2({
|
return $(select).select2({
|
||||||
placeholder: "Search for a group",
|
placeholder: "Search for a group",
|
||||||
multiple: $(select).hasClass('multiselect'),
|
multiple: $(select).hasClass('multiselect'),
|
||||||
minimumInputLength: 0,
|
minimumInputLength: 0,
|
||||||
query: function(query) {
|
query: function(query) {
|
||||||
return Api.groups(query.term, skip_ldap, skip_groups, function(groups) {
|
options = { all_available: all_available, skip_groups: skip_groups };
|
||||||
|
return Api.groups(query.term, options, function(groups) {
|
||||||
var data;
|
var data;
|
||||||
data = {
|
data = {
|
||||||
results: groups
|
results: groups
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
data = groups.concat(projects);
|
data = groups.concat(projects);
|
||||||
return finalCallback(data);
|
return finalCallback(data);
|
||||||
};
|
};
|
||||||
return Api.groups(term, false, false, groupsCallback);
|
return Api.groups(term, {}, groupsCallback);
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
projectsCallback = finalCallback;
|
projectsCallback = finalCallback;
|
||||||
|
@ -73,7 +73,7 @@
|
||||||
data = groups.concat(projects);
|
data = groups.concat(projects);
|
||||||
return finalCallback(data);
|
return finalCallback(data);
|
||||||
};
|
};
|
||||||
return Api.groups(query.term, false, false, groupsCallback);
|
return Api.groups(query.term, {}, groupsCallback);
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
projectsCallback = finalCallback;
|
projectsCallback = finalCallback;
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
filterable: true,
|
filterable: true,
|
||||||
fieldName: 'group_id',
|
fieldName: 'group_id',
|
||||||
data: function(term, callback) {
|
data: function(term, callback) {
|
||||||
return Api.groups(term, false, false, function(data) {
|
return Api.groups(term, {}, function(data) {
|
||||||
data.unshift({
|
data.unshift({
|
||||||
name: 'Any'
|
name: 'Any'
|
||||||
});
|
});
|
||||||
|
|
|
@ -2,7 +2,12 @@
|
||||||
|
|
||||||
## List groups
|
## List groups
|
||||||
|
|
||||||
Get a list of groups. (As user: my groups, as admin: all groups)
|
Get a list of groups. (As user: my groups or all available, as admin: all groups).
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
- `all_available` (optional) - if passed, show all groups you have access to
|
||||||
|
- `skip_groups` (optional)(array of group IDs) - if passed, skip groups
|
||||||
|
|
||||||
```
|
```
|
||||||
GET /groups
|
GET /groups
|
||||||
|
@ -21,7 +26,6 @@ GET /groups
|
||||||
|
|
||||||
You can search for groups by name or path, see below.
|
You can search for groups by name or path, see below.
|
||||||
|
|
||||||
|
|
||||||
## List a group's projects
|
## List a group's projects
|
||||||
|
|
||||||
Get a list of projects in this group.
|
Get a list of projects in this group.
|
||||||
|
|
|
@ -8,11 +8,14 @@ module API
|
||||||
#
|
#
|
||||||
# Parameters:
|
# Parameters:
|
||||||
# skip_groups (optional) - Array of group ids to exclude from list
|
# skip_groups (optional) - Array of group ids to exclude from list
|
||||||
|
# all_available (optional, boolean) - Show all group that you have access to
|
||||||
# Example Request:
|
# Example Request:
|
||||||
# GET /groups
|
# GET /groups
|
||||||
get do
|
get do
|
||||||
@groups = if current_user.admin
|
@groups = if current_user.admin
|
||||||
Group.all
|
Group.all
|
||||||
|
elsif params[:all_available]
|
||||||
|
GroupsFinder.new.execute(current_user)
|
||||||
else
|
else
|
||||||
current_user.groups
|
current_user.groups
|
||||||
end
|
end
|
||||||
|
|
|
@ -37,7 +37,7 @@ describe API::API, api: true do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context "when authenticated as admin" do
|
context "when authenticated as admin" do
|
||||||
it "admin: returns an array of all groups" do
|
it "admin: returns an array of all groups" do
|
||||||
get api("/groups", admin)
|
get api("/groups", admin)
|
||||||
expect(response).to have_http_status(200)
|
expect(response).to have_http_status(200)
|
||||||
|
@ -55,6 +55,17 @@ describe API::API, api: true do
|
||||||
expect(json_response.length).to eq(1)
|
expect(json_response.length).to eq(1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "when using all_available in request" do
|
||||||
|
it "returns all groups you have access to" do
|
||||||
|
public_group = create :group, :public
|
||||||
|
get api("/groups", user1), all_available: true
|
||||||
|
|
||||||
|
expect(response).to have_http_status(200)
|
||||||
|
expect(json_response).to be_an Array
|
||||||
|
expect(json_response.first['name']).to eq(public_group.name)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "GET /groups/:id" do
|
describe "GET /groups/:id" do
|
||||||
|
|
Loading…
Reference in a new issue