xls_porter 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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: []