diff --git a/app/controllers/katello/api/v2/puppet_modules_controller.rb b/app/controllers/katello/api/v2/puppet_modules_controller.rb index 624c7b749bb..e8b02a39c7e 100644 --- a/app/controllers/katello/api/v2/puppet_modules_controller.rb +++ b/app/controllers/katello/api/v2/puppet_modules_controller.rb @@ -18,8 +18,8 @@ class Api::V2::PuppetModulesController < Api::V2::ApiController private - def filter_by_content_view_version(version) - filter_by_repo_ids([version.archive_puppet_environment.try(:pulp_id)]) + def filter_by_content_view_version(version, options) + filter_by_repo_ids([version.archive_puppet_environment.try(:pulp_id)], options) end end diff --git a/app/controllers/katello/concerns/api/v2/repository_content_controller.rb b/app/controllers/katello/concerns/api/v2/repository_content_controller.rb index f64f98093f3..cb6effad090 100644 --- a/app/controllers/katello/concerns/api/v2/repository_content_controller.rb +++ b/app/controllers/katello/concerns/api/v2/repository_content_controller.rb @@ -32,17 +32,15 @@ module Api::V2::RepositoryContentController param :content_view_filter_id, :identifier, :desc => N_("content view filter identifier") param :repository_id, :number, :desc => N_("repository identifier") def index - collection = if @repo && !@repo.puppet? - filter_by_repo_ids([@repo.pulp_id]) - elsif @filter - filter_by_content_view_filter(@filter) - elsif @version - filter_by_content_view_version(@version) - else - filter_by_repo_ids(Repository.readable.map(&:pulp_id)) - end + options = sort_params + options[:filters] = [] + + options = filter_by_repo_ids(Repository.readable.map(&:pulp_id), options) + options = filter_by_repo_ids([@repo.pulp_id], options) if @repo && !@repo.puppet? + options = filter_by_content_view_version(@version, options) if @version + options = filter_by_content_view_filter(@filter, options) if @filter - respond(:collection => collection) + respond(:collection => item_search(resource_class, params, options)) end api :GET, "/:resource_id/:id", N_("Show :a_resource") @@ -140,22 +138,21 @@ def check_repo_for_content_resource end end - def filter_by_content_view_filter(filter) + def filter_by_content_view_filter(filter, options) ids = filter.send("#{singular_resource_name}_rules").map(&:uuid) repo_ids = filter.applicable_repos.readable.select([:pulp_id, "#{Katello::Repository.table_name}.name"]) - options = sort_params - options[:filters] = [{ :terms => { :id => ids } }, { :terms => { repo_association => repo_ids }}] - item_search(resource_class, params, options) + + options[:filters] << { :terms => { :id => ids } } + filter_by_repo_ids(repo_ids, options) end - def filter_by_repo_ids(repo_ids = []) - options = sort_params - options[:filters] = [{ :terms => { repo_association => repo_ids }}] - item_search(resource_class, params, options) + def filter_by_repo_ids(repo_ids = [], options) + options[:filters] << { :terms => { repo_association => repo_ids }} + options end - def filter_by_content_view_version(version) - filter_by_repo_ids(version.archived_repos.map(&:pulp_id)) + def filter_by_content_view_version(version, options) + filter_by_repo_ids(version.archived_repos.map(&:pulp_id), options) end end end diff --git a/app/controllers/katello/concerns/api/v2/repository_db_content_controller.rb b/app/controllers/katello/concerns/api/v2/repository_db_content_controller.rb index c0578162fe2..fbd60c23732 100644 --- a/app/controllers/katello/concerns/api/v2/repository_db_content_controller.rb +++ b/app/controllers/katello/concerns/api/v2/repository_db_content_controller.rb @@ -22,19 +22,14 @@ module Api::V2::RepositoryDbContentController extend ::Apipie::DSL::Concern def index - collection = if @repo && !@repo.puppet? - filter_by_repos([@repo]).uniq - elsif @filter - filter_by_content_view_filter(@filter).uniq - elsif @version - filter_by_content_view_version(@version).uniq - elsif @organization - filter_by_repos(Repository.readable.in_organization(@organization)).uniq - else - filter_by_repos(Repository.readable).uniq - end - - respond(:collection => scoped_search(collection, default_sort[0], default_sort[1])) + collection = resource_class.scoped + collection = filter_by_repos(Repository.readable, collection) + collection = filter_by_repos([@repo], collection) if @repo && !@repo.puppet? + collection = filter_by_content_view_filter(@filter, collection) if @filter + collection = filter_by_content_view_version(@version, collection) if @version + collection = filter_by_repos(Repository.readable.in_organization(@organization), collection) if @organization + + respond(:collection => scoped_search(collection.uniq, default_sort[0], default_sort[1])) end api :GET, "/compare/", N_("List :resource_id") @@ -49,10 +44,11 @@ def compare fail HttpErrors::NotFound, _("Couldn't find content view versions '%s'") % missing.join(',') end + collection = resource_class.scoped repos = Katello::Repository.where(:content_view_version_id => @versions.pluck(:id)) repos = repos.where(:library_instance_id => @repo.id) if @repo - collection = scoped_search(filter_by_repos(repos).uniq, default_sort[0], default_sort[1]) + collection = scoped_search(filter_by_repos(repos, collection).uniq, default_sort[0], default_sort[1]) collection[:results] = collection[:results].map { |item| ContentViewVersionComparePresenter.new(item, @versions, @repo) } respond_for_index(:collection => collection) end @@ -63,16 +59,16 @@ def default_sort %w(id desc) end - def filter_by_content_view_filter(filter) - resource_class.where(:uuid => filter.send("#{singular_resource_name}_rules").pluck(:uuid)) + def filter_by_content_view_filter(filter, collection) + collection.where(:uuid => filter.send("#{singular_resource_name}_rules").pluck(:uuid)) end - def filter_by_repos(repos) - resource_class.in_repositories(repos) + def filter_by_repos(repos, collection) + collection.in_repositories(repos) end - def filter_by_content_view_version(version) - version.send(controller_name) + def filter_by_content_view_version(version, collection) + collection.where(:id => version.send(controller_name)) end def find_content_resource