alchemy-custom-model 2.0.3 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7f3832f97edc764e3769b6b9dc1349be21942441
4
- data.tar.gz: 997a6c358b5ad2ed9f468d218ec6637b6a48610a
3
+ metadata.gz: 32dfcdd9c7960977963a3758ef1af6d517362b28
4
+ data.tar.gz: ec7f6360bd70622e39f25904c6b5f680667507a7
5
5
  SHA512:
6
- metadata.gz: d2e592be9326fc6425133241ebb5747ff567b98549cc28571a045a85b990fc645789ea0ffbd6f27f85e6eb815e6b730eb6f2305cb753e18e3e962dff4d39a0ee
7
- data.tar.gz: 87d9d1d0b94725b0af4b2aad1aae6677422b60f453e5f24be8dbd76b989b198cbce5f8cfae516d51153fc1fd17b3d19612ac02e0c0617196f697f96ce2716d58
6
+ metadata.gz: 80de05b395cebc79fca0426fc5d759dae0d651709f4c14de7a3e290cc50cb7ad2b4fc1e83d9ace7b94428d538bfd340c5a90885e7a6d214b8e3997414f374de1
7
+ data.tar.gz: 9519f06da535bc01c2de997224a5d385ccf380b8533ca02fb4efec48a72e5f2ed935ce2138df8cd4250a0238e7d59e9241bccf2f1522e67f585004ac6130cf01
@@ -74,6 +74,26 @@ module Alchemy::Custom::Model
74
74
  end
75
75
  end
76
76
 
77
+ def export_csv
78
+
79
+ @query = base_class.ransack(params[:q])
80
+ @objects = @query.result(distinct: true)
81
+ @objects = @objects.accessible_by(current_ability)
82
+ @objects = @objects.page(params[:page]).
83
+ per(params[:per_page] ||
84
+ (base_class::DEFAULT_PER_PAGE if base_class.const_defined? :DEFAULT_PER_PAGE) ||
85
+ 25)
86
+
87
+
88
+ send_data generate_csv, filename: "export_member.csv", disposition: :attachment, type: "text/csv"
89
+
90
+ end
91
+
92
+ def export_csv_full
93
+ @objects = base_class.all.accessible_by(current_ability)
94
+ send_data generate_csv, filename: "export_member.csv", disposition: :attachment, type: "text/csv"
95
+ end
96
+
77
97
 
78
98
  class << self
79
99
 
@@ -202,6 +222,28 @@ module Alchemy::Custom::Model
202
222
  end
203
223
 
204
224
 
225
+ def generate_csv
226
+ header_csv = self.columns_csv.collect {|attr| base_class.human_attribute_name(attr)}
227
+
228
+ CSV.generate(headers: true) do |csv|
229
+ csv << header_csv
230
+ @objects.each do |member|
231
+ csv_row = self.columns_csv.collect do |attr|
232
+ member.send attr
233
+ end
234
+ csv << csv_row
235
+ end
236
+ end
237
+ end
238
+
239
+
240
+ protected
241
+
242
+ def columns_csv
243
+ table_columns
244
+ end
245
+
246
+
205
247
 
206
248
  end
207
249
  end
@@ -1,4 +1,3 @@
1
-
2
1
  <% content_for(:toolbar) do %>
3
2
  <%= render 'alchemy/admin/partials/site_select' %>
4
3
  <%= render 'language_tree_select' %>
@@ -32,6 +31,28 @@
32
31
  }
33
32
  end
34
33
 
34
+ if can?(:export_csv, base_class) and check_presence_polymorphic_path([:export_csv, :admin, base_class.to_s.demodulize.downcase.pluralize ], :get, format: :csv)
35
+ buttons << {
36
+ icon: "download",
37
+ label: t(:export_selected_data),
38
+ url: polymorphic_path([:export_csv, :admin, base_class.to_s.demodulize.downcase.pluralize],format: :csv),
39
+ title: t(:export_selected_data),
40
+ dialog: false,
41
+ if_permitted_to: [:export_csv, base_class]
42
+ }
43
+ end
44
+
45
+ if can?(:export_csv_full, base_class) and check_presence_polymorphic_path([:export_csv_full, :admin, base_class.to_s.demodulize.downcase.pluralize ], :get, format: :csv)
46
+ buttons << {
47
+ icon: "file-archive",
48
+ label: t(:export_all_data),
49
+ url: polymorphic_path([:export_csv_full, :admin, base_class.to_s.demodulize.downcase.pluralize],format: :csv),
50
+ title: t(:export_all_data),
51
+ dialog: false,
52
+ if_permitted_to: [:export_csv_full, base_class]
53
+ }
54
+ end
55
+
35
56
  %>
36
57
 
37
58
  <% toolbar(
@@ -1,7 +1,7 @@
1
1
  module Alchemy
2
2
  module Custom
3
3
  module Model
4
- VERSION = '2.0.3'
4
+ VERSION = '2.1.0'
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alchemy-custom-model
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alessandro Baccanelli
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-05-15 00:00:00.000000000 Z
12
+ date: 2019-07-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: alchemy_cms