Class: Decidim::Admin::Import::Creator

Inherits:
Object
  • Object
show all
Defined in:
lib/decidim/admin/import/creator.rb

Overview

This is an abstract class with a very naive default implementation for the importers to use. It can also serve as a superclass of your own implementation.

It is used to be run against each element of an importable collection in order to parse relevant fields. Every import should specify their own creator or this default will be used.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data, context = nil) ⇒ Creator

Initializes the creator with a resource.

data - The data hash to parse. context - The context needed by the producer



43
44
45
46
# File 'lib/decidim/admin/import/creator.rb', line 43

def initialize(data, context = nil)
  @data = data
  @context = context
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



37
38
39
# File 'lib/decidim/admin/import/creator.rb', line 37

def data
  @data
end

Class Method Details

.localize_headers(header, locales) ⇒ Object



30
31
32
33
34
# File 'lib/decidim/admin/import/creator.rb', line 30

def localize_headers(header, locales)
  @localize_headers ||= locales.map do |locale|
    :"#{header}/#{locale}"
  end
end

.required_headersObject



26
27
28
# File 'lib/decidim/admin/import/creator.rb', line 26

def required_headers
  []
end

.resource_klassObject

Returns the resource class to be created with the provided data.

Raises:

  • (NotImplementedError)


16
17
18
# File 'lib/decidim/admin/import/creator.rb', line 16

def resource_klass
  raise NotImplementedError, "#{self.class.name} does not define resource class"
end

.verifier_klassObject

Returns the verifier class to be used to ensure the data is valid for the import.



22
23
24
# File 'lib/decidim/admin/import/creator.rb', line 22

def verifier_klass
  Decidim::Admin::Import::Verifier
end

Instance Method Details

#finish!Object



67
68
69
# File 'lib/decidim/admin/import/creator.rb', line 67

def finish!
  resource.save!
end

#produceObject

Public: Returns a created object with the parsed data.

Returns a target object.



63
64
65
# File 'lib/decidim/admin/import/creator.rb', line 63

def produce
  self.class.resource_klass.new(resource_attributes)
end

#resource_attributesObject

Can be used to convert the data hash to the resource attributes in case the data hash to be imported has different column names than the resource object to be created of it.

By default returns the data hash but can be implemented by each creator implementation.

Returns the resource attributes to be passed for the constructor.



56
57
58
# File 'lib/decidim/admin/import/creator.rb', line 56

def resource_attributes
  @data
end