dor-services 4.7.0 → 4.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.
@@ -1,5 +1,5 @@
1
1
  module Dor
2
- class AdministrativeMetadataDS < ActiveFedora::OmDatastream
2
+ class AdministrativeMetadataDS < ActiveFedora::OmDatastream
3
3
 
4
4
  set_terminology do |t|
5
5
  t.root :path => 'administrativeMetadata', :index_as => [:not_searchable]
@@ -21,7 +21,7 @@ class AdministrativeMetadataDS < ActiveFedora::OmDatastream
21
21
  end
22
22
  t.workflow :path => 'registration/workflow'
23
23
  t.deposit :index_as => [:not_searchable]
24
-
24
+
25
25
  t.accessioning :index_as => [:not_searchable] do
26
26
  t.workflow_id :path => 'workflow/@id', :index_as => [:facetable]
27
27
  end
@@ -31,14 +31,24 @@ class AdministrativeMetadataDS < ActiveFedora::OmDatastream
31
31
  t.harvester
32
32
  t.releaseDelayLimit
33
33
  end
34
+ t.defaults do
35
+ t.initiate_workflow :path => 'initiateWorkflow' do
36
+ t.lane :path => { :attribute => 'lane' }
37
+ end
38
+ t.shelving :path => 'shelving' do
39
+ t.path :path => { :attribute => 'path'}
40
+ end
41
+ end
34
42
  end
43
+
35
44
  define_template :default_collection do |xml|
36
- xml.administrativeMetadata{
37
- xml.registration{
38
- xml.collection(:id => '')
45
+ xml.administrativeMetadata{
46
+ xml.registration{
47
+ xml.collection(:id => '')
48
+ }
39
49
  }
40
- }
41
50
  end
51
+
42
52
  define_template :agreementId do |xml|
43
53
  xml.administrativeMetadata {
44
54
  xml.registration{
@@ -46,39 +56,64 @@ class AdministrativeMetadataDS < ActiveFedora::OmDatastream
46
56
  }
47
57
  }
48
58
  end
59
+
49
60
  define_template :metadata_format do |xml|
50
61
  xml.descMetadata{
51
62
  xml.format
52
63
  }
53
-
54
- end
55
- define_template :metadata_source do |xml|
56
- xml.administrativeMetadata{
64
+ end
65
+
66
+ define_template :metadata_source do |xml|
67
+ xml.administrativeMetadata{
57
68
  xml.descMetadata{
58
69
  xml.source
59
- }
60
- }
70
+ }
71
+ }
61
72
  end
