tramway-core 1.17.9.1 → 1.18

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: 0d8a307c16b02463c022b9f145452524200abc08aec25f72a0abf57d389c2495
4
- data.tar.gz: 886e56668981f2f0623ab5b84d4219e88e8c762cd4e7ef426d8782b1a579cfef
3
+ metadata.gz: 57bc94fcad00f60e39f4b5eb62b9c959a0739d3063d9ee3017349c9ef8e91c04
4
+ data.tar.gz: 4b11029d70b3dd9f45bfc7ec4e73fc8fb4b3f9ae60eec90756431ab92d611aa7
5
5
  SHA512:
6
- metadata.gz: 252e6926182c9f443a75cc9075804f4075ba7224ef888d2399ac910b1d00435cd92209bb367607da4a60cb7ff8d740388accdb02de45d878b44a8a9ef2ac5769
7
- data.tar.gz: d01a72a18c43dfdcd3cf53d710a8f8e4a87db3d5a24d9480c4009993b58cfdb9a5ad36a740f521c8558b00e397597a7bf4fbee052deabe10ce6b6c5f1fe4f2a2
6
+ metadata.gz: 6955a32c4a63a19ea949694636d64b7725aa571fc601e213276e67555ac8300bea5bbff4ca3c9337eeba9e8001dcf40b4b9dda4ca6e7bb6f0ab1d2d1d13cb2f5
7
+ data.tar.gz: cad297b01c90cff4e6a66048cec29e39faba8744ec4148ddf6d1e1fcf80775974bc361414ea8dc05c4788749e87d8cef5ec39832dc150d32e9f80704b8d4d100
@@ -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,25 @@ 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
+ @@properties ||= []
43
+ @@properties += props
44
+ props.each do |prop|
45
+ delegate prop, to: :model
46
+ define_method("#{prop}=") { |value| model.send "#{prop}=", value }
47
+ end
48
+ end
49
+
47
50
  def association(property)
48
51
  properties property
49
52
  @@associations = ((defined?(@@associations) && @@associations) || []) + [property]
50
53
  end
51
54
 
52
- def associations(*properties)
53
- properties.each { |property| association property }
54
- end
55
-
56
55
  def full_class_name_associations
57
56
  @@associations&.reduce({}) do |hash, association|
58
57
  options = @@model_class.reflect_on_all_associations(:belongs_to).select do |a|
@@ -113,13 +112,4 @@ class Tramway::Core::ApplicationForm < ::Reform::Form
113
112
  model.send("#{association}=", send(association)) if errors.details[association] == [{ error: :blank }]
114
113
  end
115
114
  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
115
  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
@@ -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,21 @@
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
+ save || collecting_associations_errors
8
+ else
9
+ Tramway::Error.raise_error(:tramway, :core, :application_form, :submit, :params_should_not_be_nil)
10
+ end
11
+ end
12
+
13
+ def save
14
+ model.save
15
+ rescue ArgumentError => e
16
+ Tramway::Error.raise_error :tramway, :core, :application_form, :save, :argument_error, message: e.message
17
+ rescue StandardError => e
18
+ Tramway::Error.raise_error :tramway, :core, :application_form, :save, :looks_like_you_have_method,
19
+ method_name: e.name.to_s.gsub('=', ''), model_class: @@model_class, class_name: self.class
20
+ end
21
+ end
@@ -6,7 +6,16 @@ class ApplicationUploader < CarrierWave::Uploader::Base
6
6
  storage :file
7
7
 
8
8
  def store_dir
9
- directory_id = (model.reload && model.try(:uuid)) || model.id
10
- "system/uploads/#{model.class.model_name.to_s.underscore}/#{mounted_as}/#{directory_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
11
20
  end
12
21
  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.9.1'
5
+ VERSION = '1.18'
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.9.1
4
+ version: '1.18'
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-22 00:00:00.000000000 Z
12
+ date: 2020-04-23 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