active_admin_simple_import 0.0.2 → 0.0.3
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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 502c74ea4b01efe146f79e7c99d5bf431da2a067
|
4
|
+
data.tar.gz: 276f877405ae5f42077d302cd98242ec47eff7b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c3c3012d3eb31be65a46113d88d1800ac8c35473675a5c6c4153a01c9c104f6b3c7847671676f7d19c34593662b22ea6c05811065577515b3f600dab804b845
|
7
|
+
data.tar.gz: 309f2d68652d04a39acd191ca5833869ddd155d6a82568e6391375e4410e57463306d218784ca219a26c9ae2f732c2015c108f33d4c8298a494070a4317bcb4a
|
@@ -1,41 +1,5 @@
|
|
1
1
|
require 'active_admin'
|
2
|
-
require '
|
3
|
-
require
|
2
|
+
require 'active_admin_import/engine'
|
3
|
+
require 'active_admin_import/dsl'
|
4
4
|
|
5
|
-
module ActiveAdminSimpleImport
|
6
|
-
class Engine < Rails::Engine
|
7
|
-
initialize "active_admin_simple_import.load_app_instance_data" do |app|
|
8
|
-
ActiveAdminSimpleImport.setup do |config|
|
9
|
-
config.app_root = app.root
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
config.mount_at = '/'
|
14
|
-
end
|
15
|
-
|
16
|
-
module DSL
|
17
|
-
def active_admin_import(options)
|
18
|
-
options = { exclusion_list: [], after_update: nil }
|
19
|
-
.merge options
|
20
|
-
|
21
|
-
collection_action :import, method: :get do
|
22
|
-
render template: 'admin/import'
|
23
|
-
end
|
24
|
-
|
25
|
-
collection_action :do_import, method: :post do
|
26
|
-
rows = CSV.read params[:csv][:file].tempfile
|
27
|
-
attrs = rows.shift.map{ |a| a.parameterize('_').to_sym }
|
28
|
-
object_class = controller_name.singularize.camelize.constantize
|
29
|
-
objects = rows.map{ |row| Hash[*attrs.zip(row).flatten] }
|
30
|
-
objects.each do |object|
|
31
|
-
edited_object = object_class.find object.delete :id
|
32
|
-
edited_object.update_attributes object.except(*options[:exclusion_list])
|
33
|
-
next if options[:after_update].nil? || !options[:after_update].is_a?(Proc)
|
34
|
-
options[:after_update].call(edited_object, object)
|
35
|
-
end
|
36
|
-
redirect_to collection_path, notice: 'Zaimportowana plik CSV!'
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
5
|
::ActiveAdmin::DSL.send(:include, ActiveAdminSimpleImport::DSL)
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module ActiveAdminSimpleImport
|
2
|
+
module DSL
|
3
|
+
def active_admin_import(options)
|
4
|
+
options = { exclusion_list: [], after_update: nil }
|
5
|
+
.merge options
|
6
|
+
|
7
|
+
collection_action :import, method: :get do
|
8
|
+
render template: 'admin/import'
|
9
|
+
end
|
10
|
+
|
11
|
+
collection_action :do_import, method: :post do
|
12
|
+
rows = CSV.read params[:csv][:file].tempfile
|
13
|
+
attrs = rows.shift.map{ |a| a.parameterize('_').to_sym }
|
14
|
+
object_class = controller_name.singularize.camelize.constantize
|
15
|
+
objects = rows.map{ |row| Hash[*attrs.zip(row).flatten] }
|
16
|
+
objects.each do |object|
|
17
|
+
edited_object = object_class.find object.delete :id
|
18
|
+
edited_object.update_attributes object.except(*options[:exclusion_list])
|
19
|
+
next if options[:after_update].nil? || !options[:after_update].is_a?(Proc)
|
20
|
+
options[:after_update].call(edited_object, object)
|
21
|
+
end
|
22
|
+
redirect_to collection_path, notice: 'Zaimportowana plik CSV!'
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_admin_simple_import
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Damian Romanów
|
@@ -17,6 +17,8 @@ extensions: []
|
|
17
17
|
extra_rdoc_files: []
|
18
18
|
files:
|
19
19
|
- lib/active_admin_simple_import.rb
|
20
|
+
- lib/active_admin_simple_import/dsl.rb
|
21
|
+
- lib/active_admin_simple_import/engine.rb
|
20
22
|
homepage: https://github.com/HarenBroog/active_admin_simple_import
|
21
23
|
licenses:
|
22
24
|
- MIT
|