linked_rails 0.0.4.pre.g58af47992 → 0.0.4.pre.g58e27be7f

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: aad6eb0a9fc794b0bd0aaaa66ada0d02994f506e0beb59a41eb5965e0c2bd794
4
- data.tar.gz: 1238aeb4fb58b4c1afcf7b5d94704027142659aea11e0912e8d61ad1e840592b
3
+ metadata.gz: 7b8ffa3a829f2c55d62661b0e4e619ee8e923a68a74bc4a48e6e052876ac61af
4
+ data.tar.gz: c32f19ca0b17a94237e717f04f0b277c5d21fde64e24e0a20ade4e91dca8b0c4
5
5
  SHA512:
6
- metadata.gz: 664ddf28887bbe217584b64f57b6efadc9c22cb39c56c40a99c663bb1a9804f3b964f809b3627f92d2416cd38b1fb1413b429c5655a2f9e6003bee7718f4f31f
7
- data.tar.gz: 514497f2c45d82c15d4e35d6fdb274cc64d4b90a1599485316868eb7aaa66672897cd3ec05bcd6b9e67997c7a917a14fba4d06bac8f93be260244aac5b8cc95a
6
+ metadata.gz: b9d423962871a075e287a5c74e4d71c2e111a974efcc64362133b759c9e9decba9427c43c559311191ba3b1f6b76af4e0971e279540f74ffdfae43f2670c88b8
7
+ data.tar.gz: 755f741653de9d6c2889003df66ec0a43649c5bcb03365ef624b84758bbd44b33954605e88d1fed119ab6277e4a4b6744d840556075f4e70e576f153c6c41c8c
@@ -61,15 +61,13 @@ module LinkedRails
61
61
  end
62
62
 
63
63
  def object
64
- object_from_var || resource
65
- end
64
+ @object = list.instance_exec(&@object) if @object.respond_to?(:call)
66
65
 
67
- def object_iri
68
- iri_with_root(object_root_relative_iri)
66
+ @object || resource
69
67
  end
70
68
 
71
- def object_root_relative_iri
72
- object&.iri&.anonymous? ? anonymous_object_root_relative_iri : object&.root_relative_iri
69
+ def object_iri
70
+ object&.iri&.anonymous? ? anonymous_object_iri : object&.iri
73
71
  end
74
72
 
75
73
  def parent
@@ -140,8 +138,8 @@ module LinkedRails
140
138
 
141
139
  private
142
140
 
143
- def anonymous_object_root_relative_iri
144
- object_iri = root_relative_iri.dup
141
+ def anonymous_object_iri
142
+ object_iri = iri.dup
145
143
  object_iri.path += '/action_object'
146
144
  object_iri
147
145
  end
@@ -154,12 +152,6 @@ module LinkedRails
154
152
  LinkedRails.translate(:action, :label, self)
155
153
  end
156
154
 
157
- def object_from_var
158
- return @object unless @object.respond_to?(:call)
159
-
160
- @object = list.instance_exec(&@object)
161
- end
162
-
163
155
  def policy_expired?
164
156
  @policy_expired ||= policy && resource_policy.try(:expired?)
165
157
  end
@@ -12,8 +12,8 @@ module LinkedRails
12
12
  alias parent action
13
13
  delegate :object, to: :action
14
14
 
15
- def root_relative_iri
16
- action.object_root_relative_iri
15
+ def iri
16
+ action.object_iri
17
17
  end
18
18
 
19
19
  class << self
@@ -30,9 +30,7 @@ module LinkedRails
30
30
 
31
31
  parent = parent_from_params!(params, user_context)
32
32
 
33
- object = parent&.object
34
- object.instance_variable_set(:@iri, parent.object_iri)
35
- object
33
+ new(action: parent) if parent.object.anonymous_iri?
36
34
  end
37
35
  end
38
36
  end
@@ -43,7 +43,7 @@ module LinkedRails
43
43
  end
44
44
 
45
45
  def preview_includes
46
- include_members ? {members: {}, member_sequence: :members} : %i[member_sequence]
46
+ include_members ? {member_sequence: :members} : %i[member_sequence]
47
47
  end
48
48
 
49
49
  def title
@@ -76,19 +76,19 @@ module LinkedRails
76
76
  end
77
77
 
78
78
  def iris_from_scope?
79
- members_query.is_a?(ActiveRecord::Relation) && !polymorphic_collection?(members_query.klass)
79
+ members_query.is_a?(ActiveRecord::Relation) && !polymorphic_collection?
80
80
  end
81
81
 
82
82
  def members_array
83
83
  members_query.to_a
84
84
  end
85
85
 
