jam-cloud/ruby/lib/jam_ruby/models/icecast_template.rb

53 lines
2.7 KiB
Ruby

module JamRuby
class IcecastTemplate < ActiveRecord::Base
attr_accessible :limit_id, :admin_auth_id, :directory_id, :master_relay_id, :path_id, :logging_id,
:security_id, :name, :location, :admin_email, :fileserve, as: :admin
belongs_to :limit, :class_name => "JamRuby::IcecastLimit", foreign_key: 'limit_id', :inverse_of => :templates
belongs_to :admin_auth, :class_name => "JamRuby::IcecastAdminAuthentication", foreign_key: 'admin_auth_id', :inverse_of => :templates
belongs_to :directory, :class_name => "JamRuby::IcecastDirectory", foreign_key: 'directory_id', :inverse_of => :templates
belongs_to :master_relay, :class_name => "JamRuby::IcecastMasterServerRelay", foreign_key: 'master_relay_id', :inverse_of => :templates
belongs_to :path, :class_name => "JamRuby::IcecastPath", foreign_key: 'path_id', :inverse_of => :templates
belongs_to :logging, :class_name => "JamRuby::IcecastLogging", foreign_key: 'logging_id', :inverse_of => :templates
belongs_to :security, :class_name => "JamRuby::IcecastSecurity", foreign_key: 'security_id', :inverse_of => :templates
has_many :servers, :class_name => "JamRuby::IcecastServer", :inverse_of => :template, :foreign_key => "template_id"
#has_many :server_mounts, class_name: "JamRuby::IcecastServerMount", :inverse_of => :mount, :foreign_key
#has_many :mounts, class_name: "JamRuby::IcecastMount", through: :server_mounts, :source => :template
has_many :listen_socket_templates, :class_name => "JamRuby::IcecastTemplateSocket", :inverse_of => :template, :foreign_key => 'icecast_template_id'
has_many :listen_sockets, :class_name => "JamRuby::IcecastListenSocket", :through => :listen_socket_templates , :source => :socket
validates :name, presence: true
validates :location, presence: true
validates :admin_email, presence: true
validates :fileserve, :inclusion => {:in => [0, 1]}
validates :limit, presence: true
validates :admin_auth, presence: true
validates :path, presence: true
validates :logging, presence: true
validates :security, presence: true
validates :listen_sockets, length: {minimum: 1}
before_save :sanitize_active_admin
after_save :poke_config
before_destroy :poke_config
def poke_config
servers.update_all(config_changed: 1)
end
def sanitize_active_admin
self.limit_id = nil if self.limit_id == ''
self.admin_auth_id = nil if self.admin_auth_id == ''
self.directory_id = nil if self.directory_id == ''
self.master_relay_id = nil if self.master_relay_id == ''
self.path_id = nil if self.path_id == ''
self.logging_id = nil if self.logging_id == ''
self.security_id = nil if self.security_id == ''
end
end
end