linked_rails 0.0.4.pre.g3aeec2263 → 0.0.4.pre.g3e8f5731a

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: 0ce41ff4f34f22c35a736959cad35b9a42f3f03938449f918bf492907cdc6337
4
- data.tar.gz: 86ab4fec516df9fc474a637e6ada4b6466abdbc03b565bbc46d0942026a89cac
3
+ metadata.gz: 76bfec9b29631dc8cd719c82274bddb1d60ef3c5e1f8bf7cecdf5083399a0b60
4
+ data.tar.gz: 02a6fc22c0f6e5d208ad069d8e6d0aad21ad7b3f7c1a037d3b96173178a03861
5
5
  SHA512:
6
- metadata.gz: f4ab1bb7933a05fc0377f588ff8fa6340470341f0a45c977008a0fa2b3c226db5da304449b4da5a8fe20da66bc544e3928ce8aaa02d228b0ff9b6f50ed25075c
7
- data.tar.gz: 0b9c3322d6fb05f2f18e8e777661b276cf9c68c4c540a5b7a66837412888c0876e19d923744d93bc10830d565af5ac0ca458da63ab5aa344ca0f645a221c8949
6
+ metadata.gz: d542dd3f7417f97d421359f29cfdee8a7e85e8f2f2214181ff704b2fa1bf019fb89d45d4f451c7a6291dd218b4ae78b74274c76e31bcb84c6ccfa830d304a59b
7
+ data.tar.gz: 25a745a273273cd82e449e899cb29c930bc2fbc1f7a4f65e4ef6f3ec9e1b3afe7f8cb0ce86f2b524fe3627dd5f36bdfaca484818e81a319703560f537955d6fb
@@ -144,14 +144,9 @@ module LinkedRails
144
144
  end
145
145
 
146
146
  def resource_status(resource_policy)
147
- return 200 if resource_policy.show?
147
+ raise(LinkedRails::Errors::Forbidden.new(query: :show?)) unless resource_policy.show?
148
148
 
149
- raise(
150
- LinkedRails::Errors::Forbidden.new(
151
- action_status: resource_policy.try(:action_status),
152
- query: :show?
153
- )
154
- )
149
+ 200
155
150
  end
156
151
 
157
152
  def response_for_wrong_host(opts)
@@ -61,17 +61,15 @@ module LinkedRails
61
61
  end
62
62
 
63
63
  def object
64
- object_from_var || resource
64
+ @object = list.instance_exec(&@object) if @object.respond_to?(:call)
65
+
66
+ @object || resource
65
67
  end
66
68
 
67
69
  def object_iri
68
70
  object&.iri&.anonymous? ? anonymous_object_iri : object&.iri
69
71
  end
70
72
 
71
- def object_root_relative_iri
72
- RDF::URI(object_iri.to_s.split(LinkedRails.iri.to_s).second)
73
- end
74
-
75
73
  def parent
76
74
  return @parent if instance_variable_defined?(:@parent)
77
75
 
@@ -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,10 +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.instance_variable_set(:@root_relative_iri, parent.object_root_relative_iri)
36
- object
33
+ new(action: parent) if parent.object.anonymous_iri?
37
34
  end
38
35
  end
39
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
 
@@ -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
@@ -13,7 +13,6 @@ module LinkedRails
13
13
  end
14
14
  attribute :serialized_iri_template, predicate: Vocab.ontola[:iriTemplate]
15
15
  attribute :iri_template_opts, predicate: Vocab.ontola[:iriTemplateOpts]
16
- attribute :download_urls, predicate: Vocab.schema.downloadUrl
17
16
  attribute :default_type, predicate: Vocab.ontola[:defaultType], &:type
18
17
  attribute :display, predicate: Vocab.ontola[:collectionDisplay] do |object|
19
18
  Vocab.ontola["collectionDisplay/#{object.display || :default}"]
@@ -3,7 +3,7 @@
3
3
  module LinkedRails
4
4
  module Errors
5
5
  class Forbidden < StandardError
6
- attr_reader :query, :record, :policy, :action, :action_status
6
+ attr_reader :query, :record, :policy, :action
7
7
 
8
8
  # @param [Hash] options
9
9
  # @option options [String] query The action of the request
@@ -16,7 +16,6 @@ module LinkedRails
16
16
  @record = options[:record]
17
17
  @policy = options[:policy]
18
18
  @action = @query[-1] == '?' ? @query[0..-2] : @query
19
- @action_status = options[:action_status]
20
19
  @message = options[:message]
21
20
 
22
21
  raise StandardError if @query.blank? && @message.blank?
@@ -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)
@@ -46,8 +46,6 @@ module LinkedRails
46
46
  default_filters: {},
47
47
  # collection_class [Array<Hash>] The default sortings applied to the collection.
48
48
  default_sortings: [{key: Vocab.schema.dateCreated, direction: :desc}],
49
- # download_urls [Array<URI>] URLs for downloading the content of this collection
50
- download_urls: [],
51
49
  # include_members [Boolean] Whether to include the members of this collection.
52
50
  include_members: false,
53
51
  # iri_template_keys [Array<Sym>] Custom query keys for the iri template
@@ -72,9 +70,7 @@ module LinkedRails
72
70
 
73
71
  module ClassMethods
74
72
  def collection_iri(**opts)
75
- fragment = opts.delete(:fragment)
76
-
77
- LinkedRails.iri(path: collection_root_relative_iri(**opts), fragment: fragment)
73
+ LinkedRails.iri(path: collection_root_relative_iri(**opts))
78
74
  end
79
75
 
80
76
  # Sets the defaults for all collections for this class.
@@ -10,7 +10,7 @@ module LinkedRails
10
10
  end
11
11
 
12
12
  def anonymous_iri?
13
- self.class < ActiveRecord::Base && new_record? && @iri.blank?
13
+ self.class < ActiveRecord::Base && new_record?
14
14
  end
15
15
 
16
16
  # @return [RDF::URI].
@@ -44,12 +44,7 @@ module LinkedRails
44
44
 
45
45
  # @return [RDF::URI]
46
46
  def root_relative_iri(**opts)
47
- return @root_relative_iri if opts.blank? && @root_relative_iri.present?
48
-
49
- root_relative_iri = RDF::URI(expand_iri_template(**iri_opts.merge(opts)))
50
- @root_relative_iri = root_relative_iri if opts.blank?
51
-
52
- root_relative_iri
47
+ RDF::URI(expand_iri_template(**iri_opts.merge(opts)))
53
48
  end
54
49
 
55
50
  # @return [String, Symbol]
@@ -6,16 +6,16 @@ module LinkedRails
6
6
  extend ActiveSupport::Concern
7
7
 
8
8
  def menus(user_context = nil)
9
- menu_list(user_context)&.menus
9
+ menu_list(user_context).menus
10
10
  end
11
11
 
12
12
  def menu(tag, user_context = nil)
13
- menu_list(user_context)&.menu(tag)
13
+ menu_list(user_context).menu(tag)
14
14
  end
15
15
 
16
16
  def menu_list(user_context = nil)
17
17
  @menu_list ||= {}
18
- @menu_list[user_context] ||= self.class.menu_class&.new(resource: self, user_context: user_context)
18
+ @menu_list[user_context] ||= self.class.menu_class.new(resource: self, user_context: user_context)
19
19
  end
20
20
 
21
21
  module ClassMethods
@@ -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.g3aeec2263
4
+ version: 0.0.4.pre.g3e8f5731a
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-14 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