diff --git a/src/api/app/helpers/flag_helper.rb b/src/api/app/helpers/flag_helper.rb index 0dc6d04eddf..ded7c4dc449 100644 --- a/src/api/app/helpers/flag_helper.rb +++ b/src/api/app/helpers/flag_helper.rb @@ -164,4 +164,16 @@ def self.xml_disabled_for?(xmlhash, flagtype) end disabled end + + def self.render(my_model, xml) + flags_sorted = my_model.flags.includes(:architecture).group_by(&:flag) + + # the defined order is by type + FlagHelper.flag_types.each do |flag_name| + next unless flags_sorted.key?(flag_name) + xml.send(flag_name) do + flags_sorted[flag_name].each { |flag| flag.to_xml(xml) } + end + end + end end diff --git a/src/api/app/views/models/_package.xml.builder b/src/api/app/views/models/_package.xml.builder index 0511b191004..21f2e6c5686 100644 --- a/src/api/app/views/models/_package.xml.builder +++ b/src/api/app/views/models/_package.xml.builder @@ -9,15 +9,7 @@ xml.package(name: my_model.name, project: my_model.project.name) do my_model.render_relationships(xml) - FlagHelper.flag_types.each do |flag_name| - flaglist = my_model.flags.of_type(flag_name) - next if flaglist.empty? - xml.send(flag_name) do - flaglist.each do |flag| - flag.to_xml(xml) - end - end - end + FlagHelper.render(my_model, xml) xml.url(my_model.url) if my_model.url.present? xml.bcntsynctag(my_model.bcntsynctag) if my_model.bcntsynctag.present? diff --git a/src/api/app/views/models/_project.xml.builder b/src/api/app/views/models/_project.xml.builder index ad946e1589a..709480ed6a1 100644 --- a/src/api/app/views/models/_project.xml.builder +++ b/src/api/app/views/models/_project.xml.builder @@ -20,15 +20,7 @@ xml.project(project_attributes) do my_model.render_relationships(xml) repos = my_model.repositories.not_remote.sort { |a, b| b.name <=> a.name } - FlagHelper.flag_types.each do |flag_name| - flaglist = my_model.flags.of_type(flag_name) - next if flaglist.empty? - xml.send(flag_name) do - flaglist.each do |flag| - flag.to_xml(xml) - end - end - end + FlagHelper.render(my_model, xml) repos.each do |repo| params = {}