tramway-core 1.17.9.1 → 1.18.0.4

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: dc4e360083a946fd3e4d022ed65747d56f21a42adb46cda0224d6873cf8db42d
4
+ data.tar.gz: c1a39ccd53513c8ab09d9d2e1ff576b9c309ba7f07e7f2238b03501dfb20057b
5
5
  SHA512:
6
- metadata.gz: 252e6926182c9f443a75cc9075804f4075ba7224ef888d2399ac910b1d00435cd92209bb367607da4a60cb7ff8d740388accdb02de45d878b44a8a9ef2ac5769
7
- data.tar.gz: d01a72a18c43dfdcd3cf53d710a8f8e4a87db3d5a24d9480c4009993b58cfdb9a5ad36a740f521c8558b00e397597a7bf4fbee052deabe10ce6b6c5f1fe4f2a2
6
+ metadata.gz: 77f182880e0b69605f74e99a660ce5d855efc2b37f3179fd38df111fd9eaae0bd7fb67adaa1b6a3ed16bf0b779508e99da07062b203f25f005d66d432741ae00
7
+ data.tar.gz: aec229afedc05c8353a4a499f50c91dea8510a0e8ffb5dec7756f241a61ef4f62cd1fcd0586fa80ccffa287be0c8fa76909af35592abfeadcf85ea6f0f8a7303
data/README.md CHANGED
@@ -157,7 +157,7 @@ copy_to_clipboard "some_id" # some_id is HTML id of element. Content of this ele
157
157
  #### 1. Generate model that you to use. We create Organization, for example
158
158
 
159
159
  ```shell
160
- rails g model organization name:text public_name:text tagline:text address:text phone:text coordinates:point, state: text, favicon:text # remember! State field is required, if you use tramway-admin
160
+ rails g model organization name:text public_name:text tagline:text address:text phone:text coordinates:point state: text favicon:text # remember! State field is required, if you use tramway-admin
161
161
  rails db:migrate
162
162
  ```
163
163
 
@@ -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
@@ -5,19 +5,12 @@ module Tramway::Core::ApplicationForms::PropertiesObjectHelper
5
5
  @form_properties = args
6
6
  end
7
7
 
8
- def form_properties_additional(**args)
9
- @form_properties_additional = args
10
- end
11
-
12
8
  def properties
13
- return @form_properties if @form_properties
14
-
9
+ @form_properties ||= {}
15
10
  yaml_config_file_path = Rails.root.join('app', 'forms', "#{self.class.name.underscore}.yml")
16
11
 
17
- return [] unless File.exist? yaml_config_file_path
12
+ return @form_properties unless File.exist? yaml_config_file_path
18
13
 
19
- @form_properties = YAML.load_file(yaml_config_file_path).deep_symbolize_keys
20
- @form_properties.deep_merge! @form_properties_additional if @form_properties_additional
21
- @form_properties
14
+ @form_properties.deep_merge YAML.load_file(yaml_config_file_path).deep_symbolize_keys
22
15
  end
23
16
  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
@@ -12,7 +12,13 @@ module Tramway::Core::ExtendableFormsHelpers::Submit::ClassHelpers
12
12
  model.values = extended_params.reduce(model.values) do |hash, pair|
13
13
  hash.merge! pair[0] => pair[1]
14
14
  end
15
- super(params) && model.errors.empty?
15
+
16
+ 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
16
22
  end
17
23
  end
18
24
  end
@@ -6,7 +6,17 @@ 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
+ model.uuid
18
+ else
19
+ model.id
20
+ end
11
21
  end
12
22
  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
@@ -16,10 +16,6 @@ class PhotoUploader < ApplicationUploader
16
16
  end
17
17
  end
18
18
 
19
- def present?
20
- super && width.present? && height.present?
21
- end
22
-
23
19
  version :medium, if: :medium_version_is_needed? do
24
20
  process resize_to_fill: [400, 400]
25
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.0.4'
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.0.4
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-26 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