tramway-core 1.11.2 → 1.12.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: '08d6ae73913d795796280bd95921fd183b9c5931ad108ead009b16b78989d5fe'
4
- data.tar.gz: 750b88db7c70b119c282a0f59d6f67f3b5cd82f1a8783eab48aff5223095d5f7
3
+ metadata.gz: 16172a47127987a0492d51f269ccd76ab319bf8323636ba20f3ac36745fb2007
4
+ data.tar.gz: ac86409a6b1fbc1462f07a5a5b999ff81755a9af28c8b3e834a786983915f006
5
5
  SHA512:
6
- metadata.gz: 0b68b0b2247476b927ba050b4256926b9698453fbe38fb7eaa97d37c219da9f3307407c989c101746b254b7ccbf968599fb9446baf0c09472dc2464258dc70a5
7
- data.tar.gz: d49b32f30fb6e1c33c6890c3aa610b2a1f93d32e71207622fb2e8b0b486a7296c553908f6cccc099b0d58701ab70f2f0bdddcdc69f6d62899c5ddad0cf70e186
6
+ metadata.gz: 6e45054851f49dbc7c1aff4c267c5eb0a6c95a95569808649313991699160bf90e93f96293c69658ad5b23a60b5b188ab585eb1da8ec05e902a689544e3f82d6
7
+ data.tar.gz: 58786a322921c254d038f39dfc3d4b8338f78f77bb7a8d6c6826b916c8b6957530a034229ad42dfc93165f0f1ffb5d9e9c779a86a9510b54bdd7bb20ab25ae77
@@ -62,14 +62,13 @@ class Tramway::Core::ApplicationDecorator
62
62
  association.options[:class_name]
63
63
  end
64
64
  decorator_class_name = decorator || "#{class_name.to_s.singularize}Decorator".constantize
65
- # FIXME rails has_many association don't have belongs_to? method... bullshit. Need PR to rails
66
- if association.try :has_many?
67
- object.send(association_name).active.map do |association_object|
65
+ if association.class == ActiveRecord::Reflection::HasManyReflection
66
+ return object.send(association_name).active.map do |association_object|
68
67
  decorator_class_name.decorate association_object
69
68
  end
70
69
  end
71
- if association.try :belongs_to?
72
- decorator_class_name.decorate object.send association_name
70
+ if association.class == ActiveRecord::Reflection::BelongsToReflection
71
+ return decorator_class_name.decorate object.send association_name
73
72
  end
74
73
  end
75
74
  end
@@ -120,7 +119,7 @@ class Tramway::Core::ApplicationDecorator
120
119
  elsif value.class.in? [ ActiveSupport::TimeWithZone, DateTime, Time ]
121
120
  hash.merge! attribute[0] => datetime_view(attribute[1])
122
121
  elsif value.class.superclass == ApplicationUploader
123
- hash.merge! attribute[0] => image_view(attribute[1])
122
+ hash.merge! attribute[0] => image_view(object.send(attribute[0]))
124
123
  elsif value.is_a? Enumerize::Value
125
124
  hash.merge! attribute[0] => enumerize_view(value)
126
125
  else
@@ -118,6 +118,10 @@ module Tramway::Core
118
118
  def validation_group_class
119
119
  ActiveModel
120
120
  end
121
+
122
+ def validates(attribute, **options)
123
+ model_class.validates attribute, **options
124
+ end
121
125
  end
122
126
  end
123
127
  end
@@ -10,6 +10,12 @@ class Tramway::Core::ExtendableForm
10
10
  define_method 'submit' do |params|
11
11
  model.values ||= {}
12
12
  extended_params = params.except(*simple_properties.keys)
13
+ params.each do |key, value|
14
+ method_name = "#{key}="
15
+ if respond_to?(method_name)
16
+ send method_name, value
17
+ end
18
+ end
13
19
  model.values = extended_params.permit!.to_h.reduce(model.values) do |hash, pair|
14
20
  hash.merge! pair[0] => pair[1]
15
21
  end
@@ -25,7 +31,7 @@ class Tramway::Core::ExtendableForm
25
31
  end
26
32
  more_properties.reduce(hash) do |h, property|
27
33
  h.merge! property[0] => {
28
- extended_form_property: property[1]
34
+ extended_form_property: property[1][:object]
29
35
  }
30
36
  end
31
37
  end
@@ -34,6 +40,18 @@ class Tramway::Core::ExtendableForm
34
40
  define_method property[0] do
35
41
  model.values[property[0]] if model.values
36
42
  end
43
+
44
+ if property[1][:validates].present?
45
+ define_method "#{property[0]}=" do |value|
46
+ property[1][:validates].each do |pair|
47
+ validator_object = "#{pair[0].camelize}Validator".constantize.new({ attributes: :not_blank })
48
+ if pair[1] == 'true' && !validator_object.send(:valid?, value)
49
+ model.errors.add property[0],
50
+ I18n.t("activerecord.errors.models.#{model.class.name.underscore}.attributes.#{property[0]}.#{pair[0]}", { value: value })
51
+ end
52
+ end
53
+ end
54
+ end
37
55
  end
38
56
  end)
39
57
  end
@@ -17,3 +17,6 @@
17
17
  = f.input field.title.to_sym, as: :select, input_html: { class: class_name, id: "#{class_name}_#{field.title}", name: "#{class_name}[#{field.title}]" }, selected: value
18
18
  - else
19
19
  = f.input field.title.to_sym, as: :select, input_html: { class: class_name, id: "#{class_name}_#{field.title}", name: "#{class_name}[#{field.title}]" }
