Class: PeopleImport

Inherits:
Import
  • Object
show all
Defined in:
app/models/imports/people_import.rb

Constant Summary

Constants inherited from Import

Import::DATE_INPUT_FORMAT, Import::DATE_INPUT_FORMAT_WITH_TIME

Instance Method Summary collapse

Methods inherited from Import

#attach_person, build, #cache_data, #fail!, #headers, #import, #parsed_rows, #perform, #rows

Methods included from Imports::Processing

#csv_data, included, #s3_service, #time_zone_parser

Methods included from Imports::Status

#approve!, #caching!, #failed!, #failed?, #imported!, #importing!, included, #invalidate!, #pending!

Instance Method Details

#create_person(parsed_row) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
# File 'app/models/imports/people_import.rb', line 30

def create_person(parsed_row)
  Rails.logger.debug("PEOPLE_IMPORT: Importing person")
  person = attach_person(parsed_row)
  Rails.logger.debug("PEOPLE_IMPORT: Attached #{person.inspect}")
  if !person.save
    Rails.logger.debug("PEOPLE_IMPORT: Save failed")
    Rails.logger.debug("PEOPLE_IMPORT: ERROR'D #{person.errors.full_messages.join(", ")}")
    error(parsed_row, person)
  end 
  person  
end

#error(parsed_row, person) ⇒ Object

Raises:



23
24
25
26
27
28
# File 'app/models/imports/people_import.rb', line 23

def error(parsed_row, person)
  message = ""
  message = parsed_row.email + ": " unless parsed_row.email.blank?
  message = message + person.errors.full_messages.join(", ")    
  raise Import::RowError, message
end

#kindObject



2
3
4
# File 'app/models/imports/people_import.rb', line 2

def kind
  "people"
end

#process(parsed_row) ⇒ Object



10
11
12
# File 'app/models/imports/people_import.rb', line 10

def process(parsed_row)
  person      = create_person(parsed_row)
end

#rollbackObject



6
7
8
# File 'app/models/imports/people_import.rb', line 6

def rollback 
  self.people.destroy_all
end

#row_valid?(parsed_row) ⇒ Boolean

Returns:

  • (Boolean)

Raises:



14
15
16
17
18
19
20
21
# File 'app/models/imports/people_import.rb', line 14

def row_valid?(parsed_row)
  person = attach_person(parsed_row)
  
  #We're doing this here because the error message for person_info is very bad
  raise Import::RowError, "Please include a first name, last name, or email in this row: #{parsed_row.row}" unless attach_person(parsed_row).person_info
  
  return (person.valid? ? true : error(parsed_row, person))
end