tramway-core 1.17.7.2 → 1.18.0.1

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
  SHA256:
3
- metadata.gz: ea351fe0ccc735e8df8c11efd9136b6f5d3287b0bd9d7d0e98fe94bd74c9b070
4
- data.tar.gz: 11ea49c81f3ace9ffc97f4b3396ba52ce7d61135dbc50eb621e2ccbca342d05a
3
+ metadata.gz: bc1dd51b28f3431c8df5cd27f8350d7dc2b4bedcf7a811c48130a9eb8d1d207b
4
+ data.tar.gz: fe2291fcb3bc27d9de9ebe3753ea493ef99a19ebb49db88fcf6e3b9917b2c6be
5
5
  SHA512:
6
- metadata.gz: 26bd97b39c3494f4d7356905397f5ec68d3fce0cecb839a4d731efdbe81a80da6e48f1bd8bb50528cd530cc500a580c1752df3991f992f807963aa51c77482c2
7
- data.tar.gz: 435a9723200273b1c857c668c144b26d07183f422c97f2c1aead5134ab38ae660fe09042de475b77b937b76ac2f8498fe0cdf09f04b64a44c7765c5b96b52fb8
6
+ metadata.gz: 63428cee65707e287d8abb8e2d110f1b83342213a14d43f77bebb20530a9fb0765bd81d4659360a258f59d6597e32120d415ee80a508c9abb4bc49681d357b20
7
+ data.tar.gz: 3d597d30be2064ece9c9d7520964445868349ab8c924400f5f944fe18abade3efb673a1026ebc5dc576b178900ee4831682aff7a51e38f23c8bfd056cc2b03e3
@@ -1,16 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class Tramway::Core::ApplicationForm < ::Reform::Form
3
+ class Tramway::Core::ApplicationForm
4
4
  include Tramway::Core::ApplicationForms::AssociationObjectHelpers
5
5
  include Tramway::Core::ApplicationForms::ConstantObjectActions
6
6
  include Tramway::Core::ApplicationForms::PropertiesObjectHelper
7
7
  include Tramway::Core::ApplicationForms::ObjectHelpers
8
+ include Tramway::Core::ApplicationForms::SubmitHelper
8
9
 
9
10
  attr_accessor :submit_message
10
11
 
11
12
  def initialize(object = nil)
12
- object ||= self.class.model_class.new
13
- super(object).tap do
13
+ tap do
14
+ @object = object
14
15
  @@model_class = object.class
15
16
  @@enumerized_attributes = object.class.try :enumerized_attributes
16
17
  @@associations ||= []
@@ -23,14 +24,6 @@ class Tramway::Core::ApplicationForm < ::Reform::Form
23
24
  end
24
25
  end
25
26
 
26
- def submit(params)
27
- if params
28
- validate(params) ? save : collecting_associations_errors
29
- else
30
- Tramway::Error.raise_error(:tramway, :core, :application_form, :submit, :params_should_not_be_nil)
31
- end
32
- end
33
-
34
27
  def model_name
35
28
  @@model_class.model_name
36
29
  end
@@ -40,19 +33,29 @@ class Tramway::Core::ApplicationForm < ::Reform::Form
40
33
  end
41
34
 
42
35
  class << self
36
+ include Tramway::Core::ApplicationForms::AssociationClassHelpers
43
37
  include Tramway::Core::ApplicationForms::ConstantClassActions
44
38
 
45
39
  delegate :defined_enums, to: :model_class
46
40
 
41
+ def properties(*props)
42
+ props.each { |prop| property prop }
43
+ end
44
+
45
+ def property(prop)
46
+ @@properties ||= []
47
+ @@properties << prop
48
+ delegate prop, to: :model
49
+ define_method("#{prop}=") do |value|
50
+ model.send "#{prop}=", value
51
+ end
52
+ end
53
+
47
54
  def association(property)
48
55
  properties property
49
56
  @@associations = ((defined?(@@associations) && @@associations) || []) + [property]
50
57
  end
51
58
 
52
- def associations(*properties)
53
- properties.each { |property| association property }
54
- end
55
-
56
59
  def full_class_name_associations
57
60
  @@associations&.reduce({}) do |hash, association|
58
61
  options = @@model_class.reflect_on_all_associations(:belongs_to).select do |a|
@@ -113,13 +116,4 @@ class Tramway::Core::ApplicationForm < ::Reform::Form
113
116
  model.send("#{association}=", send(association)) if errors.details[association] == [{ error: :blank }]
114
117
  end
115
118
  end
116
-
117
- def save
118
- super
119
- rescue ArgumentError => e
120
- Tramway::Error.raise_error :tramway, :core, :application_form, :save, :argument_error, message: e.message
121
- rescue StandardError => e
122
- Tramway::Error.raise_error :tramway, :core, :application_form, :save, :looks_like_you_have_method,
123
- method_name: e.name.to_s.gsub('=', ''), model_class: @@model_class, class_name: self.class
124
- end
125
119
  end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tramway::Core::ApplicationForms::AssociationClassHelpers
