bulkrax 3.0.1 → 3.1.0
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23cd36b2c3dc13769f7d20da3c0d53f2d5c2cabef15d5beeeccee75aed6d679a
|
4
|
+
data.tar.gz: 868f0ec5c54862943e126af0ecf63d49771bc9a4ac88e566074205d7077e063c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4f9c359a539054dba54000ca30bd1209bb862254c75463c2598807e8fd91e7e562e3bd6203f5f347ffe17da22f58d7915c1090109e88aabccac774c0281b1ee
|
7
|
+
data.tar.gz: 11c0083e67c4add719f04c01d20fac3216f6e994407dfdc48ae5f6d82696241a2b81ef6156279568b92e4bd56d3598085e83bac3718d04892a4fc96bbefd1028
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module Bulkrax
|
4
4
|
# Import Behavior for Entry classes
|
5
|
-
module ImportBehavior
|
5
|
+
module ImportBehavior # rubocop:disable Metrics/ModuleLength
|
6
6
|
extend ActiveSupport::Concern
|
7
7
|
|
8
8
|
def build_for_importer
|
@@ -105,6 +105,65 @@ module Bulkrax
|
|
105
105
|
end
|
106
106
|
end
|
107
107
|
|
108
|
+
# Attempt to sanitize Questioning Authority URI values for configured controlled fields of common
|
109
|
+
# data entry mistakes. Controlled URI values are only valid if they are an exact match.
|
110
|
+
# Example:
|
111
|
+
# Valid value: http://rightsstatements.org/vocab/InC/1.0/
|
112
|
+
# Provided value: https://rightsstatements.org/vocab/InC/1.0
|
113
|
+
# Sanitized value: http://rightsstatements.org/vocab/InC/1.0/ ("s" from "https" removed, trailing "/" added)
|
114
|
+
#
|
115
|
+
# @return [Boolean] true if all controlled URI values are sanitized successfully
|
116
|
+
def sanitize_controlled_uri_values!
|
117
|
+
Bulkrax.qa_controlled_properties.each do |field|
|
118
|
+
next if parsed_metadata[field].blank?
|
119
|
+
|
120
|
+
parsed_metadata[field].each_with_index do |value, i|
|
121
|
+
next if value.blank?
|
122
|
+
|
123
|
+
if (validated_uri_value = validate_value(value, field))
|
124
|
+
parsed_metadata[field][i] = validated_uri_value
|
125
|
+
else
|
126
|
+
debug_msg = %(Unable to locate active authority ID "#{value}" in config/authorities/#{field.pluralize}.yml)
|
127
|
+
Rails.logger.debug(debug_msg)
|
128
|
+
error_msg = %("#{value}" is not a valid and/or active authority ID for the :#{field} field)
|
129
|
+
raise ::StandardError, error_msg
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
true
|
135
|
+
end
|
136
|
+
|
137
|
+
# @param value [String] value to validate
|
138
|
+
# @param field [String] name of the controlled property
|
139
|
+
# @return [String, nil] validated URI value or nil
|
140
|
+
def validate_value(value, field)
|
141
|
+
if value.match?(::URI::DEFAULT_PARSER.make_regexp)
|
142
|
+
value = value.strip.chomp
|
143
|
+
# add trailing forward slash unless one is already present
|
144
|
+
value << '/' unless value.match?(%r{/$})
|
145
|
+
end
|
146
|
+
|
147
|
+
valid = if active_id_for_authority?(value, field)
|
148
|
+
true
|
149
|
+
else
|
150
|
+
value.include?('https') ? value.sub!('https', 'http') : value.sub!('http', 'https')
|
151
|
+
active_id_for_authority?(value, field)
|
152
|
+
end
|
153
|
+
|
154
|
+
valid ? value : nil
|
155
|
+
end
|
156
|
+
|
157
|
+
# @param value [String] value to check
|
158
|
+
# @param field [String] name of the controlled property
|
159
|
+
# @return [Boolean] provided value is a present, active authority ID for the provided field
|
160
|
+
def active_id_for_authority?(value, field)
|
161
|
+
field_service = ('Hyrax::' + "#{field}_service".camelcase).constantize
|
162
|
+
active_authority_ids = field_service.new.active_elements.map { |ae| ae['id'] }
|
163
|
+
|
164
|
+
active_authority_ids.include?(value)
|
165
|
+
end
|
166
|
+
|
108
167
|
def factory
|
109
168
|
@factory ||= Bulkrax::ObjectFactory.new(attributes: self.parsed_metadata,
|
110
169
|
source_identifier_value: identifier,
|
data/lib/bulkrax/version.rb
CHANGED
data/lib/bulkrax.rb
CHANGED
@@ -12,13 +12,13 @@ module Bulkrax
|
|
12
12
|
:related_children_field_mapping,
|
13
13
|
:related_parents_field_mapping,
|
14
14
|
:reserved_properties,
|
15
|
+
:qa_controlled_properties,
|
15
16
|
:field_mappings,
|
16
17
|
:import_path,
|
17
18
|
:export_path,
|
18
19
|
:removed_image_path,
|
19
20
|
:server_name,
|
20
|
-
:api_definition
|
21
|
-
:removed_image_path
|
21
|
+
:api_definition
|
22
22
|
|
23
23
|
self.parsers = [
|
24
24
|
{ name: "OAI - Dublin Core", class_name: "Bulkrax::OaiDcParser", partial: "oai_fields" },
|
@@ -119,6 +119,11 @@ module Bulkrax
|
|
119
119
|
original_url
|
120
120
|
relative_path
|
121
121
|
]
|
122
|
+
|
123
|
+
# List of Questioning Authority properties that are controlled via YAML files in
|
124
|
+
# the config/authorities/ directory. For example, the :rights_statement property
|
125
|
+
# is controlled by the active terms in config/authorities/rights_statements.yml
|
126
|
+
self.qa_controlled_properties = %w[rights_statement license]
|
122
127
|
end
|
123
128
|
|
124
129
|
def self.api_definition
|
@@ -131,8 +136,6 @@ module Bulkrax
|
|
131
136
|
)
|
132
137
|
end
|
133
138
|
|
134
|
-
self.removed_image_path = 'app/assets/images/bulkrax/removed.png'
|
135
|
-
|
136
139
|
# this function maps the vars from your app into your engine
|
137
140
|
def self.setup
|
138
141
|
yield self
|
@@ -61,6 +61,12 @@ Bulkrax.setup do |config|
|
|
61
61
|
|
62
62
|
# Properties that should not be used in imports/exports. They are reserved for use by Hyrax.
|
63
63
|
# config.reserved_properties += ['my_field']
|
64
|
+
|
65
|
+
# List of Questioning Authority properties that are controlled via YAML files in
|
66
|
+
# the config/authorities/ directory. For example, the :rights_statement property
|
67
|
+
# is controlled by the active terms in config/authorities/rights_statements.yml
|
68
|
+
# Defaults: 'rights_statement' and 'license'
|
69
|
+
# config.qa_controlled_properties += ['my_field']
|
64
70
|
end
|
65
71
|
|
66
72
|
# Sidebar for hyrax 3+ support
|