62
- define_template :registration do |xml|
63
- xml.administrativeMetadata {
64
- xml.registration{
65
- xml.workflow(:id=> '')
66
- }
73
+
74
+ define_template :registration do |xml|
75
+ xml.administrativeMetadata {
76
+ xml.registration{
77
+ xml.workflow(:id=> '')
67
78
  }
68
- end
69
- define_template :default_collection do |xml|
70
- xml.administrativeMetadata {
71
- xml.registration{
72
- xml.collection
73
- }
74
- }
75
- end
76
- def self.xml_template
77
- Nokogiri::XML::Builder.new do |xml|
78
- xml.administrativeMetadata{
79
- }
80
- end.doc
81
- end
79
+ }
80
+ end
81
+
82
+ define_template :default_collection do |xml|
83
+ xml.administrativeMetadata {
84
+ xml.registration{
85
+ xml.collection
86
+ }
87
+ }
88
+ end
89
+
90
+ def self.xml_template
91
+ Nokogiri::XML::Builder.new do |xml|
92
+ xml.administrativeMetadata{ }
93
+ end.doc
94
+ end
95
+
96
+ #################################################################################
97
+ # Convenience methods to get and set properties
98
+ # Hides complexity/verbosity of OM TermOperators for simple, non-repeating values
99
+ #################################################################################
100
+
101
+ def default_workflow_lane= lane
102
+ self.defaults.initiate_workflow.lane = lane
103
+ end
104
+
105
+ def default_workflow_lane
106
+ self.defaults.initiate_workflow.lane.first
107
+ end
108
+
109
+ def default_shelving_path= path
110
+ self.defaults.shelving.path = path
111
+ end
112
+
113
+ def default_shelving_path
114
+ self.defaults.shelving.path.first
115
+ end
116
+
82
117
  end
83
118
 
84
119
  end
@@ -1,4 +1,4 @@
1
- module Dor
1
+ module Dor
2
2
  module Governable
3
3
  extend ActiveSupport::Concern
4
4
  include ActiveFedora::Relationships
@@ -13,6 +13,18 @@ module Dor
13
13
  self.initialize_workflow(name, 'dor', !self.new_object?)
14
14
  end
15
15
 
16
+ # Returns the default lane_id from the item's APO. Will return 'default' if the item does not have
17
+ # and APO, or if the APO does not have a default_lane
18
+ # @return [String] the lane id
19
+ def default_workflow_lane
20
+ return 'default' if self.admin_policy_object.nil? # TODO log warning?
21
+
22
+ admin_md = admin_policy_object.datastreams['administrativeMetadata']
23
+ lane = admin_md.default_workflow_lane
24
+ return 'default' if lane.nil? or lane.strip == ''
25
+ lane
26
+ end
27
+
16
28
  def reset_to_apo_default()
17
29
  rights_metadata_ds = self.rightsMetadata
18
30
  #get the apo for this object
@@ -59,7 +71,7 @@ module Dor
59
71
  node.add_child(machine_node)
60
72
  machine_node.add_child(none_node)
61
73
  end
62
- end
74
+ end
63
75
  end
64
76
 
65
77
  def add_collection(collection_or_druid)
@@ -71,8 +83,8 @@ module Dor
71
83
  end
72
84
  self.collections << collection
73
85
  self.sets << collection
74
- end
75
-
86
+ end
87
+
76
88
  def remove_collection(collection_or_druid)
77
89
 
78
90
  collection = case collection_or_druid
@@ -117,19 +129,19 @@ module Dor
117
129
  ['dor-administrator','dor-apo-manager', 'dor-apo-depositor']
118
130
  end
119
131
  def groups_which_manage_content
120
- ['dor-administrator','dor-apo-manager', 'dor-apo-depositor']
132
+ ['dor-administrator','dor-apo-manager', 'dor-apo-depositor']
121
133
  end
122
134
  def groups_which_manage_rights
123
135
  ['dor-administrator','dor-apo-manager', 'dor-apo-depositor']
124
136
  end
125
137
  def groups_which_manage_embargo
126
- ['dor-administrator','dor-apo-manager', 'dor-apo-depositor']
138
+ ['dor-administrator','dor-apo-manager', 'dor-apo-depositor']
127
139
  end
128
140
  def groups_which_view_content
129
- ['dor-administrator','dor-apo-manager', 'dor-apo-depositor', 'dor-viewer']
141
+ ['dor-administrator','dor-apo-manager', 'dor-apo-depositor', 'dor-viewer']
130
142
  end
131
143
  def groups_which_view_metadata
132
- ['dor-administrator','dor-apo-manager', 'dor-apo-depositor', 'dor-viewer']
144
+ ['dor-administrator','dor-apo-manager', 'dor-apo-depositor', 'dor-viewer']
133
145
  end
134
146
  def intersect arr1, arr2
135
147
  return (arr1 & arr2).length > 0
@@ -114,14 +114,14 @@ module Dor
114
114
  end
115
115
 
116
116
  current_milestones = []
117
- #only get steps that are part of accessioning and part of the current version. That can mean they were archived with the current version
117
+ #only get steps that are part of accessioning and part of the current version. That can mean they were archived with the current version
118
118
  #number, or they might be active (no version number).
119
119
  milestones.each do |m|
120
120
  if STEPS.keys.include?(m[:milestone]) and (m[:version].nil? or m[:version] == current_version)
121
121
  current_milestones << m unless m[:milestone] == 'registered' and current_version.to_i > 1
122
122
  end
123
123
  end
124
-
124
+
125
125
  status_code = 0
126
126
  status_time = ''
127
127
  #for each milestone in the current version, see if it comes after the current 'last' step, if so, make it the last and record the date/time
@@ -208,6 +208,7 @@ module Dor
208
208
 
209
209
  # Initilizes workflow for the object in the workflow service
210
210
  # It will set the priorty of the new workflow to the current_priority if it is > 0
211
+ # It will set lane_id from the item's APO default workflow lane
211
212
  # @param [String] name of the workflow to be initialized
212
213
  # @param [String] repo name of the repository to create workflow for
213
214
  # @param [Boolean] create_ds create a 'workflows' datastream in Fedora for the object
@@ -215,6 +216,7 @@ module Dor
215
216
  priority = workflows.current_priority if priority == 0
216
217
  opts = { :create_ds => create_ds }
217
218
  opts[:priority] = priority if(priority > 0)
219
+ opts[:lane_id] = default_workflow_lane
218
220
  Dor::WorkflowService.create_workflow(repo, self.pid, name, Dor::WorkflowObject.initial_workflow(name), opts)
219
221
  end
220
222
 
data/lib/dor/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Dor
2
- VERSION = '4.7.0'
2
+ VERSION = '4.8.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dor-services
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.7.0
4
+ version: 4.8.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2014-06-06 00:00:00.000000000 Z
16
+ date: 2014-06-17 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: active-fedora
@@ -36,17 +36,23 @@ dependencies:
36
36
  requirement: !ruby/object:Gem::Requirement
37
37
  none: false
38
38
  requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ version: '3.2'
39
42
  - - ! '>='
40
43
  - !ruby/object:Gem::Version
41
- version: 3.2.16
44
+ version: 3.2.18
42
45
  type: :runtime
43
46
  prerelease: false
44
47
  version_requirements: !ruby/object:Gem::Requirement
45
48
  none: false
46
49
  requirements:
50
+ - - ~>
51
+ - !ruby/object:Gem::Version
52
+ version: '3.2'
47
53
  - - ! '>='
48
54
  - !ruby/object:Gem::Version
49
- version: 3.2.16
55
+ version: 3.2.18
50
56
  - !ruby/object:Gem::Dependency
51
57
  name: confstruct
52
58
  requirement: !ruby/object:Gem::Requirement