dina 0.2.0.0 → 0.3.0.0
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/dina/casters/array_caster.rb +0 -1
- data/lib/dina/models/assemblage.rb +1 -1
- data/lib/dina/models/attachment.rb +4 -2
- data/lib/dina/models/collection.rb +1 -1
- data/lib/dina/models/file.rb +30 -26
- data/lib/dina/models/identifier.rb +0 -47
- data/lib/dina/models/material_sample.rb +13 -11
- data/lib/dina/models/object_store.rb +22 -16
- data/lib/dina/models/object_store_managed_attribute.rb +0 -16
- data/lib/dina/models/object_subtype.rb +4 -0
- data/lib/dina/models/organization.rb +0 -1
- data/lib/dina/models/person.rb +2 -2
- data/lib/dina/models/preparation_method.rb +23 -0
- data/lib/dina/models/project.rb +1 -1
- data/lib/dina/models/protocol.rb +1 -1
- data/lib/dina/models/transaction.rb +1 -1
- data/lib/dina/version.rb +1 -1
- metadata +3 -3
- data/lib/dina/models/bucket.rb +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9245c7481399aefbf8a290931823fafbc4970c2008ae4e299833c274825353c3
|
4
|
+
data.tar.gz: 448dcde684c17dd881ee2128f184871d05f690429199b92dd858c5c0735c22b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b8d3ea143e058dab38c1073d6d614539620ceb5b14f3dc394a3b4535e069449b2921fe2365208bb9f8b5f7b2b46afb830edbe5bd0471dbd6c518c3d6cc3b8e2d
|
7
|
+
data.tar.gz: 9c18d70386ba41207d9d341e3a700e413ba63ddd34d5f81fcacd1f21453d05c84de2738d28b131767a07c649af800da404dcc62475e83055c92bbd44009b29ef
|
@@ -11,7 +11,7 @@ module Dina
|
|
11
11
|
property :createdBy, type: :string
|
12
12
|
property :createdOn, type: :time
|
13
13
|
|
14
|
-
has_many :attachment, class_name: "
|
14
|
+
has_many :attachment, class_name: "Attachment"
|
15
15
|
|
16
16
|
validates_presence_of :group, message: "group is required"
|
17
17
|
validates_presence_of :name, message: "name is required"
|
@@ -4,8 +4,10 @@ module Dina
|
|
4
4
|
class Attachment < BaseModel
|
5
5
|
property :id, type: :string, default: SecureRandom.uuid
|
6
6
|
|
7
|
-
belongs_to :material_sample, shallow_path: true
|
8
|
-
belongs_to :
|
7
|
+
belongs_to :material_sample, shallow_path: true, class_name: "MaterialSample"
|
8
|
+
belongs_to :collecting_event, shallow_path: true, class_name: "CollectingEvent"
|
9
|
+
belongs_to :project, shallow_path: true, class_name: "Project"
|
10
|
+
belongs_to :transaction, shallow_path: true, class_name: "Transaction"
|
9
11
|
|
10
12
|
def self.endpoint_path
|
11
13
|
"collection-api/"
|
@@ -15,7 +15,7 @@ module Dina
|
|
15
15
|
property :createdBy, type: :string
|
16
16
|
property :createdOn, type: :time
|
17
17
|
|
18
|
-
|
18
|
+
belongs_to :institution, shallow_path: true, class_name: "Institution"
|
19
19
|
has_one :parent_collection, class_name: "Collection"
|
20
20
|
|
21
21
|
validates_presence_of :group, message: "group is required"
|
data/lib/dina/models/file.rb
CHANGED
@@ -1,40 +1,44 @@
|
|
1
|
-
require_rel 'base_model'
|
2
|
-
|
3
1
|
module Dina
|
4
|
-
class File
|
5
|
-
|
2
|
+
class File
|
3
|
+
attr_accessor :file_path, :group
|
6
4
|
|
7
|
-
def
|
8
|
-
"objectstore-api/"
|
5
|
+
def initialize
|
9
6
|
end
|
10
7
|
|
11
|
-
def
|
12
|
-
"
|
8
|
+
def endpoint_path
|
9
|
+
"objectstore-api/"
|
13
10
|
end
|
14
11
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
=begin
|
12
|
+
def table_name
|
13
|
+
"file/#{@group}"
|
14
|
+
end
|
19
15
|
|
20
|
-
def
|
21
|
-
|
22
|
-
raise Exception.new "file is not of class File or does not exist"
|
23
|
-
end
|
24
|
-
super
|
25
|
-
set_headers
|
16
|
+
def url
|
17
|
+
Dina::Authentication.endpoint_url + endpoint_path + table_name
|
26
18
|
end
|
27
19
|
|
28
|
-
|
20
|
+
def file
|
21
|
+
::File.new(file_path)
|
22
|
+
end
|
29
23
|
|
30
|
-
def
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
24
|
+
def save
|
25
|
+
if group.nil?
|
26
|
+
raise ObjectInvalid, "#{self.class} is invalid. group is required."
|
27
|
+
end
|
28
|
+
if file_path.nil? || !::File.exist?(file_path)
|
29
|
+
raise ObjectInvalid, "#{self.class} is invalid. file not found in file_path."
|
30
|
+
end
|
31
|
+
response = RestClient::Request.execute(
|
32
|
+
method: :post,
|
33
|
+
headers: { authorization: Dina::Authentication.header },
|
34
|
+
url: url,
|
35
|
+
payload: {
|
36
|
+
multipart: true,
|
37
|
+
file: file
|
38
|
+
}
|
39
|
+
)
|
40
|
+
JSON.parse(response, symbolize_names: true)
|
36
41
|
end
|
37
|
-
=end
|
38
42
|
|
39
43
|
end
|
40
44
|
end
|
@@ -16,52 +16,5 @@ module Dina
|
|
16
16
|
"identifier"
|
17
17
|
end
|
18
18
|
|
19
|
-
=begin
|
20
|
-
TODO: fix because identifier has independent model now
|
21
|
-
|
22
|
-
def self.find_by_orcid(orcid)
|
23
|
-
if orcid.include? "http"
|
24
|
-
orcid = orcid.orcid_from_url
|
25
|
-
end
|
26
|
-
if orcid.is_orcid?
|
27
|
-
orcid = "https://orcid.org/#{orcid}"
|
28
|
-
where("identifiers.uri": orcid).all.first
|
29
|
-
else
|
30
|
-
nil
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def self.find_by_wikidata(wikidata)
|
35
|
-
if wikidata.include? "http"
|
36
|
-
wikidata = wikidata.wiki_from_url
|
37
|
-
end
|
38
|
-
if wikidata.is_wiki_id?
|
39
|
-
wikidata = "http://www.wikidata.org/entity/#{wikidata}"
|
40
|
-
where("identifiers.uri": wikidata).all.first
|
41
|
-
else
|
42
|
-
nil
|
43
|
-
end
|
44
|
-
where("identifiers.uri": wikidata).all.first
|
45
|
-
end
|
46
|
-
|
47
|
-
def orcid
|
48
|
-
identifiers.select{|o| o[:type] == "ORCID"}.first[:uri]
|
49
|
-
end
|
50
|
-
|
51
|
-
def orcid=(uri)
|
52
|
-
identifiers.delete_if{|o| o[:type] == "ORCID"}
|
53
|
-
identifiers << { type: "ORCID", uri: uri }
|
54
|
-
end
|
55
|
-
|
56
|
-
def wikidata
|
57
|
-
identifiers.select{|o| o[:type] == "WIKIDATA"}.first[:uri]
|
58
|
-
end
|
59
|
-
|
60
|
-
def wikidata=(id)
|
61
|
-
identifiers.delete_if{|o| o[:type] == "WIKIDATA"}
|
62
|
-
identifiers << { type: "WIKIDATA", uri: uri }
|
63
|
-
end
|
64
|
-
=end
|
65
|
-
|
66
19
|
end
|
67
20
|
end
|
@@ -12,7 +12,6 @@ module Dina
|
|
12
12
|
property :group, type: :string
|
13
13
|
property :managedAttributes, type: :object
|
14
14
|
property :dwcOtherCatalogNumbers, type: :array
|
15
|
-
property :preparationMethod, type: :string
|
16
15
|
property :preservationType, type: :string
|
17
16
|
property :preparationFixative, type: :string
|
18
17
|
property :preparationMaterials, type: :string
|
@@ -24,6 +23,9 @@ module Dina
|
|
24
23
|
property :stateChangedOn, type: :time
|
25
24
|
property :stateChangeRemarks, type: :string
|
26
25
|
property :materialSampleRemarks, type: :string
|
26
|
+
property :restrictionFieldsExtension, type: :array
|
27
|
+
property :restrictionRemarks, type: :string
|
28
|
+
property :isRestricted, type: :boolean
|
27
29
|
property :materialSampleChildren, type: :array
|
28
30
|
property :associations, type: :array, default: []
|
29
31
|
property :tags, type: :array, default: []
|
@@ -34,18 +36,18 @@ module Dina
|
|
34
36
|
property :hierarchy, type: :object
|
35
37
|
property :allowDuplicateName, type: :boolean
|
36
38
|
|
37
|
-
has_one :collection
|
38
|
-
has_one :parent_material_sample, class_name: "MaterialSample"
|
39
|
+
has_one :collection, class_name: "Collection"
|
39
40
|
has_one :collecting_event, class_name: "CollectingEvent"
|
40
|
-
has_one :preparation_type
|
41
|
-
has_one :
|
42
|
-
has_one :
|
43
|
-
has_one :
|
44
|
-
|
45
|
-
|
41
|
+
has_one :preparation_type, class_name: "PreparationType"
|
42
|
+
has_one :preparation_method, class_name: "PreparationMethod"
|
43
|
+
has_one :parent_material_sample, class_name: "MaterialSample"
|
44
|
+
has_one :preparation_protocol, class_name: "Protocol"
|
45
|
+
has_one :acquisition_event, class_name: "AcquisitionEvent"
|
46
|
+
has_one :storage_unit, class_name: "StorageUnit"
|
47
|
+
has_many :prepared_by, class_name: "Person"
|
48
|
+
has_many :attachment, class_name: "Attachment"
|
46
49
|
has_many :projects, class_name: "Project"
|
47
|
-
has_many :
|
48
|
-
has_many :preparation_attachment, class_name: "Attachment" #TODO: error requesting Dina::MaterialSample::Metadatum
|
50
|
+
has_many :assemblages, class_name: "Assemblage"
|
49
51
|
has_many :organism, class_name: "Organism"
|
50
52
|
|
51
53
|
validates_presence_of :group, message: "group is required"
|
@@ -3,34 +3,31 @@ require_rel 'base_model'
|
|
3
3
|
module Dina
|
4
4
|
class ObjectStore < BaseModel
|
5
5
|
property :id, type: :string, default: SecureRandom.uuid
|
6
|
+
property :createdBy, type: :string
|
7
|
+
property :createdOn, type: :time
|
6
8
|
property :group, type: :string
|
7
|
-
property :dcType, type: :string
|
8
|
-
property :originalFilename, type: :string
|
9
|
-
property :bucket, type: :string
|
10
|
-
property :dateTimeDigitized, type: :string
|
11
|
-
property :fileIdentifier, type: :string
|
12
|
-
property :fileExtension, type: :string
|
13
9
|
property :dcFormat, type: :string
|
14
10
|
property :dcType, type: :string
|
15
|
-
property :
|
11
|
+
property :acSubtype, type: :string
|
12
|
+
property :fileIdentifier, type: :string
|
13
|
+
property :bucket, type: :string
|
16
14
|
property :acCaption, type: :string
|
15
|
+
property :acDigitizationDate, type: :time
|
17
16
|
property :xmpMetadataDate, type: :time
|
18
|
-
property :xmpRightsWebStatement, type: :string, default: "https://open.canada.ca/en/open-government-licence-canada"
|
19
|
-
property :dcRights, type: :string, default: "© Her Majesty The Queen in Right of Canada, as represented by the Minister of Agriculture and Agri-Food | © Sa Majesté la Reine du chef du Canada, représentée par le ministre de l’Agriculture et de l’Agroalimentaire"
|
20
|
-
property :xmpRightsOwner, type: :string, default: "Government of Canada"
|
21
|
-
property :xmpRightsUsageTerms, type: :string, default: "Government of Canada Usage Term"
|
22
|
-
property :orientation, type: :integer
|
23
17
|
property :originalFilename, type: :string
|
18
|
+
property :fileExtension, type: :string
|
24
19
|
property :acHashFunction, type: :string, default: "SHA-1"
|
25
20
|
property :acHashValue, type: :string
|
26
|
-
property :
|
21
|
+
property :xmpRightsUsageTerms, type: :string, default: "Government of Canada Usage Term"
|
22
|
+
property :xmpRightsWebStatement, type: :string, default: "https://open.canada.ca/en/open-government-licence-canada"
|
23
|
+
property :dcRights, type: :string, default: "© Her Majesty The Queen in Right of Canada, as represented by the Minister of Agriculture and Agri-Food | © Sa Majesté la Reine du chef du Canada, représentée par le ministre de l’Agriculture et de l’Agroalimentaire"
|
24
|
+
property :xmpRightsOwner, type: :string, default: "Government of Canada"
|
27
25
|
property :publiclyReleasable, type: :boolean, default: true
|
28
26
|
property :notPubliclyReleasableReason, type: :string
|
27
|
+
property :managedAttributes, type: :object
|
29
28
|
property :acTags, type: :string
|
29
|
+
property :orientation, type: :integer
|
30
30
|
property :resourceExternalURL, type: :string
|
31
|
-
property :managedAttributes, type: :object
|
32
|
-
property :createdBy, type: :string
|
33
|
-
property :createdOn, type: :time
|
34
31
|
|
35
32
|
has_one :ac_metadata_creator, class_name: "Person"
|
36
33
|
has_one :dc_creator, class_name: "Person"
|
@@ -46,5 +43,14 @@ module Dina
|
|
46
43
|
"metadata"
|
47
44
|
end
|
48
45
|
|
46
|
+
private
|
47
|
+
|
48
|
+
def on_before_save
|
49
|
+
if self.bucket.nil?
|
50
|
+
self.bucket = self.group
|
51
|
+
end
|
52
|
+
super
|
53
|
+
end
|
54
|
+
|
49
55
|
end
|
50
56
|
end
|
@@ -19,21 +19,5 @@ module Dina
|
|
19
19
|
"managed-attribute"
|
20
20
|
end
|
21
21
|
|
22
|
-
def english_description=(desc)
|
23
|
-
description[:en] = desc
|
24
|
-
end
|
25
|
-
|
26
|
-
def english_description
|
27
|
-
description[:en]
|
28
|
-
end
|
29
|
-
|
30
|
-
def french_description=(desc)
|
31
|
-
description[:fr] = desc
|
32
|
-
end
|
33
|
-
|
34
|
-
def french_description
|
35
|
-
description[:fr]
|
36
|
-
end
|
37
|
-
|
38
22
|
end
|
39
23
|
end
|
@@ -3,6 +3,10 @@ require_rel 'base_model'
|
|
3
3
|
module Dina
|
4
4
|
class ObjectSubtype < BaseModel
|
5
5
|
property :id, type: :string, default: SecureRandom.uuid
|
6
|
+
property :createdBy, type: :string
|
7
|
+
property :createdOn, type: :time
|
8
|
+
property :dcType, type: :string
|
9
|
+
property :acSubtype, type: :string
|
6
10
|
|
7
11
|
def self.endpoint_path
|
8
12
|
"objectstore-api/"
|
@@ -3,7 +3,6 @@ require_rel 'base_model'
|
|
3
3
|
module Dina
|
4
4
|
class Organization < BaseModel
|
5
5
|
property :id, type: :string, default: SecureRandom.uuid
|
6
|
-
#NOTE: should be type: :multilingual_description but API not adjusted
|
7
6
|
property :names, type: :array, default: [{languageCode: "EN", name: nil}, {languageCode: "FR", name: nil}]
|
8
7
|
property :aliases, type: :array, default: []
|
9
8
|
property :createdBy, type: :string
|
data/lib/dina/models/person.rb
CHANGED
@@ -13,8 +13,8 @@ module Dina
|
|
13
13
|
property :createdBy, type: :string
|
14
14
|
property :createdOn, type: :time
|
15
15
|
|
16
|
-
has_many :organizations
|
17
|
-
has_many :identifiers
|
16
|
+
has_many :organizations, class_name: "Organization"
|
17
|
+
has_many :identifiers, class_name: "Identifier"
|
18
18
|
|
19
19
|
validates_presence_of :familyNames, message: "familyNames is required"
|
20
20
|
validates_presence_of :displayName
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require_rel 'base_model'
|
2
|
+
|
3
|
+
module Dina
|
4
|
+
class PreparationMethod < BaseModel
|
5
|
+
property :id, type: :string, default: SecureRandom.uuid
|
6
|
+
property :group, type: :string
|
7
|
+
property :name, type: :string
|
8
|
+
property :multilingualDescription, type: :multilingual_description
|
9
|
+
property :createdBy, type: :string
|
10
|
+
property :createdOn, type: :time
|
11
|
+
|
12
|
+
validates_presence_of :group, message: "group is required"
|
13
|
+
|
14
|
+
def self.endpoint_path
|
15
|
+
"collection-api/"
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.table_name
|
19
|
+
"preparation-method"
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
data/lib/dina/models/project.rb
CHANGED
data/lib/dina/models/protocol.rb
CHANGED
@@ -22,7 +22,7 @@ module Dina
|
|
22
22
|
property :createdOn, type: :time
|
23
23
|
|
24
24
|
has_many :material_samples, class_name: "MaterialSample"
|
25
|
-
has_many :attachment
|
25
|
+
has_many :attachment, class_name: "Attachment"
|
26
26
|
has_many :involved_agents, class_name: "Person"
|
27
27
|
|
28
28
|
validates_presence_of :group, message: "group is required"
|
data/lib/dina/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dina
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David P. Shorthouse
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-11-
|
11
|
+
date: 2022-11-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json_api_client
|
@@ -145,7 +145,6 @@ files:
|
|
145
145
|
- lib/dina/models/assemblage.rb
|
146
146
|
- lib/dina/models/attachment.rb
|
147
147
|
- lib/dina/models/base_model.rb
|
148
|
-
- lib/dina/models/bucket.rb
|
149
148
|
- lib/dina/models/collecting_event.rb
|
150
149
|
- lib/dina/models/collecting_method.rb
|
151
150
|
- lib/dina/models/collection.rb
|
@@ -162,6 +161,7 @@ files:
|
|
162
161
|
- lib/dina/models/organism.rb
|
163
162
|
- lib/dina/models/organization.rb
|
164
163
|
- lib/dina/models/person.rb
|
164
|
+
- lib/dina/models/preparation_method.rb
|
165
165
|
- lib/dina/models/preparation_type.rb
|
166
166
|
- lib/dina/models/project.rb
|
167
167
|
- lib/dina/models/protocol.rb
|