formalism-model_forms 0.6.0 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 65944c5d862966df0531c80ae45d603e01bd8a576983a5ad180e75c29f9116e6
4
- data.tar.gz: eedd373f63d2e6b4dc2da93c896fa9ebdf65a0e172a8c2794f5497abe622195f
3
+ metadata.gz: '082c6bb37c880171e718d59e44a932587ef6cdeb14b4e4bd089e74ac93bfea7f'
4
+ data.tar.gz: 48fa334241bea2219ca7ef170ba4e1f013c06aa9ce197e2b2593e6aae4cce118
5
5
  SHA512:
6
- metadata.gz: 5580e66079f5f4fafa3819a0fe9bb0a8825819bd2daacf5da932689e5123748be187613fd7bc9d3e01b285f7ffa952ad7602980705efa3987e75dcca9954db75
7
- data.tar.gz: e2b511cb8a47a70018fa55af7a2a0807d51429740ebf243edd203826751316a6ae500b3e3f709e6df370b1ffe3928bd3987341725af428e5911a15e31acea22e
6
+ metadata.gz: da4c7f403b76dff4ed7f918a4e715d74468d11cc7b819278d81975836c5411d9267dbb39c35046c598ec5d589d91b74d881cc571e8602ec7afe4ea093c7aa002
7
+ data.tar.gz: 03fc4d464b2758279405bee6a8b6a69a5175c863ed792d8e373927103345f6a9a7cc2f5d72f9bc56ec6d0c5daf845887cd78ec4269d5fd66943d9083aabe37f2
@@ -2,8 +2,38 @@
2
2
 
3
3
  ## master (unreleased)
4
4
 
5
+ ## 0.7.2 (2020-11-11)
6
+
7
+ * Fix error with `primary_field`.
8
+ * Fix an error when project has no models (and namespace) yet.
9
+ * Update development dependencies.
10
+
11
+ ## 0.7.1 (2020-10-15)
12
+
13
+ * Fix `Delete` form for models without `auditable` plugin.
14
+
15
+ ## 0.7.0 (2020-10-14)
16
+
17
+ * Add `primary_field`, don't lock on `id` field.
18
+
19
+ ## 0.6.2 (2020-09-28)
20
+
21
+ * Update `formalism` to a new version.
22
+
23
+ ## 0.6.1 (2020-09-28)
24
+
25
+ * Fix case when there is instance and `nil` params for `Update` form.
26
+
5
27
  ## 0.6.0 (2020-09-23)
6
28
 
29
+ * Fix complex error with `name` of anonymous classes and `inherited`.
30
+ 1. Update `formalism` to a version with `super` in `inherited` method.
31
+ 2. Define non-anonymous classes and modules,
32
+ even `stub_class` or `def self.name` assignes `name` only after `inherited`.
33
+ 3. Yes, I hate `eval`, but I don't know how I can define these things in another working way.
34
+ * Use correct assigned constants, fix broken lookup.
35
+ * Fix `Base#initialize` for cases when there are no `static_cache` plugin at all.
36
+
7
37
  ## 0.5.0 (2020-09-22)
8
38
 
9
39
  * Require `forwardable` before its usage.
@@ -41,14 +41,20 @@ module Formalism
41
41
 
42
42
  def define_other_model_forms(forms_namespace)
43
43
  FORM_CLASSES.each do |form_name, parent_name|
44
+ ## https://github.com/rubocop-hq/rubocop/issues/9026
45
+ # rubocop:disable Style/DocumentDynamicEvalDefinition
44
46
  forms_namespace::Model.class_eval(
45
47
  <<~CODE,
48
+ # class Update < FB::Forms::Model::Base
49
+ # include ModelForms::Update
50
+ # end
46
51
  class #{form_name} < #{forms_namespace}::Model::#{parent_name}
47
52
  include ModelForms::#{form_name}
48
53
  end
49
54
  CODE
50
- __FILE__, __LINE__ - 4
55
+ __FILE__, __LINE__ - 7
51
56
  )
57
+ # rubocop:enable Style/DocumentDynamicEvalDefinition
52
58
  end
53
59
  end
54
60
  end
@@ -17,7 +17,7 @@ module Formalism
17
17
  extend Forwardable
18
18
  def_delegators(
19
19
  'self.class',
20
- :namespace, :model_name, :model, :instance_variable_name
20
+ :primary_field_name, :namespace, :model_name, :model, :instance_variable_name
21
21
  )
