@@ -23,6 +23,24 @@ module DSL
2323 # +plural_resource_label+:: pluralized resource label value (default config.plural_resource_label)
2424 #
2525
26+
27+ DEFAULT_RESULT_PROC = proc do |result , options |
28+
29+ model_name = options [ :resource_label ] . downcase
30+ plural_model_name = options [ :plural_resource_label ] . downcase
31+ if result . empty?
32+ flash [ :warning ] = I18n . t ( 'active_admin_import.file_empty_error' )
33+ else
34+ if result . has_imported?
35+ flash [ :notice ] = I18n . t ( 'active_admin_import.imported' , count : result . imported_qty , model : model_name , plural_model : plural_model_name )
36+ end
37+ if result . has_failed?
38+ flash [ :error ] = I18n . t ( 'active_admin_import.failed' , count : result . failed . count , model : model_name , plural_model : plural_model_name )
39+ end
40+ end
41+ end
42+
43+
2644 def active_admin_import ( options = { } , &block )
2745 options . assert_valid_keys ( *VALID_OPTIONS )
2846
@@ -53,7 +71,6 @@ def active_admin_import(options = {}, &block)
5371 end
5472 end
5573
56-
5774
5875 collection_action :do_import , method : :post do
5976 authorize! ( ActiveAdminImport ::Auth ::IMPORT , active_admin_config . resource_class )
@@ -65,24 +82,11 @@ def active_admin_import(options = {}, &block)
6582 @importer = Importer . new ( options [ :resource_class ] , @active_admin_import_model , options )
6683 begin
6784 result = @importer . import
85+
6886 if block_given?
6987 instance_eval &block
7088 else
71-
72- model_name = options [ :resource_label ] . downcase
73- plural_model_name = options [ :plural_resource_label ] . downcase
74-
75-
76- if result . empty?
77- flash [ :warning ] = I18n . t ( 'active_admin_import.file_empty_error' )
78- else
79- if result . has_imported?
80- flash [ :notice ] = I18n . t ( 'active_admin_import.imported' , count : result . imported_qty , model : model_name , plural_model : plural_model_name )
81- end
82- if result . has_failed?
83- flash [ :error ] = I18n . t ( 'active_admin_import.failed' , count : result . failed . count , model : model_name , plural_model : plural_model_name )
84- end
85- end
89+ instance_exec result , options , &DEFAULT_RESULT_PROC
8690 end
8791 rescue ActiveRecord ::Import ::MissingColumnError , NoMethodError => e
8892 flash [ :error ] = I18n . t ( 'active_admin_import.file_error' , message : e . message )
0 commit comments