app/models/katello/activation_key.rb in katello-3.12.3 vs app/models/katello/activation_key.rb in katello-3.13.0.rc1
- old
+ new
@@ -20,14 +20,19 @@
has_many :subscriptions, :through => :pools
has_many :subscription_facet_activation_keys, :class_name => "Katello::SubscriptionFacetActivationKey", :dependent => :destroy
has_many :subscription_facets, :through => :subscription_facet_activation_keys
+ has_many :activation_key_purpose_addons, :class_name => "Katello::ActivationKeyPurposeAddon", :dependent => :destroy, :inverse_of => :activation_key
+ has_many :purpose_addons, :class_name => "Katello::PurposeAddon", :through => :activation_key_purpose_addons
+
alias_method :lifecycle_environment, :environment
before_validation :set_default_content_view, :unless => :persisted?
+ accepts_nested_attributes_for :purpose_addons
+
validates_lengths_from_database
validates_with Validators::KatelloNameFormatValidator, :attributes => :name
validates :name, :presence => true
validates :name, :uniqueness => {:scope => :organization_id}
validate :environment_exists
@@ -59,10 +64,13 @@
scoped_search :on => :content_view_id, :complete_value => true, :only_explicit => true, :validator => ScopedSearch::Validators::INTEGER
scoped_search :on => :description, :complete_value => true
scoped_search :on => :name, :relation => :subscriptions, :rename => :subscription_name, :complete_value => true, :ext_method => :find_by_subscription_name
scoped_search :on => :id, :relation => :subscriptions, :rename => :subscription_id, :complete_value => true,
:only_explicit => true, :validator => ScopedSearch::Validators::INTEGER, :ext_method => :find_by_subscription_id
+ scoped_search :on => :purpose_usage, :rename => :usage, :complete_value => true
+ scoped_search :on => :purpose_role, :rename => :role, :complete_value => true
+ scoped_search :on => :name, :rename => :addon, :relation => :purpose_addon, :complete_value => true, :ext_method => :find_by_purpose_addons
def environment_exists
if environment_id && environment.nil?
errors.add(:environment, _("ID: %s doesn't exist ") % environment_id)
elsif !environment.nil? && environment.organization != self.organization
@@ -158,9 +166,15 @@
if activation_key_ids.empty?
{:conditions => "1=0"}
else
{:conditions => "#{Katello::ActivationKey.table_name}.id IN (#{activation_key_ids.join(',')})"}
end
+ end
+
+ def self.find_by_purpose_addons(_key, operator, value)
+ conditions = sanitize_sql_for_conditions(["#{Katello::PurposeAddon.table_name}.name #{operator} ?", value_to_sql(operator, value)])
+ activation_keys = ::Katello::ActivationKey.joins(:purpose_addons).where(conditions)
+ return_activation_keys_by_id(activation_keys.pluck(:id))
end
private
def set_default_content_view