ddr-models 1.7.0 → 1.8.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/app/models/collection.rb +20 -11
- data/db/migrate/20150109192134_drop_workflow_state.rb~ +11 -0
- data/db/migrate/20150110023410_drop_workflow_states.rb +11 -0
- data/db/migrate/20150110023410_drop_workflow_states.rb~ +4 -0
- data/lib/ddr/auth/user.rb +1 -1
- data/lib/ddr/datastreams.rb +3 -2
- data/lib/ddr/datastreams/admin_metadata_datastream.rb +21 -0
- data/lib/ddr/datastreams/admin_metadata_datastream.rb~ +13 -0
- data/lib/ddr/managers.rb +3 -0
- data/lib/ddr/managers/manager.rb +14 -0
- data/lib/ddr/managers/manager.rb~ +14 -0
- data/lib/ddr/managers/role_manager.rb +31 -0
- data/lib/ddr/managers/role_manager.rb~ +21 -0
- data/lib/ddr/managers/workflow_manager.rb +33 -0
- data/lib/ddr/managers/workflow_manager.rb~ +33 -0
- data/lib/ddr/metadata.rb +0 -1
- data/lib/ddr/metadata/#permanent_id_record.rb# +13 -0
- data/lib/ddr/models.rb +1 -4
- data/lib/ddr/models/#has_ezid_identifier.rb# +26 -0
- data/lib/ddr/models/#has_permanent_identifier.rb# +9 -0
- data/lib/ddr/models/base.rb +1 -3
- data/lib/ddr/models/has_admin_metadata.rb +39 -0
- data/lib/ddr/models/{has_preservation_metadata.rb → has_admin_metadata.rb~} +11 -5
- data/lib/ddr/models/has_content.rb +1 -1
- data/lib/ddr/models/solr_document.rb +1 -1
- data/lib/ddr/models/version.rb +1 -1
- data/lib/ddr/vocab.rb +2 -1
- data/lib/ddr/vocab.rb~ +9 -0
- data/lib/ddr/vocab/asset.rb +11 -0
- data/lib/ddr/{metadata/roles_vocabulary.rb → vocab/roles.rb} +4 -2
- data/lib/ddr/vocab/workflow.rb~ +7 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/schema.rb +1 -11
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +2096 -3163
- data/spec/dummy/log/test.log +77302 -77584
- data/spec/models/ability_spec.rb +2 -2
- data/spec/models/collection_spec.rb +8 -1
- data/spec/models/has_admin_metadata_spec.rb +197 -0
- data/spec/models/has_admin_metadata_spec.rb~ +144 -0
- data/spec/models/user_spec.rb +6 -0
- metadata +40 -17
- data/lib/ddr/models/has_role_assignments.rb +0 -17
- data/lib/ddr/models/has_workflow.rb +0 -29
- data/lib/ddr/vocab/preservation.rb +0 -14
- data/lib/ddr/workflow.rb +0 -8
- data/lib/ddr/workflow/workflow_state.rb +0 -39
- data/spec/models/has_preservation_metadata_spec.rb +0 -109
- data/spec/models/has_role_assignments_spec.rb +0 -29
- data/spec/models/has_workflow_spec.rb +0 -54
- data/spec/models/role_assignments_datastream_spec.rb +0 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cfbf34b5dc2a35a84fc605e90f375592e210494c
|
4
|
+
data.tar.gz: 0664f48be4dfc59601d3bbff7cd48ba64edab9a5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 28e54cb29f53c664d7382e65d2da98e2d5914d92993a3e59034dcb0ef69d7b11b35df4294b954adc5939e5cd23657e2cac7a2a2c1077433ebf32388d1ec69348
|
7
|
+
data.tar.gz: 0f12f801b997855fa14f93a9ad1eff51ff5a80ae36e3ca2acdf1ba7506e4dfcf0fde3d1854eb309da0c4292ca99025127a4b27be11ed77ac316f7dee5d607e62
|
data/app/models/collection.rb
CHANGED
@@ -5,24 +5,26 @@
|
|
5
5
|
# via an isGovernedBy relation.
|
6
6
|
#
|
7
7
|
class Collection < Ddr::Models::Base
|
8
|
-
|
8
|
+
|
9
9
|
include Hydra::AdminPolicyBehavior
|
10
|
-
|
10
|
+
|
11
11
|
include Ddr::Models::HasChildren
|
12
12
|
include Ddr::Models::HasAttachments
|
13
|
-
|
13
|
+
|
14
14
|
has_attributes :default_license_title, datastream: Ddr::Datastreams::DEFAULT_RIGHTS, at: [:license, :title], multiple: false
|
15
15
|
has_attributes :default_license_description, datastream: Ddr::Datastreams::DEFAULT_RIGHTS, at: [:license, :description], multiple: false
|
16
16
|
has_attributes :default_license_url, datastream: Ddr::Datastreams::DEFAULT_RIGHTS, at: [:license, :url], multiple: false
|
17
|
-
|
17
|
+
|
18
18
|
has_many :children, property: :is_member_of_collection, class_name: 'Item'
|
19
19
|
has_many :targets, property: :is_external_target_for, class_name: 'Target'
|
20
|
-
|
20
|
+
|
21
21
|
alias_method :items, :children
|
22
22
|
alias_method :item_ids, :child_ids
|
23
|
-
|
23
|
+
|
24
|
+
after_create :set_admin_policy
|
25
|
+
|
24
26
|
validates_presence_of :title
|
25
|
-
|
27
|
+
|
26
28
|
# Returns the SolrDocuments for Components associated with the Collection through its member Items.
|
27
29
|
#
|
28
30
|
# @return A lazy enumerator of SolrDocuments.
|
@@ -35,7 +37,7 @@ class Collection < Ddr::Models::Base
|
|
35
37
|
results = ActiveFedora::SolrService.query(query, fq: filter, rows: 100000)
|
36
38
|
results.lazy.map {|doc| SolrDocument.new(doc)}
|
37
39
|
end
|
38
|
-
|
40
|
+
|
39
41
|
# Returns the license attributes provided as default values for objects governed by the Collection.
|
40
42
|
#
|
41
43
|
# @return [Hash] the attributes, `:title`, `:description`, and `:url`.
|
@@ -44,7 +46,7 @@ class Collection < Ddr::Models::Base
|
|
44
46
|
{title: default_license_title, description: default_license_description, url: default_license_url}
|
45
47
|
end
|
46
48
|
end
|
47
|
-
|
49
|
+
|
48
50
|
# Sets the default license attributes for objects governed by the Collection.
|
49
51
|
def default_license=(new_license)
|
50
52
|
raise ArgumentError unless new_license.is_a?(Hash) # XXX don't do this - not duck-typeable
|
@@ -53,7 +55,7 @@ class Collection < Ddr::Models::Base
|
|
53
55
|
self.default_license_description = l[:description]
|
54
56
|
self.default_license_url = l[:url]
|
55
57
|
end
|
56
|
-
|
58
|
+
|
57
59
|
# Returns a list of entities (either users or groups) having a default access level on objects governed by the Collection.
|
58
60
|
#
|
59
61
|
# @param type [String] the type of entity, "user" or "group".
|
@@ -62,11 +64,18 @@ class Collection < Ddr::Models::Base
|
|
62
64
|
def default_entities_for_permission(type, access)
|
63
65
|
default_permissions.collect { |p| p[:name] if p[:type] == type and p[:access] == access }.compact
|
64
66
|
end
|
65
|
-
|
67
|
+
|
66
68
|
["discover", "read", "edit"].each do |access|
|
67
69
|
["user", "group"].each do |type|
|
68
70
|
define_method("default_#{access}_#{type}s") { default_entities_for_permission(type, access) }
|
69
71
|
end
|
70
72
|
end
|
71
73
|
|
74
|
+
private
|
75
|
+
|
76
|
+
def set_admin_policy
|
77
|
+
self.admin_policy = self
|
78
|
+
self.save
|
79
|
+
end
|
80
|
+
|
72
81
|
end
|
data/lib/ddr/auth/user.rb
CHANGED
data/lib/ddr/datastreams.rb
CHANGED
@@ -22,12 +22,13 @@ module Ddr
|
|
22
22
|
|
23
23
|
CHECKSUM_TYPES = [ CHECKSUM_TYPE_MD5, CHECKSUM_TYPE_SHA1, CHECKSUM_TYPE_SHA256, CHECKSUM_TYPE_SHA384, CHECKSUM_TYPE_SHA512 ]
|
24
24
|
|
25
|
+
autoload :AdminMetadataDatastream
|
25
26
|
autoload :ContentMetadataDatastream
|
26
27
|
autoload :DescriptiveMetadataDatastream
|
27
|
-
autoload :PreservationMetadataDatastream
|
28
|
+
#autoload :PreservationMetadataDatastream
|
28
29
|
autoload :PropertiesDatastream
|
29
30
|
autoload :DatastreamBehavior
|
30
|
-
autoload :RoleAssignmentsDatastream
|
31
|
+
#autoload :RoleAssignmentsDatastream
|
31
32
|
|
32
33
|
end
|
33
34
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "rdf-vocab"
|
2
|
+
|
3
|
+
module Ddr
|
4
|
+
module Datastreams
|
5
|
+
class AdminMetadataDatastream < ActiveFedora::NtriplesRDFDatastream
|
6
|
+
|
7
|
+
property :permanent_id, predicate: Ddr::Vocab::Asset.permanentId
|
8
|
+
property :permanent_url, predicate: Ddr::Vocab::Asset.permanentUrl
|
9
|
+
property :original_filename, predicate: RDF::Vocab::PREMIS::V1.hasOriginalName
|
10
|
+
property :workflow_state, predicate: Ddr::Vocab::Asset.workflowState
|
11
|
+
|
12
|
+
Ddr::Vocab::Roles.each do |term|
|
13
|
+
property Ddr::Metadata::Vocabulary.term_name(Ddr::Vocab::Roles, term),
|
14
|
+
predicate: term do |index|
|
15
|
+
index.as :symbol
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Ddr
|
2
|
+
module Datastreams
|
3
|
+
class AdminMetadataDatastream < ActiveFedora::NtriplesRDFDatastream
|
4
|
+
|
5
|
+
property :permanent_id,
|
6
|
+
predicate: Ddr::Vocab::Preservation.permanentId
|
7
|
+
|
8
|
+
property :permanent_url,
|
9
|
+
predicate: Ddr::Vocab::Preservation.permanentUrl
|
10
|
+
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/ddr/managers.rb
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
module Ddr
|
2
|
+
module Managers
|
3
|
+
class RoleManager
|
4
|
+
|
5
|
+
attr_reader :object
|
6
|
+
|
7
|
+
def initialize(object)
|
8
|
+
@object = object
|
9
|
+
end
|
10
|
+
|
11
|
+
def principal_has_role?(principal, role)
|
12
|
+
( principals(role) & Array(principal) ).any?
|
13
|
+
end
|
14
|
+
|
15
|
+
def principals(role)
|
16
|
+
object.adminMetadata.send(role)
|
17
|
+
end
|
18
|
+
|
19
|
+
def method_missing(method, *args)
|
20
|
+
if args.size == 0
|
21
|
+
begin
|
22
|
+
return principals(method)
|
23
|
+
rescue NoMethodError
|
24
|
+
end
|
25
|
+
end
|
26
|
+
super
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Ddr
|
2
|
+
module Managers
|
3
|
+
class RoleManager
|
4
|
+
|
5
|
+
attr_reader :object
|
6
|
+
|
7
|
+
def initialize(object)
|
8
|
+
@object = object
|
9
|
+
end
|
10
|
+
|
11
|
+
def principal_has_role?(principal, role)
|
12
|
+
( principals(role) & Array(principal) ).any?
|
13
|
+
end
|
14
|
+
|
15
|
+
def principals(role)
|
16
|
+
object.adminMetadata.send(role)
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Ddr
|
2
|
+
module Managers
|
3
|
+
class WorkflowManager < Manager
|
4
|
+
|
5
|
+
PUBLISHED = "published"
|
6
|
+
UNPUBLISHED = "unpublished"
|
7
|
+
|
8
|
+
def published?
|
9
|
+
object.workflow_state == PUBLISHED
|
10
|
+
end
|
11
|
+
|
12
|
+
def publish
|
13
|
+
object.workflow_state = PUBLISHED
|
14
|
+
end
|
15
|
+
|
16
|
+
def publish!
|
17
|
+
publish
|
18
|
+
object.save
|
19
|
+
end
|
20
|
+
|
21
|
+
def unpublish
|
22
|
+
object.workflow_state = UNPUBLISHED
|
23
|
+
end
|
24
|
+
|
25
|
+
def unpublish!
|
26
|
+
unpublish
|
27
|
+
object.save
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Ddr
|
2
|
+
module Managers
|
3
|
+
class WorkflowManager < Manager
|
4
|
+
|
5
|
+
PUBLISHED = "published"
|
6
|
+
UNPUBLISHED = nil
|
7
|
+
|
8
|
+
def published?
|
9
|
+
object.workflow_state == PUBLISHED
|
10
|
+
end
|
11
|
+
|
12
|
+
def publish
|
13
|
+
object.workflow_state = PUBLISHED
|
14
|
+
end
|
15
|
+
|
16
|
+
def publish!
|
17
|
+
publish
|
18
|
+
object.save
|
19
|
+
end
|
20
|
+
|
21
|
+
def unpublish
|
22
|
+
object.workflow_state = UNPUBLISHED
|
23
|
+
end
|
24
|
+
|
25
|
+
def unpublish!
|
26
|
+
unpublish
|
27
|
+
object.save
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
data/lib/ddr/metadata.rb
CHANGED
data/lib/ddr/models.rb
CHANGED
@@ -20,7 +20,6 @@ require 'ddr/metadata'
|
|
20
20
|
require 'ddr/notifications'
|
21
21
|
require 'ddr/utils'
|
22
22
|
require 'ddr/vocab'
|
23
|
-
require 'ddr/workflow'
|
24
23
|
|
25
24
|
module Ddr
|
26
25
|
module Models
|
@@ -34,15 +33,13 @@ module Ddr
|
|
34
33
|
autoload :ChecksumInvalid, 'ddr/models/error'
|
35
34
|
autoload :FixityCheckable
|
36
35
|
autoload :Governable
|
36
|
+
autoload :HasAdminMetadata
|
37
37
|
autoload :HasAttachments
|
38
38
|
autoload :HasChildren
|
39
39
|
autoload :HasContent
|
40
40
|
autoload :HasContentMetadata
|
41
|
-
autoload :HasPreservationMetadata
|
42
41
|
autoload :HasProperties
|
43
|
-
autoload :HasRoleAssignments
|
44
42
|
autoload :HasThumbnail
|
45
|
-
autoload :HasWorkflow
|
46
43
|
autoload :Indexing
|
47
44
|
autoload :FileManagement
|
48
45
|
autoload :Licensable
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Ddr
|
2
|
+
module Models
|
3
|
+
module HasEzidIdentifier
|
4
|
+
|
5
|
+
protected
|
6
|
+
|
7
|
+
|
8
|
+
def create_identifier
|
9
|
+
create_ezid
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def create_ezid
|
15
|
+
metadata = Ddr::Metadata::Ezid.new(self)
|
16
|
+
ezid_identifier = Ezid::Identifier.create(metadata)
|
17
|
+
Ddr::Metadata::PermanentIdentifier.new(ezid_identifier.id)
|
18
|
+
end
|
19
|
+
|
20
|
+
def get_ezid
|
21
|
+
Ezid::Identifier.find(permanent_id.value)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|