86
- def polymorphic_collection?(klass)
87
- column = klass.inheritance_column
88
- polymorphic = klass.columns_hash.include?(column)
86
+ def polymorphic_collection?
87
+ column = association_class.inheritance_column
88
+ polymorphic = association_class.columns_hash.include?(column)
89
89
  return false unless polymorphic
90
90
 
91
- return true if klass.descends_from_active_record?
91
+ return true if association_class.descends_from_active_record?
92
92
 
93
93
  members_query.where_values_hash.include?(column) &&
94
94
  members_query.where_values_hash[column] != association_class.to_s
@@ -4,11 +4,7 @@ module LinkedRails
4
4
  class Form
5
5
  class Field
6
6
  class FileInput < Field
7
- attr_writer :max_size
8
-
9
- def max_size
10
- @max_size.respond_to?(:call) ? @max_size.call : @max_size
11
- end
7
+ attr_accessor :max_size
12
8
  end
13
9
  end
14
10
  end
@@ -52,7 +52,13 @@ module LinkedRails
52
52
  private
53
53
 
54
54
  def attr_column(name)
55
- model_class.column_for_attribute(name)
55
+ column_model =
56
+ if model_class.is_delegated_attribute?(name)
57
+ model_class.class_for_delegated_attribute(name)
58
+ else
59
+ model_class
60
+ end
61
+ column_model.column_for_attribute(name)
56
62
  end
57
63
 
58
64
  def attr_to_datatype # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
@@ -120,7 +120,7 @@ module LinkedRails
120
120
 
121
121
  def has_many(key, **opts)
122
122
  opts[:input_field] = Form::Field::AssociationInput
123
- opts[:max_count] ||= 99
123
+ opts[:max_count] = 99
124
124
  field(key, **opts)
125
125
  end
126
126
 
@@ -41,7 +41,7 @@ module LinkedRails
41
41
  def blob_preview_iri
42
42
  return unless ActiveStorage::Blob.service.present?
43
43
 
44
- "#{LinkedRails.iri(path: 'rails/active_storage/blobs/redirect')}/{signed_id}/preview"
44
+ "#{LinkedRails.iri(path: 'rails/active_storage/blobs/redirect')}/{signed_id}/preview')"
45
45
  end
46
46
 
47
47
  def blob_upload_iri
@@ -81,7 +81,7 @@ module LinkedRails
81
81
  parent = parent_from_params(params, user_context)
82
82
  return if parent.blank?
83
83
 
84
- parent.try(:menu_sequence)
84
+ parent.menu_sequence
85
85
  end
86
86
  end
87
87
  end
@@ -49,8 +49,9 @@ module LinkedRails
49
49
  end
50
50
 
51
51
  def menu_item(tag, options) # rubocop:disable Metrics/AbcSize
52
- return unless show_menu_item?(tag, options)
53
-
52
+ if options[:policy].present?
53
+ return unless resource_policy(options[:policy_resource]).send(options[:policy], *options[:policy_arguments])
54
+ end
54
55
  options[:label_params] ||= {}
55
56
  options[:label_params][:default] ||= ["menus.default.#{tag}".to_sym, tag.to_s.capitalize]
56
57
  options[:label] ||= default_label(tag, options)
@@ -59,10 +60,6 @@ module LinkedRails
59
60
  LinkedRails.menus_item_class.new(resource: resource, tag: tag, parent: self, **options)
60
61
  end
61
62
 
62
- def policy_verdict(policy, options)
63
- policy.send(options[:policy], *options[:policy_arguments])
64
- end
65
-
66
63
  def resource_policy(policy_resource)
67
64
  policy_resource ||= resource
68
65
  policy_resource = instance_exec(&policy_resource) if policy_resource.respond_to?(:call)
@@ -72,14 +69,6 @@ module LinkedRails
72
69
  @resource_policy[policy_resource] ||= Pundit.policy(user_context, policy_resource)
73
70
  end
74
71
 
75
- def show_menu_item?(_tag, options)
76
- return true if options[:policy].blank?
77
-
78
- policy = resource_policy(options[:policy_resource])
79
-
80
- policy_verdict(policy, options)
81
- end
82
-
83
72
  def iri_template
84
73
  base_template = resource.send(resource.try(:singular_resource?) ? :singular_iri_template : :iri_template)
85
74
 
@@ -8,7 +8,6 @@ module LinkedRails
8
8
  policy = Pundit.policy!(user_context, child_resource)
9
9
  verdict = policy.create?
10
10
  @message = policy.message
11
- @action_status = policy.action_status
12
11
  verdict
13
12
  end
14
13
 
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LinkedRails
4
+ module Actions
5
+ class ObjectSerializer < LinkedRails.serializer_parent_class
6
+ has_one :object, predicate: Vocab.owl.sameAs
7
+ end
8
+ end
9
+ end
@@ -17,7 +17,6 @@ module LinkedRails
17
17
  has_one :collection, predicate: Vocab.as.partOf
