class PolicyManager::ExporterHandler

Attributes

after_zip[RW]
path[RW]
resource[RW]

Public Class Methods

new(opts={}) click to toggle source
# File lib/policy_manager/exporter/handler.rb, line 8
def initialize(opts={})
  self.path = opts[:path]
  self.resource = if opts[:resource].is_a?(String)
    opts[:resource].constantize
  else
    opts[:resource]
  end
  self.after_zip = opts[:after_zip] if opts[:after_zip]
end

Public Instance Methods

base_dir() click to toggle source
# File lib/policy_manager/exporter/handler.rb, line 66
def base_dir
end
base_path() click to toggle source
# File lib/policy_manager/exporter/handler.rb, line 18
def base_path
  self.path.join resource.id.to_s
end
clear!() click to toggle source
# File lib/policy_manager/exporter/handler.rb, line 42
def clear!
  FileUtils.rm_rf(base_path)
  FileUtils.rm_rf(zip_path)
end
create_sections() click to toggle source
# File lib/policy_manager/exporter/handler.rb, line 47
def create_sections
  PolicyManager::Config.portability_rules.each do |rule|
    handle_render_for(rule)
  end

  render_index
  puts "FOLDER CREATED AT #{base_path}"
end
generate_zip() click to toggle source
# File lib/policy_manager/exporter/handler.rb, line 141
def generate_zip
  directory_to_zip = base_path.to_s
  output_file = zip_path.to_s
  zf = ZipGenerator.new(directory_to_zip, output_file)
  zf.write()
end
handle_render_for(rule) click to toggle source
# File lib/policy_manager/exporter/handler.rb, line 56
def handle_render_for(rule)
  if rule.member
    render_member(rule)
  end

  if rule.collection
    render_collection(rule)
  end
end
handle_zip_upload() click to toggle source
# File lib/policy_manager/exporter/handler.rb, line 35
def handle_zip_upload
  resource
  .portability_requests
  .find_by(state: "progress")
  .update_attributes(file_remote_url: zip_path)
end
perform() click to toggle source
# File lib/policy_manager/exporter/handler.rb, line 26
def perform
  FileUtils.mkdir_p(base_path)
  create_sections
  generate_zip
  handle_zip_upload
  after_zip.call(zip_path, resource) if after_zip.is_a?(Proc)
  clear!
end
render_collection(rule) click to toggle source
# File lib/policy_manager/exporter/handler.rb, line 93
def render_collection(rule)
  return unless resource.respond_to?(:portability_collection_for)
  o = resource.portability_collection_for(rule, 1)

  base_dir  = self.base_path.join(rule.name)
  FileUtils.mkdir_p(base_dir)

  (1..o.total_pages).to_a.each do |i|
    o = resource.portability_collection_for(rule, i)

    page_name = i
    folder_dir = page_name == 1 ? base_dir : base_dir.join(page_name.to_s)
    FileUtils.mkdir_p(folder_dir)
    resource_path = folder_dir.join("index.html")

    view = ExporterView.new({
      assigns: {collection: o} ,
      build_path: self.base_path,
      base_path: resource_path,
      template: rule.template,
      rule: rule
    }).save(resource_path)


    json = JsonExporterView.new({
      assigns: {collection: o},
      template: rule.json_template,
      folder: folder_dir
    }).save if rule.json_template.present?

    puts "saving at #{self.path.join rule.name}"
  end
end
render_index() click to toggle source
# File lib/policy_manager/exporter/handler.rb, line 127
def render_index
  resource_path = self.base_path.join("index.html")
  template = PolicyManager::Config.exporter.index_template
  view = ExporterView.new({
    assigns: {
      collection: PolicyManager::Config.portability_rules
    },
    build_path: self.base_path,
    base_path: resource_path,
    template: template
  }).save( resource_path )
  puts "saving at #{resource_path}"
end
render_member(rule) click to toggle source
# File lib/policy_manager/exporter/handler.rb, line 69
def render_member(rule)
  return unless resource.respond_to?(:portability_member_for)
  o = resource.portability_member_for(rule)
  base_dir = self.base_path.join(rule.name)
  FileUtils.mkdir_p(base_dir)
  resource_path = base_dir.join("index.html")

  view = ExporterView.new({
    assigns: {member: o},
    build_path: self.base_path,
    base_path: resource_path,
    template: rule.template,
    rule: rule
  }).save(resource_path)

  puts "saving at #{self.path.join rule.name}"

  json = JsonExporterView.new({
    assigns: {member: o},
    template: rule.json_template,
    folder: base_dir
  }).save if rule.json_template.present?
end
zip_path() click to toggle source
# File lib/policy_manager/exporter/handler.rb, line 22
def zip_path
  "#{base_path}-out.zip"
end