22
22
 
23
23
  ## Module for Base form class methods
@@ -27,6 +27,8 @@ module Formalism
27
27
  def inherited(form)
28
28
  super
29
29
 
30
+ form.primary_field_name = primary_field_name
31
+
30
32
  return if form.instance_name == :model
31
33
  return if form.method_defined?(form.instance_name.to_s)
32
34
 
@@ -34,6 +36,27 @@ module Formalism
34
36
  form.alias_method "#{form.instance_name}=", :instance=
35
37
  end
36
38
 
39
+ def included(something)
40
+ super
41
+ something.primary_field_name = primary_field_name
42
+ end
43
+
44
+ attr_accessor :primary_field_name
45
+
46
+ def primary_field(name, *args, **kwargs)
47
+ remove_field primary_field_name if primary_field_name
48
+
49
+ field name, *args, **kwargs
50
+
51
+ self.primary_field_name = name
52
+ end
53
+
54
+ def remove_field(name)
55
+ super
56
+
57
+ self.primary_field_name = nil if name == primary_field_name
58
+ end
59
+
37
60
  using GorillaPatch::Namespace
38
61
  using GorillaPatch::Inflections
39
62
 
@@ -43,7 +66,7 @@ module Formalism
43
66
 
44
67
  memoize def model_name
45
68
  deconstantize.split('::')[2..-1].reverse
46
- .find { |part| self::MODELS_NAMESPACE.const_defined?(part, false) || part == 'Model' }
69
+ .find { |part| self::MODELS_NAMESPACE&.const_defined?(part, false) || part == 'Model' }
47
70
  end
48
71
 
49
72
  memoize def model
@@ -93,7 +116,9 @@ module Formalism
93
116
  attr_writer :instance
94
117
 
95
118
  def find_instance
96
- model[id].public_send(@cached ? :dup : :itself)
119
+ model
120
+ .first(primary_field_name => public_send(primary_field_name))
121
+ .public_send(@cached ? :dup : :itself)
97
122
  end
98
123
 
99
124
  def field_condition(name, value)
@@ -16,12 +16,14 @@ module Formalism
16
16
  # end
17
17
  # end
18
18
 
19
- field :id, Integer
19
+ primary_field :id, Integer
20
20
 
21
21
  private
22
22
 
23
23
  def execute
24
- instance.changes_author = changes_author if model.auditable?
24
+ if model.respond_to?(:auditable?) && model.auditable?
25
+ instance.changes_author = changes_author
26
+ end
25
27
 
26
28
  instance.destroy
27
29
  super
@@ -7,7 +7,7 @@ module Formalism
7
7
  include Formalism::ModelForms::Base
8
8
  include Memery
9
9
 
10
- field :id, Integer, default: nil
10
+ primary_field :id, Integer, default: nil
11
11
 
12
12
  def initialize(params_or_instance = {})
13
13
  if params_or_instance.is_a?(Hash)
@@ -11,11 +11,20 @@ module Formalism
11
11
  def inherited(child_form)
12
12
  super
13
13
 
14
- child_form.nested :find, child_form.namespace::Find,
14
+ child_form_path = File.dirname caller_locations(1..1).first.path
15
+ %w[find create].each { |form_type| require "#{child_form_path}/#{form_type}" }
16
+
17
+ child_form.define_nested_forms
18
+ end
19
+
20
+ protected
21
+
22
+ def define_nested_forms
23
+ nested :find, namespace::Find,
15
24
  initialize: ->(form) { form.new(@params_or_instance) },
16
- errors_key: nil
25
+ merge_errors: false
17
26
 
18
- child_form.nested :create, child_form.namespace::Create,
27
+ nested :create, namespace::Create,
19
28
  initialize: ->(form) { form.new(@params_or_instance) },
20
29
  errors_key: nil,
21
30
  merge_errors: -> { find_form.instance.nil? }
@@ -78,7 +78,7 @@ module Formalism
78
78
 
79
79
  def ordered_unfiltered_dataset
80
80
  result = unfiltered_dataset.from_self(alias: model.table_name)
81
- result = result.reverse_order(:id) unless unfiltered_dataset.opts[:order]
81
+ result = result.reverse_order(:created_at) unless unfiltered_dataset.opts[:order]
82
82
  result
