go_import 3.0.25 → 3.0.26
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/bin/go-import +23 -16
- data/lib/go_import/model/address.rb +6 -4
- data/lib/go_import/model/deal.rb +9 -4
- data/lib/go_import/model/file.rb +8 -3
- data/lib/go_import/model/note.rb +0 -1
- data/lib/go_import/model/note_classification.rb +1 -0
- data/lib/go_import/model/rootmodel.rb +19 -11
- data/sources/lime-pro-basic/.gitignore +14 -0
- data/sources/lime-pro-basic/.go_import/readme.txt +1 -0
- data/sources/lime-pro-basic/.go_import/runner.rb +523 -0
- data/sources/lime-pro-basic/Gemfile +6 -0
- data/sources/lime-pro-basic/converter.rb +380 -0
- data/sources/salesforce/Gemfile.lock +48 -48
- data/spec/deal_spec.rb +8 -0
- data/spec/file_spec.rb +25 -0
- metadata +14 -8
- /data/sources/{easy → lime-easy}/.gitignore +0 -0
- /data/sources/{easy → lime-easy}/.go_import/readme.txt +0 -0
- /data/sources/{easy → lime-easy}/.go_import/runner.rb +0 -0
- /data/sources/{easy → lime-easy}/Export/readme.txt +0 -0
- /data/sources/{easy → lime-easy}/Gemfile +0 -0
- /data/sources/{easy → lime-easy}/converter.rb +0 -0
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZjBiMjk3NmIxNjgwZDNhYjI2M2M2MWEwYjUxMzgyODQ2MmNmNmE4NQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NTRkOGI4YTZiYjY5YzI5OTk0ZThlOWY4ZWY3NzM3YTBlNzMwMDk1MQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
M2JjMjNhNTc4ZTI0ODc2YTRjODU5YzFmODA2NDEzM2ZjZDI2YjE2ZTgwNGM5
|
10
|
+
Yjk3NjBhN2IxN2NhMzFhNzEzOGY0NTUxZWUzNjMxMmIxMzc3YWZiMDAwOTI3
|
11
|
+
M2E0Y2U3MzI0OGUxMWExNGI0ZTg2YTRkNDdiOGQzMzUwNjRkNGE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MDE0MmJmNjliY2Y4MjBkNDk3MTNhNGNjMjljZTMyNmE5YTNiOGNjMzEyMjNk
|
14
|
+
NzdiZWFkZjhiZjQ0ZTYzODRhNmIzM2YwZTYwOWRhM2ZhNzA3NGMxMmI0OTgw
|
15
|
+
MDViZGJhODNiYjJkYTdmMmRmOTVkY2YyYzE0OWYyNzQzZGZiZDQ=
|
data/bin/go-import
CHANGED
@@ -50,8 +50,8 @@ class GoImportCommandLine < Thor
|
|
50
50
|
:desc => "Name of the file where the converted source will be saved. This file should be sent to LIME Go. If the file already exist it will be replaced.",
|
51
51
|
:type => :string,
|
52
52
|
:required => false)
|
53
|
-
option(:
|
54
|
-
:desc => "Output will be created even if the import contains missing files",
|
53
|
+
option(:ignore_invalid_files,
|
54
|
+
:desc => "Output will be created even if the import contains missing or invalid files",
|
55
55
|
:type => :boolean,
|
56
56
|
:required => false)
|
57
57
|
option(:log_to_file,
|
@@ -82,36 +82,43 @@ class GoImportCommandLine < Thor
|
|
82
82
|
puts "WARNING: This means that files with an absolute path will be imported with their original path. Set this constant if you want to get files from the FILES_FOLDER directory."
|
83
83
|
end
|
84
84
|
|
85
|
-
is_ok, error_msg = can_be_serialized?(model, options.
|
85
|
+
is_ok, error_msg, warnings_msg = can_be_serialized?(model, options.ignore_invalid_files)
|
86
86
|
if is_ok
|
87
|
-
if options.
|
88
|
-
|
87
|
+
if options.ignore_invalid_files && model.documents.files.length > 0
|
88
|
+
log_and_remove_invalid_files model
|
89
89
|
end
|
90
90
|
|
91
91
|
go_data_zip = options.output.nil? == true ? "go.zip" : options.output
|
92
92
|
model.save_to_zip(go_data_zip)
|
93
93
|
puts "Source has been been converted into '#{go_data_zip}'."
|
94
|
+
if !warnings_msg.empty?
|
95
|
+
puts "WARNINGS: "
|
96
|
+
puts warnings_msg
|
97
|
+
end
|
94
98
|
else
|
95
99
|
puts "ERROR: Source could not be converted due to:"
|
96
100
|
puts error_msg
|
97
101
|
|
98
|
-
if !options.
|
99
|
-
model.documents.files.any? {|file|
|
100
|
-
puts "go-import detected
|
102
|
+
if !options.ignore_invalid_files &&
|
103
|
+
model.documents.files.any? {|file| file.validate.empty?}
|
104
|
+
puts "go-import detected invalid files (see above), you can ignore these with the option --ignore-invalid-files."
|
101
105
|
end
|
102
106
|
end
|
103
107
|
end
|
104
108
|
|
105
109
|
private
|
106
|
-
def
|
110
|
+
def log_and_remove_invalid_files(model)
|
107
111
|
if model.documents.files.length > 0
|
108
112
|
puts "Trying to log files that can't be found..."
|
109
|
-
file_log_header = "name;integration_id;path;organization.integrationid;organization.name;deal.integrationid;deal.name"
|
113
|
+
file_log_header = "name;integration_id;path;organization.integrationid;organization.name;deal.integrationid;deal.name;file.size"
|
110
114
|
file_log = ""
|
111
115
|
files_to_remove = []
|
112
116
|
model.documents.files.each do |file|
|
113
117
|
if !::File.exists?(file.path_for_project)
|
114
|
-
file_log = "#{file_log}#{file.name};#{file.integration_id};#{file.path};#{file.organization.nil? ? '' : file.organization.integration_id};#{file.organization.nil? ? '' : file.organization.name};#{file.deal.nil? ? '' : file.deal.integration_id};#{file.deal.nil? ? '' : file.deal.name}\n"
|
118
|
+
file_log = "#{file_log}#{file.name};#{file.integration_id};#{file.path};#{file.organization.nil? ? '' : file.organization.integration_id};#{file.organization.nil? ? '' : file.organization.name};#{file.deal.nil? ? '' : file.deal.integration_id};#{file.deal.nil? ? '' : file.deal.name};0\n"
|
119
|
+
files_to_remove.push file
|
120
|
+
elsif ::File.size(file.path_for_project) > GoImport::File::MAX_FILE_SIZE
|
121
|
+
file_log = "#{file_log}#{file.name};#{file.integration_id};#{file.path};#{file.organization.nil? ? '' : file.organization.integration_id};#{file.organization.nil? ? '' : file.organization.name};#{file.deal.nil? ? '' : file.deal.integration_id};#{file.deal.nil? ? '' : file.deal.name};#{::File.size(file.path_for_project)}\n"
|
115
122
|
files_to_remove.push file
|
116
123
|
end
|
117
124
|
end
|
@@ -121,12 +128,12 @@ class GoImportCommandLine < Thor
|
|
121
128
|
end
|
122
129
|
|
123
130
|
if file_log.length > 0
|
124
|
-
log_filename = 'go-import-
|
131
|
+
log_filename = 'go-import-invalid-files.csv'
|
125
132
|
::File.open(log_filename, 'w') { |f|
|
126
133
|
f.puts file_log_header
|
127
134
|
f.puts file_log
|
128
135
|
}
|
129
|
-
puts "WARNING: go-import has
|
136
|
+
puts "WARNING: go-import has invalid files. Filenames of all ignored files has been written to '#{log_filename}'."
|
130
137
|
else
|
131
138
|
puts "All files are OK."
|
132
139
|
end
|
@@ -134,18 +141,18 @@ class GoImportCommandLine < Thor
|
|
134
141
|
end
|
135
142
|
|
136
143
|
private
|
137
|
-
def can_be_serialized?(rootmodel,
|
144
|
+
def can_be_serialized?(rootmodel, ignore_invalid_files)
|
138
145
|
is_ok = false
|
139
146
|
error = rootmodel.sanity_check
|
140
147
|
if error.empty?
|
141
|
-
error = rootmodel.validate(
|
148
|
+
error, warnings = rootmodel.validate(ignore_invalid_files)
|
142
149
|
|
143
150
|
if error.empty?
|
144
151
|
is_ok = true
|
145
152
|
end
|
146
153
|
end
|
147
154
|
|
148
|
-
return [is_ok, error]
|
155
|
+
return [is_ok, error, warnings]
|
149
156
|
end
|
150
157
|
|
151
158
|
private
|
@@ -33,7 +33,11 @@ module GoImport
|
|
33
33
|
when 'Sverige'
|
34
34
|
'SE'
|
35
35
|
else
|
36
|
-
|
36
|
+
begin
|
37
|
+
IsoCountryCodes.search_by_name(name).first.alpha2
|
38
|
+
rescue
|
39
|
+
nil
|
40
|
+
end
|
37
41
|
end
|
38
42
|
end
|
39
43
|
# parses a line like "226 48 LUND" into its corresponding
|
@@ -55,7 +59,5 @@ module GoImport
|
|
55
59
|
end
|
56
60
|
return nil
|
57
61
|
end
|
58
|
-
|
59
|
-
|
60
62
|
end
|
61
|
-
end
|
63
|
+
end
|
data/lib/go_import/model/deal.rb
CHANGED
@@ -91,8 +91,9 @@ module GoImport
|
|
91
91
|
return reference
|
92
92
|
end
|
93
93
|
|
94
|
-
def validate
|
94
|
+
def validate(labels = nil)
|
95
95
|
error = String.new
|
96
|
+
warnings = String.new
|
96
97
|
|
97
98
|
if @name.nil? || @name.empty?
|
98
99
|
error = "A name is required for deal.\n}"
|
@@ -106,11 +107,15 @@ module GoImport
|
|
106
107
|
error = "#{error}\n#{@status.status_reference.validate}"
|
107
108
|
end
|
108
109
|
|
110
|
+
if !@status.nil? && !@status.status_reference.nil? && (labels.nil? || (!labels.nil? && !labels.include?(@status.status_reference.label)))
|
111
|
+
warnings = "Deal status '#{@status.status_reference.label}' missing, add to settings"
|
112
|
+
end
|
113
|
+
|
109
114
|
if error.length > 0
|
110
115
|
error = "#{error}\n#{serialize()}"
|
111
116
|
end
|
112
117
|
|
113
|
-
return error
|
118
|
+
return [error, warnings]
|
114
119
|
end
|
115
120
|
|
116
121
|
|
@@ -168,13 +173,13 @@ module GoImport
|
|
168
173
|
def value=(value)
|
169
174
|
if value.nil?
|
170
175
|
@value = "0"
|
171
|
-
elsif value.empty?
|
176
|
+
elsif value.respond_to?(:empty?) && value.empty?
|
172
177
|
@value = "0"
|
173
178
|
else
|
174
179
|
# we have had some issues with LIME Easy imports where
|
175
180
|
# the value was in the format "357 000". We need to
|
176
181
|
# remove those spaces.
|
177
|
-
fixed_value = value.gsub(" ", "")
|
182
|
+
fixed_value = value.to_s.gsub(" ", "")
|
178
183
|
|
179
184
|
# we assume that both , and . are thousand separators
|
180
185
|
# and remove them from the value string. We dont care
|
data/lib/go_import/model/file.rb
CHANGED
@@ -6,6 +6,8 @@ require_relative '../serialize_helper'
|
|
6
6
|
|
7
7
|
module GoImport
|
8
8
|
class File
|
9
|
+
MAX_FILE_SIZE = 100000000 # 100 Mb
|
10
|
+
|
9
11
|
include SerializeHelper
|
10
12
|
attr_accessor :id, :integration_id, :description
|
11
13
|
|
@@ -155,7 +157,7 @@ module GoImport
|
|
155
157
|
zip_file.add(@location_in_zip_file, path_for_project)
|
156
158
|
end
|
157
159
|
|
158
|
-
def validate(
|
160
|
+
def validate(ignore_invalid_files = false)
|
159
161
|
error = String.new
|
160
162
|
warning = String.new
|
161
163
|
|
@@ -165,12 +167,15 @@ module GoImport
|
|
165
167
|
|
166
168
|
if @path.nil? || @path.empty?
|
167
169
|
error = "Path is required for file.\n"
|
168
|
-
|
169
|
-
if
|
170
|
+
elsif !ignore_invalid_files
|
171
|
+
if !::File.exists?(path_for_project())
|
170
172
|
error = "#{error}Can't find file with name '#{@name}' and original path '#{@path}' at '#{path_for_project()}'."
|
173
|
+
elsif ::File.size(path_for_project()) > MAX_FILE_SIZE
|
174
|
+
error = "#{error}File '#{@name}' is bigger than #{MAX_FILE_SIZE} bytes."
|
171
175
|
end
|
172
176
|
end
|
173
177
|
|
178
|
+
|
174
179
|
if @created_by_reference.nil?
|
175
180
|
error = "#{error}Created_by is required for file (#{@name}).\n"
|
176
181
|
end
|
data/lib/go_import/model/note.rb
CHANGED
@@ -208,6 +208,10 @@ module GoImport
|
|
208
208
|
raise AlreadyAddedError, "Already added a note with integration_id #{note.integration_id}"
|
209
209
|
end
|
210
210
|
|
211
|
+
if note.created_by.nil?
|
212
|
+
note.created_by = @import_coworker
|
213
|
+
end
|
214
|
+
|
211
215
|
@notes.push(note)
|
212
216
|
|
213
217
|
return note
|
@@ -306,22 +310,26 @@ module GoImport
|
|
306
310
|
return error.strip
|
307
311
|
end
|
308
312
|
|
309
|
-
def validate(
|
310
|
-
|
313
|
+
def validate(ignore_invalid_files = false)
|
314
|
+
errors = String.new
|
315
|
+
warnings = String.new
|
311
316
|
|
312
317
|
@organizations.each do |o|
|
313
318
|
validation_message = o.validate()
|
314
319
|
|
315
320
|
if !validation_message.empty?
|
316
|
-
|
321
|
+
errors = "#{errors}\n#{validation_message}"
|
317
322
|
end
|
318
323
|
end
|
319
324
|
|
320
325
|
@deals.each do |deal|
|
321
|
-
|
326
|
+
error, warning = deal.validate @settings.deal.statuses.map {|status| status.label}
|
322
327
|
|
323
|
-
if !
|
324
|
-
|
328
|
+
if !error.empty?
|
329
|
+
errors = "#{errors}\n#{error}"
|
330
|
+
end
|
331
|
+
if !warning.empty?
|
332
|
+
warnings = "#{warnings}\n#{warning}"
|
325
333
|
end
|
326
334
|
end
|
327
335
|
|
@@ -329,25 +337,25 @@ module GoImport
|
|
329
337
|
validation_message = note.validate
|
330
338
|
|
331
339
|
if !validation_message.empty?
|
332
|
-
|
340
|
+
errors = "#{errors}\n#{validation_message}"
|
333
341
|
end
|
334
342
|
end
|
335
343
|
|
336
344
|
@documents.links.each do |link|
|
337
345
|
validation_message = link.validate
|
338
346
|
if !validation_message.empty?
|
339
|
-
|
347
|
+
errors = "#{errors}\n#{validation_message}"
|
340
348
|
end
|
341
349
|
end
|
342
350
|
|
343
351
|
@documents.files.each do |file|
|
344
|
-
validation_message = file.validate(
|
352
|
+
validation_message = file.validate(ignore_invalid_files)
|
345
353
|
if !validation_message.empty?
|
346
|
-
|
354
|
+
errors = "#{errors}\n#{validation_message}"
|
347
355
|
end
|
348
356
|
end
|
349
357
|
|
350
|
-
return
|
358
|
+
return [errors.strip, warnings.strip]
|
351
359
|
end
|
352
360
|
|
353
361
|
# @!visibility private
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# See http://help.github.com/ignore-files/ for more about ignoring files.
|
2
|
+
#
|
3
|
+
# If you find yourself ignoring temporary files generated by your text editor
|
4
|
+
# or operating system, you probably want to add a global ignore instead:
|
5
|
+
# git config --global core.excludesfile ~/.gitignore_global
|
6
|
+
|
7
|
+
# Ignore bundler config
|
8
|
+
/.bundle
|
9
|
+
# Ignore built gems
|
10
|
+
/*.gem
|
11
|
+
# Ignore all logfiles and tempfiles.
|
12
|
+
/tmp
|
13
|
+
/spec/tmp
|
14
|
+
pkg
|
@@ -0,0 +1 @@
|
|
1
|
+
This source converts a LIME Pro "Core" database to LIME Go.
|