xls_porter 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/xls_porter.rb +22 -19
  2. metadata +4 -4
data/lib/xls_porter.rb CHANGED
@@ -41,51 +41,54 @@ module XlsPorter
41
41
  sheet.each 1 do |row|
42
42
  id = row[id_idx]
43
43
  record = nil
44
+ update = nil
45
+ update_notes = nil
44
46
  if id.nil?
45
47
  record = model.new
46
- record["update"] = "new"
48
+ update = "new"
47
49
  else
48
50
  begin
49
51
  record = model.find(id)
50
- record["update"] = "exist"
52
+ update = "exist"
51
53
  rescue
52
54
  record = model.new
53
- record["update"] = "new"
55
+ update = "new"
54
56
  end
55
57
  end
56
58
  (0..(columns.size - 1)).each do |i|
57
59
  value = row[i]
58
60
  value = value.strip if value.is_a?(String)
59
61
  column = columns[i]
60
- if column == "id" and record["update"] == "new"
62
+ if column == "id" and update == "new"
61
63
  record["id"] = value
62
64
  elsif ignore_columns.include?(column)
63
65
  #skip if column is ignored
64
66
  elsif record[column].blank? and value.blank?
65
67
  #skip if both are either nil or empty
66
68
  elsif [DateTime, Time, Date].include?(value.class)
67
- #puts "#{column} #{record[column]} == #{value} ? #{record[column].to_i == value.to_i}"
68
- #TODO comparator and assigner for date types
69
+ if record[column].to_f != value.to_f
70
+ record[column] = value
71
+ end
69
72
  else
70
73
  if record[column] != value
71
74
  record[column] = value
72
- record["update"] = "updated" if record["update"] == "exist"
73
- record["update_notes"] = [] if record["update_notes"].nil?
74
- record["update_notes"] << column
75
+ update = "updated" if update == "exist"
76
+ update_notes = [] if update_notes.nil?
77
+ update_notes << column
75
78
  end
76
79
  end
77
80
  end
78
81
  #track all updates
79
- updates << record if %w(new updated).include?(record["update"]) #not record.changed.empty?
80
- end
81
- #commit changes only after processing all updates
82
- updates.each do |update|
83
- begin
84
- update.save
85
- rescue Exception => exception
86
- #track validation exception
87
- update["update"] = "exception"
88
- update["update_notes"] = exception.to_s
82
+ if not record.changed.empty?
83
+ begin
84
+ record.save
85
+ rescue Exception => exception
86
+ update = "exception"
87
+ update_notes = exception.to_s
88
+ end
89
+ record["update"] = update
90
+ record["update_notes"] = update_notes
91
+ updates << record # if %w(new updated).include?(update) #not record.changed.empty?
89
92
  end
90
93
  end
91
94
  return {:columns => (%w(update update_notes) + columns), :updates => updates, :model => model.name}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xls_porter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-25 00:00:00.000000000 Z
12
+ date: 2012-11-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: carrierwave
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 0.7.0
21
+ version: 0.6.2
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 0.7.0
29
+ version: 0.6.2
30
30
  description: Export to and Import from XLS for Ruby and Rails apps
31
31
  email: mikereyes.kg77@gmail.com
32
32
  executables: []