4
+ def associations(*properties)
5
+ properties.each { |property| association property }
6
+ end
7
+ end
@@ -7,7 +7,7 @@ module Tramway::Core::ApplicationForms::AssociationObjectHelpers
7
7
  else
8
8
  self.class.send(:define_method, "#{association}=") do |value|
9
9
  model.send "#{association}_id=", value
10
- super class_name.find value
10
+ model.send "#{association}=", class_name.find(value)
11
11
  end
12
12
  end
13
13
  end
@@ -20,7 +20,7 @@ module Tramway::Core::ApplicationForms::AssociationObjectHelpers
20
20
  Tramway::Error.raise_error :tramway, :core, :application_form, :initialize, :polymorphic_class_is_nil,
21
21
  association_name: association
22
22
  else
23
- super association_class.find value.split('_')[-1]
23
+ model.send "#{association}=", association_class.find(value.split('_')[-1])
24
24
  send "#{association}_type=", association_class.to_s
25
25
  end
26
26
  end
@@ -8,4 +8,8 @@ module Tramway::Core::ApplicationForms::ObjectHelpers
8
8
  def persisted?
9
9
  model.id.nil?
10
10
  end
11
+
12
+ def model
13
+ @object
14
+ end
11
15
  end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tramway::Core::ApplicationForms::SubmitHelper
4
+ def submit(params)
5
+ if params
6
+ params.each { |key, value| send("#{key}=", value) }
7
+ result = save
8
+ result.tap do
9
+ collecting_associations_errors unless result
10
+ end
11
+ else
12
+ Tramway::Error.raise_error(:tramway, :core, :application_form, :submit, :params_should_not_be_nil)
13
+ end
14
+ end
15
+
16
+ def save
17
+ model.save
18
+ rescue ArgumentError => e
19
+ Tramway::Error.raise_error :tramway, :core, :application_form, :save, :argument_error, message: e.message
20
+ rescue StandardError => e
21
+ Tramway::Error.raise_error :tramway, :core, :application_form, :save, :looks_like_you_have_method,
22
+ method_name: e.name.to_s.gsub('=', ''), model_class: @@model_class, class_name: self.class
23
+ end
24
+ end
@@ -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
@@ -9,8 +9,12 @@ module Tramway::Core::ExtendableFormsHelpers::MorePropertiesHelper
9
9
 
10
10
  def define_assignment_method(property)
11
11
  define_method "#{property[0]}=" do |value|
12
- property[1][:validates].each do |pair|
13
- make_validates property[0], pair, value
12
+ if property[1][:validates].present?
13
+ property[1][:validates].each do |pair|
14
+ make_validates property[0], pair, value
15
+ end
16
+ else
17
+ model.values.merge property[0] => value
14
18
  end
15
19
  end
16
20
  end
@@ -42,6 +42,15 @@ class Tramway::Core::ApplicationRecord < ActiveRecord::Base
42
42
  def search_by(*attributes, **associations)
43
43
  pg_search_scope :full_text_search, against: attributes, associated_against: associations
44
44
  end
45
+
46
+ def uploader(attribute_name, uploader_name, **options)
47
+ mount_uploader attribute_name, "#{uploader_name.to_s.camelize}Uploader".constantize
48
+ @versions = options[:versions] if uploader_name == :photo
49
+ end
50
+
51
+ def photo_versions
52
+ @versions
53
+ end
45
54
  end
46
55
 
47
56
  # FIXME: detect inhertited locales
@@ -6,6 +6,16 @@ class ApplicationUploader < CarrierWave::Uploader::Base
6
6
  storage :file
7
7
 
8
8
  def store_dir
9
- "system/uploads/#{model.class.model_name.to_s.underscore}/#{mounted_as}/#{model.id}"
9
+ "system/uploads/#{model.class.model_name.to_s.underscore}/#{mounted_as}/#{id_directory}"
10
+ end
11
+
12
+ private
13
+
14
+ def id_directory
15
+ if model.respond_to?(:uuid)
16
+ model.reload unless model.uuid.present?
17
+ else
18
+ model.id
19
+ end
10
20
  end
11
21
  end
@@ -4,7 +4,7 @@ class PhotoUploader < ApplicationUploader
4
4
  include ImageDefaults
5
5
 
6
6
  def default_url
7
- ActionController::Base.helpers.asset_path('images/default_photo.png')
7
+ ActionController::Base.helpers.asset_path('mona_lisa_from_prado_square.png')
8
8
  end
9
9
 
10
10
  def url
@@ -20,29 +20,14 @@ class PhotoUploader < ApplicationUploader
20
20
  super && width.present? && height.present?
21
21
  end
22
22
 
23
- version :medium do
23
+ version :medium, if: :medium_version_is_needed? do
24
24
  process resize_to_fill: [400, 400]
25
25
  end
26
26
 
