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 +4 -4
- data/README.md +1 -1
- data/app/forms/tramway/core/application_form.rb +18 -24
- data/app/forms/tramway/core/application_forms/association_class_helpers.rb +7 -0
- data/app/forms/tramway/core/application_forms/association_object_helpers.rb +2 -2
- data/app/forms/tramway/core/application_forms/object_helpers.rb +4 -0
- data/app/forms/tramway/core/application_forms/properties_object_helper.rb +3 -10
- data/app/forms/tramway/core/application_forms/submit_helper.rb +24 -0
- data/app/forms/tramway/core/extendable_forms_helpers/class_builder.rb +1 -1
- data/app/forms/tramway/core/extendable_forms_helpers/more_properties_helper.rb +6 -2
- data/app/forms/tramway/core/extendable_forms_helpers/submit/class_helpers.rb +7 -1
- data/app/uploaders/application_uploader.rb +12 -2
- data/app/uploaders/photo_uploader.rb +1 -5
- data/lib/tramway/core.rb +0 -1
- data/lib/tramway/core/version.rb +1 -1
- data/lib/yaml/errors.yml +1 -1
- metadata +4 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc4e360083a946fd3e4d022ed65747d56f21a42adb46cda0224d6873cf8db42d
|
4
|
+
data.tar.gz: c1a39ccd53513c8ab09d9d2e1ff576b9c309ba7f07e7f2238b03501dfb20057b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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
|
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
|
-
|
13
|
-
|
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
|
@@ -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
|
-
|
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
|
-
|
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
|
@@ -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
|
-
|
14
|
-
|
9
|
+
@form_properties ||= {}
|
15
10
|
yaml_config_file_path = Rails.root.join('app', 'forms', "#{self.class.name.underscore}.yml")
|
16
11
|
|
17
|
-
return
|
12
|
+
return @form_properties unless File.exist? yaml_config_file_path
|
18
13
|
|
19
|
-
@form_properties
|
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].
|
13
|
-
|
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
|
-
|
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
|
-
|
10
|
-
|
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('
|
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
|
data/lib/tramway/core.rb
CHANGED
data/lib/tramway/core/version.rb
CHANGED
data/lib/yaml/errors.yml
CHANGED
@@ -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
|
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.
|
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-
|
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
|