Sha256: 4baef7f20c8155e0b6a7efd91596a6d0e30542d94915762e4395784c92d4d80a

Contents?: true

Size: 1.15 KB

Versions: 3

Compression:

Stored size: 1.15 KB

Contents

module ForemanOpenscap
  module HostsCommonControllerExtensions
    extend ActiveSupport::Concern

    def openscap_proxy_changed
      model = if params[param_id_key].blank?
                controller_name.classify.constantize.new(params[param_model_key])
              else
                resource_base.find(params[param_id_key])
              end
      proxy_id = params[param_model_key][:openscap_proxy_id]
      instance_variable_set("@#{param_model_key}", model)
      if proxy_id.blank?
        render :partial => "form"
      else
        begin
          instance_variable_get("@#{param_model_key}").update_scap_client_params(proxy_id)
          render :partial => "form"
        rescue => e
          instance_variable_get("@#{param_model_key}").errors.add(:openscap_proxy_id, e.message)
          render :partial => "form", :status => 422
        end
      end
    end

    def action_permission
      case params[:action]
      when 'openscap_proxy_changed'
        :edit
      else
        super
      end
    end

    private

    def param_id_key
      "#{param_model_key}_id"
    end

    def param_model_key
      controller_name.singularize
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
foreman_openscap-0.5.3 app/controllers/concerns/foreman_openscap/hosts_common_controller_extensions.rb
foreman_openscap-0.5.2 app/controllers/concerns/foreman_openscap/hosts_common_controller_extensions.rb
foreman_openscap-0.5.1 app/controllers/concerns/foreman_openscap/hosts_common_controller_extensions.rb