70 lines
1.5 KiB
Ruby
70 lines
1.5 KiB
Ruby
module Locomotive
|
|
module Import
|
|
class Model
|
|
|
|
include Logger
|
|
include ActiveModel::Validations
|
|
|
|
## fields ##
|
|
attr_accessor :site, :source, :reset, :samples, :enabled
|
|
|
|
## validation ##
|
|
validates :site, :source, :presence => true
|
|
|
|
def initialize(attributes = {})
|
|
attributes = HashWithIndifferentAccess.new(attributes)
|
|
self.site = attributes[:site]
|
|
self.source = attributes[:source]
|
|
self.reset = attributes[:reset] || false
|
|
self.samples = attributes[:samples] || false
|
|
self.enabled = attributes[:enabled] || {}
|
|
end
|
|
|
|
def reset=(value)
|
|
@reset = Boolean.set(value)
|
|
end
|
|
|
|
def samples=(value)
|
|
@samples = Boolean.set(value)
|
|
end
|
|
|
|
## methods ##
|
|
|
|
def to_job
|
|
new Job()
|
|
end
|
|
|
|
def to_key
|
|
['import']
|
|
end
|
|
|
|
## class methods ##
|
|
|
|
def self.create(attributes = {})
|
|
puts attributes.inspect
|
|
new(attributes).tap do |job|
|
|
if job.valid?
|
|
begin
|
|
self.launch!(job)
|
|
rescue Exception => e
|
|
job.log "#{e.message}\n#{e.backtrace}"
|
|
job.errors.add(:source, e.message)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
def self.launch!(job)
|
|
Locomotive::Import::Job.run! job.source, job.site, {
|
|
:reset => job.reset,
|
|
:enabled => job.enabled
|
|
}
|
|
end
|
|
|
|
def self.name
|
|
'Import'
|
|
end
|
|
|
|
end
|
|
end
|
|
end |