tramway-core 1.18.0.4 → 1.18.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: dc4e360083a946fd3e4d022ed65747d56f21a42adb46cda0224d6873cf8db42d
4
- data.tar.gz: c1a39ccd53513c8ab09d9d2e1ff576b9c309ba7f07e7f2238b03501dfb20057b
3
+ metadata.gz: 88f57e54e293b5c5a85a88563762fd8c26df2ccbcb6eedebcb8ad1636d19ab08
4
+ data.tar.gz: 721461846180ea4eb78ebdbc314029be09ff3c391c995900ef0d2a498236af62
5
5
  SHA512:
6
- metadata.gz: 77f182880e0b69605f74e99a660ce5d855efc2b37f3179fd38df111fd9eaae0bd7fb67adaa1b6a3ed16bf0b779508e99da07062b203f25f005d66d432741ae00
7
- data.tar.gz: aec229afedc05c8353a4a499f50c91dea8510a0e8ffb5dec7756f241a61ef4f62cd1fcd0586fa80ccffa287be0c8fa76909af35592abfeadcf85ea6f0f8a7303
6
+ metadata.gz: b641dc9b842fb20fef05c90a73ed0007ddb9804b45cef8e6b74b2c6eea99e6610580d79450a7ef121a53a373685369addb83078e0db5e658c2129306c542c62c
7
+ data.tar.gz: 7f19244857938c969c03e52d49c063d34b52e25e4aad17d9bdee41bc7d12b2e650f241ec51a2f6a90ce71ab2cc2fd5409ac5d26857c59b464d44a095632d69c8
data/README.md CHANGED
@@ -34,7 +34,31 @@ Rails.application.config.assets.precompile += %w( *.jpg *.png *.js )
34
34
  ```
35
35
  # Usage
36
36
 
37
- ## Decorators
37
+ ## Tramway::Core::ApplicationRecord
38
+
39
+ ### uploader
40
+
41
+ Tramway use [carrierwave](https://github.com/carrierwaveuploader/carrierwave) for file uploading by default. To mount uploader you should use `uploader` method
42
+
43
+ Interface: `uploader(attribute_name, uploader_name, **options)`
44
+
45
+ * attribute_name - ActiveRecord attribute to mount uploader
46
+ * uploader_name - **short** uploader name. You need to connect uploaders which are compatible with Tramway. Available uploaders:
47
+ * :photo - you can see it [here](https://github.com/Purple-Magic/tramway-core/blob/develop/app/uploaders/photo_uploader.rb)
48
+ * :file - you can see it [here](https://github.com/Purple-Magic/tramway-core/blob/develop/app/uploaders/file_uploader.rb)
49
+ * options - you are available to set options for uploaders exactly for this model. Available options:
50
+ * versions - **only for :photo**. Set needed versions for file to be cropped. If empty - 0 zero versions will be used. All versions you can see [here](https://github.com/Purple-Magic/tramway-core/blob/develop/app/uploaders/photo_uploader.rb)
51
+ * extensions - whitelist of file extensions. If empty will be used default whitelist from the uploaders (links above)
52
+
53
+ Example:
54
+
55
+ ```ruby
56
+ class User < Tramway::Core::ApplicationRecord
57
+ uploader :avatar, :photo, version: [ :small, :medium ], extensions: [ :jpg, :jpeg ]
58
+ end
59
+ ```
60
+
61
+ ## Tramway::Core::ApplicationDecorator
38
62
  ### Associations
39
63
 
40
64
  Your can decorate association models. Supporting all types of association
@@ -24,7 +24,7 @@ module Tramway::Core::ExtendableFormsHelpers::ClassBuilder
24
24
  field = property[1][:object]
25
25
  define_file_property_assignment_method property, field
26
26
  else
27
- #next unless property[1][:validates].present?
27
+ # next unless property[1][:validates].present?
28
28
 
29
29
  define_assignment_method property
30
30
  end
@@ -5,20 +5,14 @@ module Tramway::Core::ExtendableFormsHelpers::Submit::ClassHelpers
5
5
  define_method 'submit' do |params|
6
6
  model.values ||= {}
7
7
  extended_params = extended(simple_properties, more_properties, params)
8
- params.each do |key, value|
9
- method_name = "#{key}="
10
- send method_name, value if respond_to?(method_name)
11
- end
8
+ every_attribute_set params
12
9
  model.values = extended_params.reduce(model.values) do |hash, pair|
13
10
  hash.merge! pair[0] => pair[1]
14
11
  end
15
12
 
16
13
  return unless model.errors.empty?
17
- params.each { |key, value| send("#{key}=", value) }
18
- result = save
19
- result.tap do
20
- collecting_associations_errors unless result
21
- end
14
+
15
+ save_in_submit params
22
16
  end
23
17
  end
24
18
  end
@@ -4,4 +4,18 @@ module Tramway::Core::ExtendableFormsHelpers::Submit::ObjectHelpers
4
4
  def extended(simple_properties, more_properties, params)
5
5
  params.except(*simple_properties.keys).except(*jsonb_ignored_properties(more_properties)).permit!.to_h
6
6
  end
7
+
8
+ def every_attribute_set(params)
9
+ params.each do |key, value|
10
+ method_name = "#{key}="
11
+ send(method_name, value) if respond_to?(method_name)
12
+ end
13
+ end
14
+
15
+ def save_in_submit(_params)
16
+ result = save
17
+ result.tap do
18
+ collecting_associations_errors unless result
19
+ end
20
+ end
7
21
  end
@@ -46,11 +46,16 @@ class Tramway::Core::ApplicationRecord < ActiveRecord::Base
46
46
  def uploader(attribute_name, uploader_name, **options)
47
47
  mount_uploader attribute_name, "#{uploader_name.to_s.camelize}Uploader".constantize
48
48
  @versions = options[:versions] if uploader_name == :photo
49
+ @extensions = options[:extensions]
49
50
  end
50
51
 
51
52
  def photo_versions
52
53
  @versions
53
54
  end
55
+
56
+ def file_extensions
57
+ @extensions
58
+ end
54
59
  end
55
60
 
56
61
  # FIXME: detect inhertited locales
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class FileUploader < ApplicationUploader
4
- def extension_white_list
5
- %w[pdf doc docx xls csv xlsx jpg svg png jpeg gif]
4
+ def extension_whitelist
5
+ model.class.file_extensions || %w[pdf doc docx xls csv xlsx jpg svg png jpeg gif]
6
6
  end
7
7
  end
@@ -8,7 +8,7 @@ module ImageDefaults
8
8
  [mounted_as, version_name].compact.join('_') << '.gif'
9
9
  end
10
10
 
11
- def extension_white_list
12
- %w[jpg jpeg gif png]
11
+ def extension_whitelist
12
+ model.class.file_extensions || %w[jpg jpeg gif png]
13
13
  end
14
14
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Tramway
4
4
  module Core
5
- VERSION = '1.18.0.4'
5
+ VERSION = '1.18.1'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tramway-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.18.0.4
4
+ version: 1.18.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Kalashnikov