27
- version :small do
27
+ version :small, if: :small_version_is_needed? do
28
28
  process resize_to_fill: [100, 100]
29
29
  end
30
30
 
31
- # FIXME: move to tramway-landing uploader
32
- version :card do
33
- process resize_to_fill: [400, 400, 'North']
34
- end
35
-
36
- # FIXME: move to tramway-landing uploader
37
- version :horizontal do
38
- process resize_to_fill: [800, 350, 'North']
39
- end
40
-
41
- # FIXME: move to tramway-landing uploader
42
- version :mini do
43
- process resize_to_limit: [300, nil]
44
- end
45
-
46
31
  attr_reader :width, :height
47
32
 
48
33
  before :cache, :capture_size
@@ -58,4 +43,16 @@ class PhotoUploader < ApplicationUploader
58
43
  @width, @height = `identify -format "%wx %h" #{file.path}`.split(/x/).map(&:to_i)
59
44
  end
60
45
  end
46
+
47
+ def medium_version_is_needed?(_new_file)
48
+ version_is_needed? :medium
49
+ end
50
+
51
+ def small_version_is_needed?(_new_file)
52
+ version_is_needed? :small
53
+ end
54
+
55
+ def version_is_needed?(version)
56
+ model.class.photo_versions&.include? version
57
+ end
61
58
  end
@@ -5,7 +5,6 @@ require 'tramway/collection'
5
5
  require 'tramway/collections/helper'
6
6
  require 'tramway/error'
7
7
  require 'font_awesome5_rails'
8
- require 'reform'
9
8
  require 'pg_search'
10
9
  require 'validators/presence_validator'
11
10
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Tramway
4
4
  module Core
5
- VERSION = '1.17.7.2'
5
+ VERSION = '1.18.0.1'
6
6
  end
7
7
  end
@@ -35,6 +35,6 @@ tramway:
35
35
  attributes:
36
36
  method_is_reserved_word: "Method `%{attribute_name}` is reserved word. Please, create or delegate method in %{class_name} with another name."
37
37
  title:
38
- please_implement_title: "Please, implement `title` method in a %{class_name} or delegate it from %{object_class}"
38
+ please_implement_title: "Please, implement `title` method in a %{class_name} or delegate it to %{object_class}"
39
39
  link:
40
40
  method_link_uses_file_attribute: "Method `link` uses `file` attribute of the decorated object. If decorated object doesn't contain `file`, you shouldn't use `link` method."
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.17.7.2
4
+ version: 1.18.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Kalashnikov
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-04-19 00:00:00.000000000 Z
12
+ date: 2020-04-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: audited
@@ -197,34 +197,6 @@ dependencies:
197
197
  - - ">="
198
198
  - !ruby/object:Gem::Version
199
199
  version: '0'
200
- - !ruby/object:Gem::Dependency
201
- name: reform
202
- requirement: !ruby/object:Gem::Requirement
203
- requirements:
204
- - - ">="
205
- - !ruby/object:Gem::Version
206
- version: '0'
207
- type: :runtime
208
- prerelease: false
209
- version_requirements: !ruby/object:Gem::Requirement
210
- requirements:
211
- - - ">="
212
- - !ruby/object:Gem::Version
213
- version: '0'
214
- - !ruby/object:Gem::Dependency
215
- name: reform-rails
216
- requirement: !ruby/object:Gem::Requirement
217
- requirements:
218
- - - '='
219
- - !ruby/object:Gem::Version
220
- version: 0.1.7
221
- type: :runtime
222
- prerelease: false
223
- version_requirements: !ruby/object:Gem::Requirement
224
- requirements:
225
- - - '='
226
- - !ruby/object:Gem::Version
227
- version: 0.1.7
228
200
  - !ruby/object:Gem::Dependency
229
201
  name: rmagick
230
202
  requirement: !ruby/object:Gem::Requirement
@@ -362,11 +334,13 @@ files:
362
334
  - app/decorators/tramway/core/concerns/attributes_decorator_helper.rb
363
335
  - app/decorators/tramway/core/delegating/class_helper.rb
364
336
  - app/forms/tramway/core/application_form.rb
337
+ - app/forms/tramway/core/application_forms/association_class_helpers.rb
365
338
  - app/forms/tramway/core/application_forms/association_object_helpers.rb
366
339
  - app/forms/tramway/core/application_forms/constant_class_actions.rb
367
340
  - app/forms/tramway/core/application_forms/constant_object_actions.rb
368
341
  - app/forms/tramway/core/application_forms/object_helpers.rb
369
342
  - app/forms/tramway/core/application_forms/properties_object_helper.rb
343
+ - app/forms/tramway/core/application_forms/submit_helper.rb
370
344
  - app/forms/tramway/core/extendable_form.rb
371
345
  - app/forms/tramway/core/extendable_forms_helpers/class_builder.rb
372
346
  - app/forms/tramway/core/extendable_forms_helpers/ignored_properties_helper.rb