2014-01-17 19:55:26 +00:00
|
|
|
module JamRuby
|
|
|
|
|
class IcecastTemplate < ActiveRecord::Base
|
|
|
|
|
|
2014-01-19 02:20:44 +00:00
|
|
|
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
|
2014-01-17 19:55:26 +00:00
|
|
|
|
|
|
|
|
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"
|
2014-01-19 02:20:44 +00:00
|
|
|
|
|
|
|
|
#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
|
2014-01-17 19:55:26 +00:00
|
|
|
|
|
|
|
|
validates :name, presence: true
|
|
|
|
|
validates :location, presence: true
|
|
|
|
|
validates :admin_email, presence: true
|
2014-01-19 02:20:44 +00:00
|
|
|
validates :fileserve, :inclusion => {:in => [0, 1]}
|
2014-01-17 19:55:26 +00:00
|
|
|
|
|
|
|
|
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}
|
2014-01-19 02:20:44 +00:00
|
|
|
|
|
|
|
|
before_save :sanitize_active_admin
|
2014-01-21 14:51:03 +00:00
|
|
|
after_save :poke_config
|
|
|
|
|
before_destroy :poke_config
|
2014-01-19 02:20:44 +00:00
|
|
|
|
|
|
|
|
def poke_config
|
2016-07-17 15:16:27 +00:00
|
|
|
servers.update_all(config_changed: 1)
|
2014-01-19 02:20:44 +00:00
|
|
|
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
|
2014-01-17 19:55:26 +00:00
|
|
|
end
|
|
|
|
|
end
|