83
83
  end
84
84
 
@@ -87,7 +87,9 @@ module Formalism
87
87
  end
88
88
 
89
89
  def non_cached_dataset_for_execute
90
- dataset.where(id: dataset.select(:id).limit(limit_by_page))
90
+ dataset.where(
91
+ primary_field_name => dataset.select(primary_field_name).limit(limit_by_page)
92
+ )
91
93
  end
92
94
  end
93
95
  end
@@ -6,15 +6,15 @@ module Formalism
6
6
  module Move
7
7
  include Formalism::ModelForms::Base
8
8
 
9
- field :id, Integer
9
+ primary_field :id, Integer
10
10
 
11
11
  attr_reader :direction
12
12
 
13
- def initialize(direction, id, how_many = 1)
13
+ def initialize(direction, primary_field_value, how_many = 1)
14
14
  @direction = direction.to_sym
15
15
  @how_many = how_many.to_i
16
16
 
17
- super(id: id)
17
+ super(primary_field_name => primary_field_value)
18
18
  end
19
19
 
20
20
  private
@@ -7,7 +7,7 @@ module Formalism
7
7
  include Formalism::ModelForms::Base
8
8
  extend ModelForms::Base::Plural
9
9
 
10
- field :id, Array, of: Integer, default: []
10
+ primary_field :id, Array, of: Integer, default: []
11
11
 
12
12
  def initialize(params_or_instance = {})
13
13
  ## Instance should be an `Array` if there is not `params`
@@ -21,16 +21,16 @@ module Formalism
21
21
  end
22
22
  end
23
23
 
24
- field :id, Integer, merge: false
24
+ primary_field :id, Integer, merge: false
25
25
 
26
- def initialize(params, id_or_instance)
27
- if id_or_instance.is_a?(model)
28
- self.instance = id_or_instance
26
+ def initialize(params, pf_or_instance)
27
+ if pf_or_instance.is_a?(model)
28
+ self.instance = pf_or_instance
29
29
  else
30
- self.id = id_or_instance
30
+ public_send "#{primary_field_name}=", pf_or_instance
31
31
  end
32
32
 
33
- super params
33
+ super params || {}
34
34
  end
35
35
 
36
36
  private
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Formalism
4
4
  module ModelForms
5
- VERSION = '0.6.0'
5
+ VERSION = '0.7.2'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: formalism-model_forms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Popov
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-09-23 00:00:00.000000000 Z
12
+ date: 2020-11-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: alt_memery
@@ -45,14 +45,14 @@ dependencies:
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: 0.2.0
48
+ version: 0.3.0
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: 0.2.0
55
+ version: 0.3.0
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: gorilla_patch
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -199,14 +199,14 @@ dependencies:
199
199
  requirements:
200
200
  - - "~>"
201
201
  - !ruby/object:Gem::Version
202
- version: 0.91.0
202
+ version: '1.2'
203
203
  type: :development
204
204
  prerelease: false
205
205
  version_requirements: !ruby/object:Gem::Requirement
206
206
  requirements:
207
207
  - - "~>"
208
208
  - !ruby/object:Gem::Version
209
- version: 0.91.0
209
+ version: '1.2'
210
210
  - !ruby/object:Gem::Dependency
211
211
  name: rubocop-performance
212
212
  requirement: !ruby/object:Gem::Requirement
@@ -227,14 +227,14 @@ dependencies:
227
227
  requirements:
228
228
  - - "~>"
229
229
  - !ruby/object:Gem::Version
230
- version: '1.0'
230
+ version: '2.0'
231
231
  type: :development
232
232
  prerelease: false
233
233
  version_requirements: !ruby/object:Gem::Requirement
234
234
  requirements:
235
235
  - - "~>"
236
236
  - !ruby/object:Gem::Version
237
- version: '1.0'
237
+ version: '2.0'
238
238
  description: 'Standard Formalism forms for Sequel Models, such like create, find,
239
239
  delete, etc.
240
240
 
@@ -281,7 +281,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
281
281
  - !ruby/object:Gem::Version
282
282
  version: '0'
283
283
  requirements: []
284
- rubygems_version: 3.1.2
284
+ rubygems_version: 3.1.4
285
285
  signing_key:
286
286
  specification_version: 4
287
287
  summary: Standard Formalism forms for Sequel Models