[email protected] wrote:
> From: Jan Provaznik <[email protected]>
>
> This patch removes saving group in XML for packages - this info is not used by
> builder and is no longer needed in UI with new selection model. Removing group
> also fixes error in adding software - when a group was selected and a
> package from the group was selected too, package was added twice into XML.
> ---
>  src/app/controllers/templates_controller.rb     |   14 +---
>  src/app/models/template.rb                      |    2 -
>  src/app/util/image_descriptor_xml.rb            |  108 
> +++--------------------
>  src/app/views/templates/_selected_packages.haml |   12 ---
>  4 files changed, 13 insertions(+), 123 deletions(-)
>  delete mode 100644 src/app/views/templates/_selected_packages.haml
>
> diff --git a/src/app/controllers/templates_controller.rb 
> b/src/app/controllers/templates_controller.rb
> index 97a8cec..0e69647 100644
> --- a/src/app/controllers/templates_controller.rb
> +++ b/src/app/controllers/templates_controller.rb
> @@ -45,16 +45,6 @@ class TemplatesController < ApplicationController
>      @groups = @repository_manager.all_groups(params[:repository])
>    end
>  
> -  #def select_package
> -  #  update_group_or_package(:add_package, params[:package], params[:group])
> -  #  render :action => 'new'
> -  #end
> -
> -  #def remove_package
> -  #  update_group_or_package(:remove_package, params[:package], 
> params[:group])
> -  #  render :action => 'new'
> -  #end
> -
>    def create
>      if params[:cancel]
>        redirect_to :action => 'index'
> @@ -73,7 +63,7 @@ class TemplatesController < ApplicationController
>      # again
>      params.keys.each do |param|
>        if param =~ /^remove_package_(.*)$/
> -        update_group_or_package(:remove_package, $1, nil)
> +        update_group_or_package(:remove_package, $1)
>          render :action => 'new'
>          return
>        end
> @@ -103,7 +93,7 @@ class TemplatesController < ApplicationController
>      @groups = @repository_manager.all_groups(params[:repository])
>      if params[:add_selected]
>        params[:groups].to_a.each { |group| @tpl.xml.add_group(group) }
> -      params[:packages].to_a.each { |pkg| @tpl.xml.add_package(pkg, nil) }
> +      params[:packages].to_a.each { |pkg| @tpl.xml.add_package(pkg) }
>        @tpl.save_xml!
>      end
>      if params[:ajax]
> diff --git a/src/app/models/template.rb b/src/app/models/template.rb
> index dec7b4b..e592fff 100644
> --- a/src/app/models/template.rb
> +++ b/src/app/models/template.rb
> @@ -24,8 +24,6 @@ class Template < ActiveRecord::Base
>      doc.description = opts[:summary] if opts[:summary]
>      doc.platform_version = opts[:platform_version] if opts[:platform_version]
>      doc.architecture = opts[:architecture] if opts[:architecture]
> -    doc.services = (opts[:services] || []) if opts[:services] or 
> opts[:set_services]
> -    doc.packages = (opts[:packages] || []) if opts[:packages] or 
> opts[:set_packages]
>      save_xml!
>    end
>  
> diff --git a/src/app/util/image_descriptor_xml.rb 
> b/src/app/util/image_descriptor_xml.rb
> index 00f8bb2..e8fe552 100644
> --- a/src/app/util/image_descriptor_xml.rb
> +++ b/src/app/util/image_descriptor_xml.rb
> @@ -24,14 +24,6 @@ class ImageDescriptorXML
>  
>    UNKNOWN_GROUP = 'Individual packages'
>  
> -  # FIXME: temporary way to only add jboss until other
> -  # services are supported
> -  SERVICE_PACKAGE_GROUPS = {
> -    # FIXME: jboss service is disabled because we don't have public repo
> -    # which contains groups for jboss
> -    #'jboss' => 'JBoss Core Packages'
> -  }
> -
>    def initialize(xmlstr = "")
>      @doc = Nokogiri::XML(xmlstr)
>      # create at least root node if it doesn't exist
> @@ -98,9 +90,6 @@ class ImageDescriptorXML
>        snode = Nokogiri::XML::Node.new('service', @doc)
>        service_node << snode
>        snode.content = s[0]
> -      if group = SERVICE_PACKAGE_GROUPS[s[0]]
> -        add_group(group)
> -      end
>      end
>      @services = nil
>    end
> @@ -119,67 +108,18 @@ class ImageDescriptorXML
>      return @doc.to_xml
>    end
>  
> -  def packages_by_group
> -    groups = {}
> -    @root.xpath('/image/groups/group').each do |g|
> -      groups[g.text] = []
> -    end
> -    @root.xpath('/image/packages/package').each do |s|
> -      name = s.at_xpath('.//group').text
> -      group = (groups[name] || groups[UNKNOWN_GROUP] ||= [])
> -      group << {:name => s.at_xpath('.//name').text}
> -    end
> -    return groups
> -  end
> -
> -  def all_packages_by_group
> -    groups = {}
> -    all_groups = repository_manager.all_groups
> -    packages_by_group.each do |group, pkgs|
> -      if group_all = all_groups[group]
> -        groups[group] ||= []
> -        group_all[:packages].keys.sort.each do |pkg|
> -          groups[group] << {:name => pkg, :checked => pkgs.find {|p| 
> p[:name] == pkg} ? true : false}
> -        end
> -      else
> -        groups[UNKNOWN_GROUP] ||= []
> -        groups[UNKNOWN_GROUP] += pkgs.map {|pkg| {:name => pkg[:name], 
> :checked => true}}
> -      end
> -    end
> -
> -    unknown_group = groups.delete(UNKNOWN_GROUP)
> -    sorted = groups.keys.sort.map do |group|
> -      {:name => group, :pkgs => groups[group]}
> -    end
> -    if unknown_group
> -      sorted << {:name => UNKNOWN_GROUP, :pkgs => unknown_group}
> -    end
> -
> -    return sorted
> -  end
> -
>    def packages
>      packages = []
>      @root.xpath('/image/packages/package').each do |s|
> -      packages << {:name => s.at_xpath('.//name').text, :group => 
> s.at_xpath('.//group').text}
> +      packages << {:name => s.at_xpath('.//name').text}
>      end
>      return packages
>    end
>  
> -  def packages=(packages)
> +  def add_package(pkg)
>      pkgs_node = get_or_create_node('packages')
> -    pkgs_node.xpath('.//package').remove
> -    packages.uniq.each do |pkg|
> -      group, name = pkg.split(/#/, 2)
> -      add_package_node(pkgs_node, name, group)
> -    end
> -  end
> -
> -  def add_package(pkg, group)
> -    group ||= UNKNOWN_GROUP
> -    pkgs_node = get_or_create_node('packages')
> -    unless older = packages.find {|p| p[:name] == pkg and p[:group] == group}
> -      add_package_node(pkgs_node, pkg, group)
> +    unless older = packages.find {|p| p[:name] == pkg}
> +      add_package_node(pkgs_node, pkg)
>      end
>    end
>  
> @@ -187,40 +127,17 @@ class ImageDescriptorXML
>      unless group = repository_manager.all_groups[gname]
>        raise "group #{gname} not found in repositories"
>      end
> -    groups = packages_by_group
> -    unless groups[gname]
> -      groups_node = get_or_create_node('groups')
> -      add_group_node(groups_node, gname)
> -    end
>      group[:packages].each do |p, info|
>        next if info[:type] == 'optional'
> -      add_package(p, group[:name])
> +      add_package(p)
>      end
>    end
>  
> -  def remove_group(group)
> -    groups = packages_by_group
> -    groups.delete(group)
> -    pkgs_node = get_or_create_node('packages')
> -    pkgs_node.xpath('.//package').remove
> -    groups_node = get_or_create_node('groups')
> -    groups_node.xpath('.//group').remove
> -    groups.each do |group, pkgs|
> -      pkgs.each { |pkg| add_package_node(pkgs_node, pkg[:name], group) }
> -      add_group_node(groups_node, group)
> -    end
> -  end
> -
> -  # FIXME: rewrite cleanly w/o recreating all nodes
> -  def remove_package(package, grp = nil)
> -    groups = packages_by_group
> -    pkgs_node = get_or_create_node('packages')
> -    pkgs_node.xpath('.//package').remove
> -    groups_node = get_or_create_node('groups')
> -    groups_node.xpath('.//group').remove
> -    groups.each do |group, pkgs|
> -      pkgs.select { |pkg| pkg[:name] != package }.each { |pkg| 
> add_package_node(pkgs_node, pkg[:name], group) }
> -      add_group_node(groups_node, group)
> +  def remove_package(package)
> +    @root.xpath('/image/packages/package').each do |s|
> +      if name = s.at_xpath('.//name') and name.text.to_s == package
> +        s.remove
> +      end
>      end
>    end
>  
> @@ -254,14 +171,11 @@ class ImageDescriptorXML
>      return node ? node.text : nil
>    end
>  
> -  def add_package_node(parent, name, group)
> +  def add_package_node(parent, name)
>      pnode = get_or_create_node('package', parent)
>      n = Nokogiri::XML::Node.new('name', @doc)
>      n.content = name
>      pnode << n
> -    n = Nokogiri::XML::Node.new('group', @doc)
> -    n.content = group
> -    pnode << n
>    end
>  
>    def repository_manager
> diff --git a/src/app/views/templates/_selected_packages.haml 
> b/src/app/views/templates/_selected_packages.haml
> deleted file mode 100644
> index b0f8efe..0000000
> --- a/src/app/views/templates/_selected_packages.haml
> +++ /dev/null
> @@ -1,12 +0,0 @@
> -%ul{:id => "selected_packages", :class => "selection_list"}
> -  - @image_descriptor.xml.all_packages_by_group.each do |group|
> -    %li{:class => 'group'}
> -      %span{:class => "groupname"}
> -        = group[:name]
> -      %a{:class => 'remove_group action_link', :href => url_for(:action => 
> 'remove_group', :id => @image_descriptor, :group => group[:name])}
> -        Remove
> -      %ul{:class => 'groupkgs'}
> -        - group[:pkgs].each do |pkg|
> -          %li{:class => 'pkgname'}
> -            %input{:type => 'checkbox', :name => 'xml[packages][]', :value 
> => group[:name] + '#' + pkg[:name], :checked => pkg[:checked]}
> -            = pkg[:name]
>   
Ack and pushed

Scott 
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel

Reply via email to