uc3-dmp-id 0.0.64 → 0.0.65
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 +4 -4
- data/lib/uc3-dmp-id/creator.rb +1 -1
- data/lib/uc3-dmp-id/helper.rb +23 -6
- data/lib/uc3-dmp-id/updater.rb +1 -2
- data/lib/uc3-dmp-id/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 69ff32208dd9d65b179b6caaf8cb91e7b346733cb487913f7d25b7126fb8a7cd
|
4
|
+
data.tar.gz: d8252a3ee862afc836c4c724f5a64a23287dc35b49d44d0b65bba9fe730d6725
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90b610e9567a9cb0d08c5e40cc3909964c868cfec58ffe963c598cf187e715259114a719019c616099ebe243714d29de3b99f52e9e5a701bd900f410fcf923a9
|
7
|
+
data.tar.gz: 134f3d56152ef9b2db4e01bdd79a9ac458a5ee4bde3cc23121148e6be26b3403e38a11b4cf4a4d27ae80a246d9ba8e5601aadb5edb1d97344dca50452c5af9e3
|
data/lib/uc3-dmp-id/creator.rb
CHANGED
@@ -38,7 +38,7 @@ module Uc3DmpId
|
|
38
38
|
raise CreatorError, MSG_UNABLE_TO_MINT if p_key.nil?
|
39
39
|
|
40
40
|
# Add the DMPHub specific attributes and then save
|
41
|
-
annotated = Helper.annotate_dmp_json(provenance: provenance,
|
41
|
+
annotated = Helper.annotate_dmp_json(provenance: provenance, p_key: p_key, json: json['dmp'])
|
42
42
|
puts "CREATING DMP ID:" if debug
|
43
43
|
puts annotated if debug
|
44
44
|
|
data/lib/uc3-dmp-id/helper.rb
CHANGED
@@ -133,16 +133,33 @@ module Uc3DmpId
|
|
133
133
|
a == b
|
134
134
|
end
|
135
135
|
|
136
|
+
# Extract the Contact's ORCID id
|
137
|
+
def extract_owner_id(json: {})
|
138
|
+
return nil unless json.is_a?(Hash)
|
139
|
+
|
140
|
+
dmp = json['dmp'].nil? ? json : json['dmp']
|
141
|
+
owner_org = dmp.fetch('contact', {}).fetch('contact_id', {})['identifier']
|
142
|
+
|
143
|
+
orgs = dmp.fetch('contributor').map do { |contributor| contributor.fetch('contact_id', {})['identifier'] }
|
144
|
+
orgs.first
|
145
|
+
end
|
146
|
+
|
136
147
|
# Extract the Contact's affiliaiton ROR ID
|
137
148
|
def extract_owner_org(json: {})
|
138
149
|
return nil unless json.is_a?(Hash)
|
139
150
|
|
140
151
|
dmp = json['dmp'].nil? ? json : json['dmp']
|
141
152
|
owner_org = dmp.fetch('contact', {}).fetch('dmproadmap_affiliation', {}).fetch('affiliation_id', {})['identifier']
|
153
|
+
return owner_org unless owner_org.nil?
|
154
|
+
|
155
|
+
orgs = dmp.fetch('contributor').map do |contributor|
|
156
|
+
contributor.fetch('dmproadmap_affiliation', {}).fetch('affiliation_id', {})['identifier']
|
157
|
+
end
|
158
|
+
orgs.compact.max_by { |i| orgs.count(i) }
|
142
159
|
end
|
143
160
|
|
144
161
|
# Add DMPHub specific fields to the DMP ID JSON
|
145
|
-
def annotate_dmp_json(provenance:,
|
162
|
+
def annotate_dmp_json(provenance:, p_key:, json:)
|
146
163
|
json = parse_json(json: json)
|
147
164
|
return json if provenance.nil? || owner_org.nil? || p_key.nil? || !json.is_a?(Hash)
|
148
165
|
|
@@ -157,9 +174,13 @@ module Uc3DmpId
|
|
157
174
|
# Ensure that the :dmp_id matches the :PK
|
158
175
|
annotated['dmp_id'] = pk_to_dmp_id(p_key: remove_pk_prefix(p_key: annotated['PK']))
|
159
176
|
|
177
|
+
owner_id = extract_owner_id(json: json)
|
178
|
+
owner_org = extract_owner_org(json: json)
|
179
|
+
|
160
180
|
# Update the modification timestamps
|
161
181
|
annotated['dmphub_modification_day'] = Time.now.strftime('%Y-%m-%d')
|
162
|
-
annotated['
|
182
|
+
annotated['dmphub_owner_id'] = owner_id unless owner_id.nil?
|
183
|
+
annotated['dmphub_owner_org'] = owner_org unless owner_org.nil?
|
163
184
|
annotated['dmphub_updated_at'] = Time.now.iso8601
|
164
185
|
# Only add the Creation date if it is blank
|
165
186
|
annotated['dmphub_created_at'] = Time.now.iso8601 if json['dmphub_created_at'].nil?
|
@@ -181,10 +202,6 @@ module Uc3DmpId
|
|
181
202
|
# rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
182
203
|
def cleanse_dmp_json(json:)
|
183
204
|
return json unless json.is_a?(Hash) || json.is_a?(Array)
|
184
|
-
|
185
|
-
puts "Cleansing DMP JSON:"
|
186
|
-
puts json
|
187
|
-
|
188
205
|
# If it's an array clean each of the objects individually
|
189
206
|
return json.map { |obj| cleanse_dmp_json(json: obj) }.compact if json.is_a?(Array)
|
190
207
|
|
data/lib/uc3-dmp-id/updater.rb
CHANGED
@@ -46,7 +46,6 @@ module Uc3DmpId
|
|
46
46
|
# fetch the existing latest version of the DMP ID
|
47
47
|
client = Uc3DmpDynamo::Client.new(debug: debug)
|
48
48
|
dmp = Finder.by_pk(p_key: p_key, client: client, debug: debug)
|
49
|
-
owner_org = Helper.extract_owner_org(json: dmp)
|
50
49
|
# Don't continue if DMP ID could not be found or the contact has no identifier (should be impossible)
|
51
50
|
raise UpdaterError, MSG_DMP_NOT_FOUND if dmp.nil? || owner_org.nil?
|
52
51
|
|
@@ -54,7 +53,7 @@ module Uc3DmpId
|
|
54
53
|
raise UpdaterError, errs if errs.is_a?(Array) && errs.any?
|
55
54
|
|
56
55
|
# Add the DMPHub specific attributes and then add the download URl for the PDF
|
57
|
-
annotated = Helper.annotate_dmp_json(provenance: provenance,
|
56
|
+
annotated = Helper.annotate_dmp_json(provenance: provenance, p_key: p_key, json: dmp['dmp'])
|
58
57
|
annotated['dmproadmap_related_identifiers'] = [] if annotated['dmproadmap_related_identifiers'].nil?
|
59
58
|
annotated['dmproadmap_related_identifiers'] << {
|
60
59
|
descriptor: 'is_metadata_for', work_type: 'output_management_plan', type: 'url', identifier: url
|
data/lib/uc3-dmp-id/version.rb
CHANGED