ntq_excelsior 0.4.1 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2f5bdfecae33f17efa14aaac26fcfd4d2ebdc9e0117e5dc924e10c1b36022970
4
- data.tar.gz: 8771fc83edec065d107912d57e45e8982a804c303ccea0b035bf206f2feaec51
3
+ metadata.gz: d625de9852ec2a7f9ed5d97f4ae6cd73f2420fe3aea228b10baff171525dbc6d
4
+ data.tar.gz: 8e956d58ac4a5556f059f2c093cd57c9148c9f2d3d9aa1f8fba04a2a1ed6a769
5
5
  SHA512:
6
- metadata.gz: af4d4102f6ab0ad3d2cd82e75c2cb98bd114b84b798b3736b8de5bb32029da9754e7f7b378533f8c849ad99c7339a5ea170f9e4f8127f0d97dbc0e72d0537cf1
7
- data.tar.gz: b0e9d976d84e39e76f47e5c60ae21aa7194e54c66ab910cbc6d568d4d6d3773a4235edfdc8844310e1a4ebc37f1e361e3b241aea9bfe03e55bff7414835d88a6
6
+ metadata.gz: 7379be5c7679ff1c8126ce0bd39381053e23c8179bdcc50c3f70382e0ce1ffe217d215a02e64c494d0e026e74e4e4908338526a3476e1d3dbf0ea87c58b27b99
7
+ data.tar.gz: 6239406502286f7ea1a68ebcbf85f4c9c6b72bd4c55fbd9c2247fd2208a3f5a2d0e500256b339a41bc5357dd03281cff9bd83d253c39257237412f1c9bc84496
data/README.md CHANGED
@@ -89,7 +89,37 @@ class UserImporter < NtqExcelsior::Importer
89
89
 
90
90
  model_klass "User"
91
91
 
92
- primary_key :id
92
+ primary_key :email
93
+
94
+ # autosave false
95
+
96
+ structure [{
97
+ header: "Email",
98
+ description: "Email de l'utilisateur a créer ou modifier",
99
+ required: true,
100
+ },
101
+ {
102
+ header: "Actif",
103
+ description: "Utilisateur activé",
104
+ required: true,
105
+ values: [
106
+ {
107
+ header: "True",
108
+ description: "Activé",
109
+ }, {
110
+ header: "False",
111
+ description: "Inactivé",
112
+ }
113
+ ]
114
+ }, {
115
+ header: "Prénom",
116
+ required: true,
117
+ }, {
118
+ header: "Nom",
119
+ required: true,
120
+ }]
121
+
122
+ sample_file "/import_samples/users.xlsx"
93
123
 
94
124
  schema({
95
125
  email: 'Email',
@@ -11,6 +11,10 @@ module NtqExcelsior
11
11
  @autosave ||= value
12
12
  end
13
13
 
14
+ def autoset(value = nil)
15
+ @autoset ||= value
16
+ end
17
+
14
18
  def spreadsheet_options(value = nil)
15
19
  @spreadsheet_options ||= value
16
20
  end
@@ -99,8 +103,6 @@ module NtqExcelsior
99
103
  end
100
104
  end
101
105
 
102
- raise Roo::HeaderRowNotFoundError unless (@required_line_keys - parsed_line.keys).size == 0
103
-
104
106
  parsed_line
105
107
  end
106
108
 
@@ -115,7 +117,29 @@ module NtqExcelsior
115
117
  def find_or_initialize_record(line)
116
118
  return nil unless self.class.primary_key && self.class.model_klass
117
119
 
118
- self.class.model_klass.constantize.find_or_initialize_by("#{self.class.primary_key}": line[self.class.primary_key.to_sym])
120
+ if line[self.class.primary_key.to_sym].present?
121
+ if self.class.primary_key.to_sym == :id
122
+ record = self.class.model_klass.constantize.find_by id: line[self.class.primary_key.to_sym]
123
+ else
124
+ record = self.class.model_klass.constantize.find_or_initialize_by("#{self.class.primary_key}": line[self.class.primary_key.to_sym])
125
+ end
126
+ end
127
+ record = self.class.model_klass.constantize.new unless record
128
+ record
129
+ end
130
+
131
+ def record_attributes(record)
132
+ return @record_attributes if @record_attributes
133
+
134
+ @record_attributes = self.class.schema.keys.select{|k| k.to_sym != :id && record.respond_to?(:"#{k}=") }
135
+ end
136
+
137
+ def set_record_fields(record, line)
138
+ attributes_to_set = record_attributes(record)
139
+ attributes_to_set.each do |attribute|
140
+ record.send(:"#{attribute}=", line[attribute])
141
+ end
142
+ record
119
143
  end
120
144
 
121
145
  def import_line(line, save: true)
@@ -123,6 +147,10 @@ module NtqExcelsior
123
147
  @success = false
124
148
  @action = nil
125
149
  @errors = []
150
+
151
+ if (!self.class.autoset.nil? || self.class.autoset)
152
+ record = set_record_fields(record, line)
153
+ end
126
154
 
127
155
  yield(record, line) if block_given?
128
156
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NtqExcelsior
4
- VERSION = "0.4.1"
4
+ VERSION = "0.5.1"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ntq_excelsior
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-02-27 00:00:00.000000000 Z
11
+ date: 2023-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: caxlsx