18
18
  has_one :unfiltered_collection, predicate: Vocab.ontola[:baseCollection]
19
19
  has_one :member_sequence, predicate: Vocab.as.items
20
- has_many :members
21
20
  end
22
21
  end
23
22
  end
@@ -8,9 +8,7 @@ module LinkedRails
8
8
  end
9
9
 
10
10
  def invalidate_collection_delta(collection)
11
- iri = collection.is_a?(RDF::Resource) ? collection : collection.iri
12
-
13
- [Vocab.sp[:Variable], Vocab.ontola[:baseCollection], iri, delta_iri(:invalidate)]
11
+ [Vocab.sp[:Variable], Vocab.ontola[:baseCollection], collection.iri, delta_iri(:invalidate)]
14
12
  end
15
13
 
16
14
  def invalidate_parent_collections_delta(resource)
@@ -70,9 +70,7 @@ module LinkedRails
70
70
 
71
71
  module ClassMethods
72
72
  def collection_iri(**opts)
73
- fragment = opts.delete(:fragment)
74
-
75
- LinkedRails.iri(path: collection_root_relative_iri(**opts), fragment: fragment)
73
+ LinkedRails.iri(path: collection_root_relative_iri(**opts))
76
74
  end
77
75
 
78
76
  # Sets the defaults for all collections for this class.
@@ -118,13 +118,9 @@ module LinkedRails
118
118
  end
119
119
 
120
120
  def parse_attribute(klass, field_options, value)
121
- [field_options.key, parse_attribute_value(klass, field_options, value)]
122
- end
123
-
124
- def parse_attribute_value(klass, field_options, value)
125
- return nil if value == Vocab.libro[:null]
121
+ parsed_value = parse_enum_attribute(klass, field_options.key, value) || value
126
122
 
127
- (parse_enum_attribute(klass, field_options.key, value) || value).to_s
123
+ [field_options.key, parsed_value.to_s]
128
124
  end
129
125
 
130
126
  def parse_enum_attribute(klass, key, value)
@@ -137,15 +133,9 @@ module LinkedRails
137
133
 
138
134
  def parse_iri_param(iri, reflection)
139
135
  key = foreign_key_for_reflection(reflection)
140
- return unless key
136
+ value = parse_iri_param_value(iri, reflection) if key
141
137
 
142
- if iri == Vocab.libro[:null]
143
- [key, nil]
144
- else
145
- value = parse_iri_param_value(iri, reflection)
146
-
147
- [key, value.to_s] if value
148
- end
138
+ [key, value.to_s] if value
149
139
  end
150
140
 
151
141
  def parse_iri_param_value(iri, reflection)
@@ -15,10 +15,10 @@ module LinkedRails
15
15
 
16
16
  module ClassMethods
17
17
  def action_triples(object, _params)
18
- if named_object?(object) || object.try(:singular_resource?)
19
- object.try(:action_triples) || []
20
- else
18
+ if object.iri.anonymous? && !object.try(:singular_resource?)
21
19
  []
20
+ else
21
+ object.try(:action_triples) || []
22
22
  end
23
23
  end
24
24
  end
@@ -115,13 +115,7 @@ module LinkedRails
115
115
  collection_name = "#{name.to_s.singularize}_collection"
116
116
  opts[:association] ||= name
117
117
  opts[:polymorphic] ||= true
118
-
119
- action_object = opts.delete(:action_object)
120
- opts[:if] ||= -> (object) {
121
- return action_object if object.iri.try(:path)&.end_with?('/action_object')
122
-
123
- named_object?(object)
124
- }
118
+ opts[:if] ||= method(:named_object?)
125
119
 
126
120
  collection_opts = {}
127
121
  collection_opts[:page_size] = opts.delete(:page_size) if opts.key?(:page_size)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: linked_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4.pre.g58af47992
4
+ version: 0.0.4.pre.g58e27be7f
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arthur Dingemans
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-08 00:00:00.000000000 Z
11
+ date: 2022-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_response
@@ -305,6 +305,7 @@ files:
305
305
  - app/policies/linked_rails/ontology_policy.rb
306
306
  - app/policies/linked_rails/sequence_policy.rb
307
307
  - app/serializers/linked_rails/actions/item_serializer.rb
308
+ - app/serializers/linked_rails/actions/object_serializer.rb
308
309
  - app/serializers/linked_rails/collection/filter_field_serializer.rb
309
310
  - app/serializers/linked_rails/collection/filter_option_serializer.rb
310
311
  - app/serializers/linked_rails/collection/filter_serializer.rb