Skip to content

Commit

Permalink
[api] special webui mode for owner search, it returns all package ins…
Browse files Browse the repository at this point in the history
…tances, if a search does not match
  • Loading branch information
adrianschroeter committed Jan 22, 2013
1 parent 37ddf50 commit a41b074
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/api/app/helpers/search_helper.rb
Expand Up @@ -51,7 +51,7 @@ def search_owner(params, obj)
if obj.nil?
owners += project.find_containers_without_definition(devel, filter)
elsif obj.class == String
owners += project.find_assignees(obj, limit.to_i, devel, filter)
owners += project.find_assignees(obj, limit.to_i, devel, filter, (true unless params[:webui_mode].blank?))
else
owners += project.find_containers(obj, limit.to_i, devel, filter)
end
Expand Down
14 changes: 11 additions & 3 deletions src/api/app/models/project.rb
Expand Up @@ -1400,7 +1400,8 @@ def find_containers(owner, limit=1, devel=true, filter=["maintainer","bugowner"]
return maintainers
end

def find_assignees(binary_name, limit=1, devel=true, filter=["maintainer","bugowner"])
def find_assignees(binary_name, limit=1, devel=true, filter=["maintainer","bugowner"], webui_mode=false)
instances_without_definition=[]
maintainers=[]
pkg=nil
projects=self.expand_all_projects
Expand Down Expand Up @@ -1432,21 +1433,28 @@ def find_assignees(binary_name, limit=1, devel=true, filter=["maintainer","bugow
# the "" means any matching relationships will get taken
m, limit, already_checked = lookup_package_owner(pkg, "", limit, devel, filter, deepest, already_checked)

next unless m
unless m
# collect all no matched entries
m = { :rootproject => self.name, :project => pkg.project.name, :package => pkg.name, :filter => filter }
instances_without_definition << m
next
end

# remember as deepest candidate
if deepest == true
deepest_match = m
next
end

# add entry
# add matching entry
maintainers << m
limit = limit - 1
return maintainers if limit < 1 and not match_all
end
end

return instances_without_definition if webui_mode and maintainers.length < 1

maintainers << deepest_match if deepest_match

return maintainers
Expand Down
7 changes: 7 additions & 0 deletions src/api/test/functional/search_controller_test.rb
Expand Up @@ -407,6 +407,13 @@ def test_find_owner
assert_no_xml_tag :tag => 'owner', :attributes => { :project => "home:coolo:test" }
assert_xml_tag :tag => 'group', :attributes => { :name => "test_group", :role => "bugowner" }

get "/search/owner?project=TEMPORARY&binary=package&filter=reviewer&webui_mode=true"
assert_response :success
assert_xml_tag :tag => 'owner', :attributes => { :rootproject => "TEMPORARY", :project => "TEMPORARY", :package => "pack" },
:children => { :count => 0 }
assert_xml_tag :tag => 'owner', :attributes => { :rootproject => "TEMPORARY", :project => "home:Iggy", :package => "TestPack" },
:children => { :count => 0 }

# deepest package definition
get "/search/owner?project=TEMPORARY&binary=package&limit=-1"
assert_response :success
Expand Down

0 comments on commit a41b074

Please sign in to comment.