20
+ - if params[:errors].present? && params[:errors][field.title]&.first
21
+ .alert.alert-danger
22
+ = params[:errors][field.title]&.first
@@ -5,6 +5,7 @@ require 'tramway/error'
5
5
  require 'font_awesome5_rails'
6
6
  require 'reform'
7
7
  require 'pg_search'
8
+ require 'validators/presence_validator'
8
9
 
9
10
  module Tramway
10
11
  module Core
@@ -9,8 +9,6 @@ module Tramway
9
9
  isolate_namespace Tramway::Core
10
10
 
11
11
  config.before_initialize do
12
- config.i18n.available_locales = [:ru]
13
- config.i18n.default_locale = :ru
14
12
  config.i18n.load_path += Dir["#{config.root}/config/locales/**/*.yml"]
15
13
  end
16
14
  end
@@ -1,5 +1,5 @@
1
1
  module Tramway
2
2
  module Core
3
- VERSION = '1.11.2'
3
+ VERSION = '1.12.1'
4
4
  end
5
5
  end
@@ -0,0 +1,8 @@
1
+ class PresenceValidator
2
+ def initialize(attributes)
3
+ end
4
+
5
+ def valid?(value)
6
+ value.present?
7
+ end
8
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tramway-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.11.2
4
+ version: 1.12.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Kalashnikov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-10 00:00:00.000000000 Z
11
+ date: 2019-09-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: reform-rails
@@ -48,22 +48,22 @@ dependencies:
48
48
  name: simple_form
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '3.5'
54
51
  - - ">="
55
52
  - !ruby/object:Gem::Version
56
53
  version: 3.5.0
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '3.5'
57
57
  type: :runtime
58
58
  prerelease: false
59
59
  version_requirements: !ruby/object:Gem::Requirement
60
60
  requirements:
61
- - - "~>"
62
- - !ruby/object:Gem::Version
63
- version: '3.5'
64
61
  - - ">="
65
62
  - !ruby/object:Gem::Version
66
63
  version: 3.5.0
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '3.5'
67
67
  - !ruby/object:Gem::Dependency
68
68
  name: sass-rails
69
69
  requirement: !ruby/object:Gem::Requirement
@@ -116,42 +116,42 @@ dependencies:
116
116
  name: mini_magick
117
117
  requirement: !ruby/object:Gem::Requirement
118
118
  requirements:
119
- - - "~>"
120
- - !ruby/object:Gem::Version
121
- version: '4.8'
122
119
  - - ">="
123
120
  - !ruby/object:Gem::Version
124
121
  version: 4.8.0
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '4.8'
125
125
  type: :runtime
126
126
  prerelease: false
127
127
  version_requirements: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '4.8'
132
129
  - - ">="
133
130
  - !ruby/object:Gem::Version
134
131
  version: 4.8.0
132
+ - - "~>"
133
+ - !ruby/object:Gem::Version
134
+ version: '4.8'
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: rmagick
137
137
  requirement: !ruby/object:Gem::Requirement
138
138
  requirements:
139
- - - "~>"
140
- - !ruby/object:Gem::Version
141
- version: '2.16'
142
139
  - - ">="
143
140
  - !ruby/object:Gem::Version
144
141
  version: 2.16.0
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '2.16'
145
145
  type: :runtime
146
146
  prerelease: false
147
147
  version_requirements: !ruby/object:Gem::Requirement
148
148
  requirements:
149
- - - "~>"
150
- - !ruby/object:Gem::Version
151
- version: '2.16'
152
149
  - - ">="
153
150
  - !ruby/object:Gem::Version
154
151
  version: 2.16.0
152
+ - - "~>"
153
+ - !ruby/object:Gem::Version
154
+ version: '2.16'
155
155
  - !ruby/object:Gem::Dependency
156
156
  name: loofah
157
157
  requirement: !ruby/object:Gem::Requirement
@@ -176,22 +176,22 @@ dependencies:
176
176
  name: haml-rails
177
177
  requirement: !ruby/object:Gem::Requirement
178
178
  requirements:
179
- - - "~>"
180
- - !ruby/object:Gem::Version
181
- version: '1.0'
182
179
  - - ">="
183
180
  - !ruby/object:Gem::Version
184
181
  version: 1.0.0
182
+ - - "~>"
183
+ - !ruby/object:Gem::Version
184
+ version: '1.0'
185
185
  type: :runtime
186
186
  prerelease: false
187
187
  version_requirements: !ruby/object:Gem::Requirement
188
188
  requirements:
189
- - - "~>"
190
- - !ruby/object:Gem::Version
191
- version: '1.0'
192
189
  - - ">="
193
190
  - !ruby/object:Gem::Version
194
191
  version: 1.0.0
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '1.0'
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: font_awesome5_rails
197
197
  requirement: !ruby/object:Gem::Requirement
@@ -376,6 +376,7 @@ files:
376
376
  - lib/tramway/core/version.rb
377
377
  - lib/tramway/error.rb
378
378
  - lib/tramway/helpers/class_name_helpers.rb
379
+ - lib/validators/presence_validator.rb
379
380
  homepage: https://github.com/kalashnikovisme/tramway-core
380
381
  licenses:
381
382
  - MIT
@@ -395,8 +396,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
395
396
  - !ruby/object:Gem::Version
396
397
  version: '0'
397
398
  requirements: []
398
- rubyforge_project:
399
- rubygems_version: 2.7.6
399
+ rubygems_version: 3.0.3
400
400
  signing_key:
401
401
  specification_version: 4
402
402
  summary: Core for all Tramway Rails Engines