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
|
||||
// Only active groups retrieved
|
||||
groups: function(query, skip_ldap, skip_groups, callback) {
|
||||
groups: function(query, options, callback) {
|
||||
var url = Api.buildUrl(Api.groupsPath);
|
||||
return $.ajax({
|
||||
url: url,
|
||||
data: {
|
||||
search: query,
|
||||
skip_groups: skip_groups,
|
||||
per_page: 20
|
||||
},
|
||||
data: $.extend({
|
||||
search: query,
|
||||
per_page: 20
|
||||
}, options),
|
||||
dataType: "json"
|
||||
}).done(function(groups) {
|
||||
return callback(groups);
|
||||
|
|
|
@ -6,15 +6,16 @@
|
|||
function GroupsSelect() {
|
||||
$('.ajax-groups-select').each((function(_this) {
|
||||
return function(i, select) {
|
||||
var skip_ldap, skip_groups;
|
||||
skip_ldap = $(select).hasClass('skip_ldap');
|
||||
var all_available, skip_groups;
|
||||
all_available = $(select).data('all-available');
|
||||
skip_groups = $(select).data('skip-groups') || [];
|
||||
return $(select).select2({
|
||||
placeholder: "Search for a group",
|
||||
multiple: $(select).hasClass('multiselect'),
|
||||
minimumInputLength: 0,
|
||||
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;
|
||||
data = {
|
||||
results: groups
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
data = groups.concat(projects);
|
||||
return finalCallback(data);
|
||||
};
|
||||
return Api.groups(term, false, false, groupsCallback);
|
||||
return Api.groups(term, {}, groupsCallback);
|
||||
};
|
||||
} else {
|
||||
projectsCallback = finalCallback;
|
||||
|
@ -73,7 +73,7 @@
|
|||
data = groups.concat(projects);
|
||||
return finalCallback(data);
|
||||
};
|
||||
return Api.groups(query.term, false, false, groupsCallback);
|
||||
return Api.groups(query.term, {}, groupsCallback);
|
||||
};
|
||||
} else {
|
||||
projectsCallback = finalCallback;
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
filterable: true,
|
||||
fieldName: 'group_id',
|
||||
data: function(term, callback) {
|
||||
return Api.groups(term, false, false, function(data) {
|
||||
return Api.groups(term, {}, function(data) {
|
||||
data.unshift({
|
||||
name: 'Any'
|
||||
});
|
||||
|
|
|
@ -2,7 +2,12 @@
|
|||
|
||||
## 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
|
||||
|
@ -21,7 +26,6 @@ GET /groups
|
|||
|
||||
You can search for groups by name or path, see below.
|
||||
|
||||
|
||||
## List a group's projects
|
||||
|
||||
Get a list of projects in this group.
|
||||
|
|
|
@ -8,11 +8,14 @@ module API
|
|||
#
|
||||
# Parameters:
|
||||
# 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:
|
||||
# GET /groups
|
||||
get do
|
||||
@groups = if current_user.admin
|
||||
Group.all
|
||||
elsif params[:all_available]
|
||||
GroupsFinder.new.execute(current_user)
|
||||
else
|
||||
current_user.groups
|
||||
end
|
||||
|
|
|
@ -37,7 +37,7 @@ describe API::API, api: true do
|
|||
end
|
||||
end
|
||||
|
||||
context "when authenticated as admin" do
|
||||
context "when authenticated as admin" do
|
||||
it "admin: returns an array of all groups" do
|
||||
get api("/groups", admin)
|
||||
expect(response).to have_http_status(200)
|
||||
|
@ -55,6 +55,17 @@ describe API::API, api: true do
|
|||
expect(json_response.length).to eq(1)
|
||||
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
|
||||
|
||||
describe "GET /groups/:id" do
|
||||
|
|
Loading…
Reference in a new issue