zizia 5.5.0 → 6.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/.github_changelog_generator +1 -1
- data/.rubocop.yml +0 -1
- data/CHANGELOG.md +12 -6
- data/README.md +2 -2
- data/app/assets/javascripts/zizia/zizia.js +1 -43
- data/app/helpers/zizia/application_helper.rb +6 -0
- data/app/models/zizia/csv_import_detail.rb +4 -0
- data/app/models/zizia/pre_ingest_work.rb +0 -15
- data/app/uploaders/zizia/csv_manifest_validator.rb +2 -2
- data/app/views/zizia/csv_import_details/_pre_ingest_files_table.html.erb +4 -0
- data/app/views/zizia/csv_import_details/index.html.erb +4 -0
- data/app/views/zizia/csv_import_details/show.html.erb +2 -8
- data/config/initializers/content_deposit_event_job_prepends.rb +10 -0
- data/config/initializers/file_set_attached_event_job_prepends.rb +12 -0
- data/config/initializers/prepends.rb +2 -0
- data/config/routes.rb +0 -1
- data/db/migrate/20191114021032_add_status_to_pre_ingest_file.rb +5 -0
- data/db/migrate/20191210223833_add_status_to_pre_ingest_work.rb +5 -0
- data/lib/zizia/hyrax/hyrax_basic_metadata_mapper.rb +10 -1
- data/lib/zizia/version.rb +1 -1
- data/spec/dummy/app/models/work.rb +1 -1
- data/spec/dummy/db/schema.rb +3 -0
- data/spec/dummy/spec/fixtures/csv_import/csv_files_with_problems/extra - headers.csv +4 -4
- data/spec/dummy/spec/fixtures/csv_import/good/all_fields.csv +2 -2
- data/spec/dummy/spec/fixtures/csv_import/good/all_fields_multi.csv +2 -0
- data/spec/dummy/spec/support/capybara.rb +1 -0
- data/spec/dummy/spec/system/csv_import_details_page_spec.rb +15 -24
- data/spec/dummy/spec/system/import_file_status_spec.rb +95 -0
- data/spec/dummy/spec/system/import_from_csv_spec.rb +2 -2
- data/spec/factories/pre_ingest_file.rb +1 -1
- data/spec/models/zizia/application_job_spec.rb +12 -0
- data/spec/models/zizia/pre_ingest_file_spec.rb +2 -8
- data/spec/rails_helper.rb +0 -3
- data/spec/support/hyrax/basic_metadata.rb +3 -0
- data/spec/zizia/hyrax/hyrax_basic_metadata_mapper_spec.rb +5 -1
- data/zizia.gemspec +1 -0
- metadata +24 -6
- data/app/controllers/zizia/pre_ingest_works_controller.rb +0 -32
- data/app/models/zizia/ability.rb +0 -15
- data/spec/controllers/pre_ingest_works_controller_spec.rb +0 -56
- data/spec/factories/file_sets.rb +0 -36
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4ea278f920c48f0ca7d4e52cc54a619fdcb1214cf115efaeff63f96ca36590ce
|
|
4
|
+
data.tar.gz: cf2d2a451e0e6d41d80ccf121793e1672cb2b1ce13a830013bfd031273a69f26
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 30c878339f6b6076f203c008fed9b6ae448466947e55fbb8c80a53b56920e014be4e92d58afc322fffde6e04120a8cf8cee9be66ba5b90fda776a92ded3d5606
|
|
7
|
+
data.tar.gz: dfaf9874758df10a63ce96425105c986708858ed549f02217fac2977bb000e204294cb05dbe6e5b8a3ceb347604418e1a67396ddc2b97d0428389c23d8185e9d
|
data/.github_changelog_generator
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
unreleased=true
|
|
2
|
-
future-release=
|
|
2
|
+
future-release=6.0.0
|
data/.rubocop.yml
CHANGED
|
@@ -62,7 +62,6 @@ RSpec/DescribeClass:
|
|
|
62
62
|
|
|
63
63
|
RSpec/ExampleLength:
|
|
64
64
|
Exclude:
|
|
65
|
-
- 'spec/controllers/pre_ingest_works_controller_spec.rb'
|
|
66
65
|
- 'spec/zizia/hyrax/hyrax_basic_metadata_mapper_spec.rb'
|
|
67
66
|
- 'spec/integration/import_hyrax_csv.rb'
|
|
68
67
|
- 'spec/integration/csv_import_detail_spec.rb'
|
data/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## [
|
|
3
|
+
## [6.0.0](https://github.com/curationexperts/zizia/tree/6.0.0) (2019-12-13)
|
|
4
4
|
|
|
5
|
-
[Full Changelog](https://github.com/curationexperts/zizia/compare/v5.
|
|
5
|
+
[Full Changelog](https://github.com/curationexperts/zizia/compare/v5.5.0...6.0.0)
|
|
6
|
+
|
|
7
|
+
**Merged pull requests:**
|
|
8
|
+
|
|
9
|
+
- Revert "Basic file status" [\#68](https://github.com/curationexperts/zizia/pull/68) ([little9](https://github.com/little9))
|
|
10
|
+
- More detailed file status [\#66](https://github.com/curationexperts/zizia/pull/66) ([little9](https://github.com/little9))
|
|
11
|
+
|
|
12
|
+
## [v5.5.0](https://github.com/curationexperts/zizia/tree/v5.5.0) (2019-11-21)
|
|
13
|
+
|
|
14
|
+
[Full Changelog](https://github.com/curationexperts/zizia/compare/v5.4.0...v5.5.0)
|
|
6
15
|
|
|
7
16
|
**Merged pull requests:**
|
|
8
17
|
|
|
@@ -87,6 +96,7 @@
|
|
|
87
96
|
- Add intro header for metadata field guide [\#36](https://github.com/curationexperts/zizia/pull/36) ([bess](https://github.com/bess))
|
|
88
97
|
- Add field definitions for 'files' and 'visibility' to the field guide [\#35](https://github.com/curationexperts/zizia/pull/35) ([mark-dce](https://github.com/mark-dce))
|
|
89
98
|
- Label and hide system fields [\#34](https://github.com/curationexperts/zizia/pull/34) ([bess](https://github.com/bess))
|
|
99
|
+
- Add files count to import details page [\#32](https://github.com/curationexperts/zizia/pull/32) ([little9](https://github.com/little9))
|
|
90
100
|
|
|
91
101
|
## [v4.5.4.alpha.01](https://github.com/curationexperts/zizia/tree/v4.5.4.alpha.01) (2019-10-04)
|
|
92
102
|
|
|
@@ -100,10 +110,6 @@
|
|
|
100
110
|
|
|
101
111
|
[Full Changelog](https://github.com/curationexperts/zizia/compare/v4.5.2.alpha.01...v4.5.3.alpha.01)
|
|
102
112
|
|
|
103
|
-
**Merged pull requests:**
|
|
104
|
-
|
|
105
|
-
- Add files count to import details page [\#32](https://github.com/curationexperts/zizia/pull/32) ([little9](https://github.com/little9))
|
|
106
|
-
|
|
107
113
|
## [v4.5.2.alpha.01](https://github.com/curationexperts/zizia/tree/v4.5.2.alpha.01) (2019-10-03)
|
|
108
114
|
|
|
109
115
|
[Full Changelog](https://github.com/curationexperts/zizia/compare/v4.5.1.alpha.01...v4.5.2.alpha.01)
|
data/README.md
CHANGED
|
@@ -60,7 +60,7 @@ to create a new application with Zizia installed.
|
|
|
60
60
|
8. Add a deduplication_key to your default work type's medata:
|
|
61
61
|
|
|
62
62
|
```
|
|
63
|
-
property :deduplication_key, predicate:
|
|
63
|
+
property :deduplication_key, predicate: ::RDF::Vocab::BF2::identifiedBy, multiple: false do |index|
|
|
64
64
|
index.as :stored_searchable
|
|
65
65
|
end
|
|
66
66
|
```
|
|
@@ -104,7 +104,7 @@ environment variables called `IMPORT_PATH`. If `IMPORT_PATH` is not set, `HyraxR
|
|
|
104
104
|
|
|
105
105
|
To run Solr and Fedora for testing purposes, open a new terminal session for each and run the following commads:
|
|
106
106
|
|
|
107
|
-
`solr_wrapper --config spec/dummy/config/solr_wrapper_test.yml`
|
|
107
|
+
`solr_wrapper --config spec/dummy/config/solr_wrapper_test.yml`
|
|
108
108
|
`fcrepo_wrapper --config spec/dummy/config/fcrepo_wrapper_test.yml`
|
|
109
109
|
|
|
110
110
|
After this you can run the whole suite, or individual specs. System specs are located
|
|
@@ -1,48 +1,6 @@
|
|
|
1
1
|
var Zizia = {
|
|
2
|
-
displayUploadedFile: function
|
|
2
|
+
displayUploadedFile: function() {
|
|
3
3
|
var DisplayUploadedFile = require('zizia/DisplayUploadedFile')
|
|
4
4
|
new DisplayUploadedFile().display()
|
|
5
|
-
},
|
|
6
|
-
checkStatuses: function (options) {
|
|
7
|
-
var results = []
|
|
8
|
-
// Go through the list of thumbnails for the work based
|
|
9
|
-
// on the deduplicationKey
|
|
10
|
-
options.thumbnails.forEach(function (thumbnail) {
|
|
11
|
-
$.ajax({
|
|
12
|
-
type: 'HEAD',
|
|
13
|
-
url: thumbnail,
|
|
14
|
-
complete: function (xhr) {
|
|
15
|
-
// Request only the headers from the thumbnail url
|
|
16
|
-
// push the statuses into an array
|
|
17
|
-
results.push(xhr.getResponseHeader('status'))
|
|
18
|
-
// See how many urls are not returning 200
|
|
19
|
-
var missingThumbnailCount = results.filter(
|
|
20
|
-
function (status) {
|
|
21
|
-
if (status !== '200 OK') { return true }
|
|
22
|
-
}).length
|
|
23
|
-
// If there are any not returning 200, the work is still being processed
|
|
24
|
-
if (missingThumbnailCount > 0) {
|
|
25
|
-
|
|
26
|
-
} else {
|
|
27
|
-
Zizia.addSuccessClasses(options)
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
})
|
|
31
|
-
})
|
|
32
|
-
},
|
|
33
|
-
displayWorkStatus: function () {
|
|
34
|
-
$('[id^=work-status]').each(function () {
|
|
35
|
-
var deduplicationKey = $(this)[0].id.split('work-status-')[1]
|
|
36
|
-
$.get('/pre_ingest_works/thumbnails/' + deduplicationKey, function (data) {
|
|
37
|
-
data.deduplicationKey = deduplicationKey
|
|
38
|
-
Zizia.checkStatuses(data)
|
|
39
|
-
})
|
|
40
|
-
})
|
|
41
|
-
},
|
|
42
|
-
addSuccessClasses: function (options) {
|
|
43
|
-
$('#work-status-' + options.deduplicationKey + ' > span').removeClass('status-unknown')
|
|
44
|
-
$('#work-status-' + options.deduplicationKey + ' > span').removeClass('glyphicon-question-sign')
|
|
45
|
-
$('#work-status-' + options.deduplicationKey + ' > span').addClass('text-success')
|
|
46
|
-
$('#work-status-' + options.deduplicationKey + ' > span').addClass('glyphicon-ok-sign')
|
|
47
5
|
}
|
|
48
6
|
}
|
|
@@ -30,5 +30,11 @@ module Zizia
|
|
|
30
30
|
def collections?
|
|
31
31
|
!ActiveFedora::SolrService.query('has_model_ssim:Collection').empty?
|
|
32
32
|
end
|
|
33
|
+
|
|
34
|
+
def status_icon(status)
|
|
35
|
+
# rubocop:disable Rails/OutputSafety
|
|
36
|
+
return "<span class='glyphicon glyphicon-ok-sign text-success' aria-label='Status: Complete'></span>".html_safe if status == 'attached'
|
|
37
|
+
"<span class='glyphicon glyphicon-question-sign' aria-label='Status: Unknown'></span>".html_safe
|
|
38
|
+
end
|
|
33
39
|
end
|
|
34
40
|
end
|
|
@@ -12,20 +12,5 @@ module Zizia
|
|
|
12
12
|
return solr_title unless solr_title.nil?
|
|
13
13
|
'This work\'s metadata has not been indexed yet.'
|
|
14
14
|
end
|
|
15
|
-
|
|
16
|
-
# Returns thumbnail urls based on the work's deduplication_key
|
|
17
|
-
# @return [Array<String>] the work's thumbnail urls
|
|
18
|
-
def thumbnails
|
|
19
|
-
thumbnail_urls = []
|
|
20
|
-
return thumbnail_urls if deduplication_key.nil?
|
|
21
|
-
file_sets = ActiveFedora::SolrService.get("deduplication_key_tesim:#{deduplication_key}")
|
|
22
|
-
.dig('response', 'docs', 0, 'file_set_ids_ssim')
|
|
23
|
-
return thumbnail_urls unless file_sets
|
|
24
|
-
file_sets.each do |file_set_id|
|
|
25
|
-
thumbnail_urls.push(ActiveFedora::SolrService.get("id:#{file_set_id}")
|
|
26
|
-
.dig('response', 'docs', 0, 'thumbnail_path_ss'))
|
|
27
|
-
end
|
|
28
|
-
thumbnail_urls
|
|
29
|
-
end
|
|
30
15
|
end
|
|
31
16
|
end
|
|
@@ -63,7 +63,7 @@ module Zizia
|
|
|
63
63
|
'publisher', 'date created', 'subject',
|
|
64
64
|
'language', 'identifier', 'location',
|
|
65
65
|
'related url', 'bibliographic_citation',
|
|
66
|
-
'source', 'visibility']
|
|
66
|
+
'source', 'visibility', 'deduplication_key', 'type']
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
def parse_csv
|
|
@@ -82,7 +82,7 @@ module Zizia
|
|
|
82
82
|
end
|
|
83
83
|
|
|
84
84
|
def required_headers
|
|
85
|
-
['title', 'creator', 'keyword', 'rights statement', 'visibility', 'files']
|
|
85
|
+
['title', 'creator', 'keyword', 'rights statement', 'visibility', 'files', 'deduplication_key']
|
|
86
86
|
end
|
|
87
87
|
|
|
88
88
|
def duplicate_headers
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
<th>Size</th>
|
|
9
9
|
<th>Row Number</th>
|
|
10
10
|
<th>Date Created</th>
|
|
11
|
+
<th>Status</th>
|
|
11
12
|
</tr>
|
|
12
13
|
<% pre_ingest_work.pre_ingest_files.each do |pre_ingest_file| %>
|
|
13
14
|
<tr>
|
|
@@ -23,6 +24,9 @@
|
|
|
23
24
|
<td>
|
|
24
25
|
<%= pre_ingest_file.created_at.strftime("%B %-d, %Y %H:%M") %>
|
|
25
26
|
</td>
|
|
27
|
+
<td>
|
|
28
|
+
<%= status_icon(pre_ingest_file.status) %>
|
|
29
|
+
</td>
|
|
26
30
|
</tr>
|
|
27
31
|
<% end %>
|
|
28
32
|
</table>
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
<th>Number of Works</th>
|
|
10
10
|
<th>Number of Files</th>
|
|
11
11
|
<th>Total Size</th>
|
|
12
|
+
<th>Status</th>
|
|
12
13
|
<th>Overwrite Behavior Type</th>
|
|
13
14
|
</tr>
|
|
14
15
|
<% @csv_import_details.each do |csv_import_detail| %>
|
|
@@ -34,6 +35,9 @@
|
|
|
34
35
|
<td>
|
|
35
36
|
<%= number_to_human_size(csv_import_detail.total_size) %>
|
|
36
37
|
</td>
|
|
38
|
+
<td>
|
|
39
|
+
<%= csv_import_detail.status %>
|
|
40
|
+
</td>
|
|
37
41
|
<td>
|
|
38
42
|
<%= human_update_actor_stack(csv_import_detail.update_actor_stack) %>
|
|
39
43
|
</td>
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
<th>Title</th>
|
|
16
16
|
<th>Files</th>
|
|
17
17
|
<th>Date</th>
|
|
18
|
-
<th>Status</th>
|
|
19
18
|
</tr>
|
|
20
19
|
<% @pre_ingest_works.each do |pre_ingest_work| %>
|
|
21
20
|
<tr>
|
|
@@ -31,16 +30,11 @@
|
|
|
31
30
|
<td>
|
|
32
31
|
<%= pre_ingest_work.created_at.strftime("%B %-d, %Y %H:%M") %>
|
|
33
32
|
</td>
|
|
34
|
-
<td
|
|
35
|
-
|
|
33
|
+
<td>
|
|
34
|
+
<%= status_icon(pre_ingest_work.status) %>
|
|
36
35
|
</td>
|
|
37
36
|
</tr>
|
|
38
37
|
<% end %>
|
|
39
38
|
</table>
|
|
40
39
|
<%= paginate @pre_ingest_works %>
|
|
41
40
|
</div>
|
|
42
|
-
<script>
|
|
43
|
-
$(document).on('turbolinks:load', function() {
|
|
44
|
-
Zizia.displayWorkStatus()
|
|
45
|
-
})
|
|
46
|
-
</script>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
module ContentDepositEventJobPrepends
|
|
2
|
+
def action
|
|
3
|
+
super
|
|
4
|
+
if repo_object.deduplication_key
|
|
5
|
+
pre_ingest_work = Zizia::PreIngestWork.find_by(deduplication_key: repo_object.deduplication_key)
|
|
6
|
+
pre_ingest_work.status = 'attached'
|
|
7
|
+
pre_ingest_work.save
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module FileSetAttachedEventJobPrepends
|
|
2
|
+
def action
|
|
3
|
+
if repo_object.kind_of?(FileSet)
|
|
4
|
+
pre_ingest_work_id = Zizia::PreIngestWork.find_by(deduplication_key: curation_concern.deduplication_key)
|
|
5
|
+
pre_ingest_file = Zizia::PreIngestFile.find_by(size: repo_object.files.first.size,
|
|
6
|
+
filename: repo_object.files.first.original_name,
|
|
7
|
+
pre_ingest_work_id: pre_ingest_work_id)
|
|
8
|
+
pre_ingest_file.status = 'attached'
|
|
9
|
+
pre_ingest_file.save
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
data/config/routes.rb
CHANGED
|
@@ -31,7 +31,7 @@ module Zizia
|
|
|
31
31
|
##
|
|
32
32
|
# @return [Enumerable<Symbol>] The fields the mapper can process.
|
|
33
33
|
def fields
|
|
34
|
-
core_fields + basic_fields + [:visibility, :files]
|
|
34
|
+
core_fields + basic_fields + [:visibility, :files] + zizia_fields
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
# Properties defined with `multiple: false` in
|
|
@@ -57,6 +57,10 @@ module Zizia
|
|
|
57
57
|
single_value('import_url')
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
+
def deduplication_key
|
|
61
|
+
single_value('deduplication_key')
|
|
62
|
+
end
|
|
63
|
+
|
|
60
64
|
# We should accept visibility values that match the UI and transform them into
|
|
61
65
|
# the controlled vocabulary term expected by Hyrax
|
|
62
66
|
def visibility
|
|
@@ -152,5 +156,10 @@ module Zizia
|
|
|
152
156
|
:based_near, :related_url,
|
|
153
157
|
:bibliographic_citation, :source]
|
|
154
158
|
end
|
|
159
|
+
|
|
160
|
+
# Properties requires for zizia
|
|
161
|
+
def zizia_fields
|
|
162
|
+
[:deduplication_key]
|
|
163
|
+
end
|
|
155
164
|
end
|
|
156
165
|
end
|
data/lib/zizia/version.rb
CHANGED
|
@@ -9,7 +9,7 @@ class Work < ActiveFedora::Base
|
|
|
9
9
|
validates :title, presence: { message: 'Your work must have a title.' }
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
property :deduplication_key, predicate:
|
|
12
|
+
property :deduplication_key, predicate: ::RDF::Vocab::BF2::identifiedBy, multiple: false do |index|
|
|
13
13
|
index.as :stored_searchable
|
|
14
14
|
end
|
|
15
15
|
# This must be included at the end, because it finalizes the metadata
|
data/spec/dummy/db/schema.rb
CHANGED
|
@@ -595,6 +595,8 @@ ActiveRecord::Schema.define(version: 201901241536542) do
|
|
|
595
595
|
t.integer "pre_ingest_work_id"
|
|
596
596
|
t.datetime "created_at", null: false
|
|
597
597
|
t.datetime "updated_at", null: false
|
|
598
|
+
t.string "status", default: "preingest"
|
|
599
|
+
t.string "access_control_id"
|
|
598
600
|
t.index ["pre_ingest_work_id"], name: "index_zizia_pre_ingest_files_on_pre_ingest_work_id"
|
|
599
601
|
end
|
|
600
602
|
|
|
@@ -604,6 +606,7 @@ ActiveRecord::Schema.define(version: 201901241536542) do
|
|
|
604
606
|
t.datetime "created_at", null: false
|
|
605
607
|
t.datetime "updated_at", null: false
|
|
606
608
|
t.string "deduplication_key"
|
|
609
|
+
t.string "status", default: "preingest"
|
|
607
610
|
t.index ["csv_import_detail_id"], name: "index_zizia_pre_ingest_works_on_csv_import_detail_id"
|
|
608
611
|
t.index ["deduplication_key"], name: "index_zizia_pre_ingest_works_on_deduplication_key"
|
|
609
612
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
rights_statement,another_header_2,rights statement,title,files,label,relative_path,import url,resource type,creator,contributor,abstract or summary,keyword,license,publisher,date created,subject,language,identifier,location,related url,bibliographic_citation,source,visibility
|
|
2
|
-
http://rightsstatements.org/vocab/InC/1.0/,,http://rightsstatements.org/vocab/InC/1.0/,Work 1 Title,cat.jpg,,,,,creator,,,cat,,,,,,,,,,,open
|
|
3
|
-
http://rightsstatements.org/vocab/InC/1.0/,,http://rightsstatements.org/vocab/InC/1.0/,Work 2 Title,cat.jpg,,,,,creator,,,cat,,,,,,,,,,,open
|
|
4
|
-
http://rightsstatements.org/vocab/InC/1.0/,,http://rightsstatements.org/vocab/InC/1.0/,Work 3 Title,cat.jpg,,,,,creator,,,cat,,,,,,,,,,,open
|
|
1
|
+
deduplication_key,rights_statement,another_header_2,rights statement,title,files,label,relative_path,import url,resource type,creator,contributor,abstract or summary,keyword,license,publisher,date created,subject,language,identifier,location,related url,bibliographic_citation,source,visibility
|
|
2
|
+
1,http://rightsstatements.org/vocab/InC/1.0/,,http://rightsstatements.org/vocab/InC/1.0/,Work 1 Title,cat.jpg,,,,,creator,,,cat,,,,,,,,,,,open
|
|
3
|
+
2,http://rightsstatements.org/vocab/InC/1.0/,,http://rightsstatements.org/vocab/InC/1.0/,Work 2 Title,cat.jpg,,,,,creator,,,cat,,,,,,,,,,,open
|
|
4
|
+
3,http://rightsstatements.org/vocab/InC/1.0/,,http://rightsstatements.org/vocab/InC/1.0/,Work 3 Title,cat.jpg,,,,,creator,,,cat,,,,,,,,,,,open
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
identifier,license,deduplication_key,visibility,location,keyword,rights statement,creator,title,files
|
|
2
|
-
abc/123,https://creativecommons.org/licenses/by/4.0/,abc/123,PUBlic,http://www.geonames.org/5667009/montana.html|~|http://www.geonames.org/6252001/united-states.html,Clothing stores $z California $z Los Angeles|~|Interior design $z California $z Los Angeles,http://rightsstatements.org/vocab/InC/1.0/,"Connell, Will, $d 1898-1961","Interior view of The Bachelors haberdashery designed by Julius Ralph Davidson, Los Angeles, circa 1929",dog.jpg
|
|
1
|
+
identifier,type,license,deduplication_key,visibility,location,keyword,rights statement,creator,title,files
|
|
2
|
+
abc/123,work,https://creativecommons.org/licenses/by/4.0/,abc/123,PUBlic,http://www.geonames.org/5667009/montana.html|~|http://www.geonames.org/6252001/united-states.html,Clothing stores $z California $z Los Angeles|~|Interior design $z California $z Los Angeles,http://rightsstatements.org/vocab/InC/1.0/,"Connell, Will, $d 1898-1961","Interior view of The Bachelors haberdashery designed by Julius Ralph Davidson, Los Angeles, circa 1929",dog.jpg
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
identifier,type,license,deduplication_key,visibility,location,keyword,rights statement,creator,title,files
|
|
2
|
+
abc/123,work,https://creativecommons.org/licenses/by/4.0/,abc/123,PUBlic,http://www.geonames.org/5667009/montana.html|~|http://www.geonames.org/6252001/united-states.html,Clothing stores $z California $z Los Angeles|~|Interior design $z California $z Los Angeles,http://rightsstatements.org/vocab/InC/1.0/,"Connell, Will, $d 1898-1961","Interior view of The Bachelors haberdashery designed by Julius Ralph Davidson, Los Angeles, circa 1929",dog.jpg|~|cat.jpg
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require 'rails_helper'
|
|
2
2
|
include Warden::Test::Helpers
|
|
3
3
|
|
|
4
|
-
RSpec.describe 'viewing the csv import detail page',
|
|
4
|
+
RSpec.describe 'viewing the csv import detail page', js: true do
|
|
5
5
|
let(:user) { FactoryBot.create(:admin, email: 'systems@curationexperts.com')}
|
|
6
6
|
let(:second_user) { FactoryBot.create(:user, email: 'user@curationexperts.com') }
|
|
7
7
|
let(:csv_import) { FactoryBot.create(:csv_import) }
|
|
@@ -11,14 +11,6 @@ RSpec.describe 'viewing the csv import detail page', :clean, js: true do
|
|
|
11
11
|
let(:csv_import_detail_third) { FactoryBot.create(:csv_import_detail, created_at: Time.parse('Wed, 30 Oct 2019 14:20:02 UTC +00:00').utc, depositor_id: second_user.id, csv_import_id: 2) }
|
|
12
12
|
let(:csv_pre_ingest_works) { FactoryBot.create_list(:pre_ingest_work, 12, csv_import_detail_id: 4) }
|
|
13
13
|
let(:csv_pre_ingest_work_second) { FactoryBot.create(:pre_ingest_work, csv_import_detail_id: 5, created_at: Time.parse('Thur, 31 Oct 2019 14:20:02 UTC +00:00').utc) }
|
|
14
|
-
let(:pre_ingest_file) { FactoryBot.create(:pre_ingest_file, pre_ingest_work_id: csv_pre_ingest_work_second.id) }
|
|
15
|
-
let(:file_set) do
|
|
16
|
-
FactoryBot.create(:file_set,
|
|
17
|
-
title: ['zizia.png'],
|
|
18
|
-
content: File.open([Zizia::Engine.root, '/', 'spec/fixtures/zizia.png'].join))
|
|
19
|
-
end
|
|
20
|
-
let(:work) { Work.new(title: ['a title'], deduplication_key: csv_pre_ingest_work_second.deduplication_key) }
|
|
21
|
-
|
|
22
14
|
|
|
23
15
|
before do
|
|
24
16
|
user.save
|
|
@@ -35,10 +27,6 @@ RSpec.describe 'viewing the csv import detail page', :clean, js: true do
|
|
|
35
27
|
csv_import_detail_third.save
|
|
36
28
|
csv_pre_ingest_works.each(&:save)
|
|
37
29
|
csv_pre_ingest_work_second.save
|
|
38
|
-
pre_ingest_file.save
|
|
39
|
-
|
|
40
|
-
work.ordered_members << file_set
|
|
41
|
-
work.save
|
|
42
30
|
login_as user
|
|
43
31
|
end
|
|
44
32
|
|
|
@@ -46,6 +34,7 @@ RSpec.describe 'viewing the csv import detail page', :clean, js: true do
|
|
|
46
34
|
visit ('/csv_import_details/index')
|
|
47
35
|
expect(page).to have_content('ID')
|
|
48
36
|
click_on '13'
|
|
37
|
+
expect(page).to have_content('Status')
|
|
49
38
|
expect(page).to have_content('Total Size')
|
|
50
39
|
expect(page).to have_content('Deduplication Key')
|
|
51
40
|
end
|
|
@@ -65,6 +54,12 @@ RSpec.describe 'viewing the csv import detail page', :clean, js: true do
|
|
|
65
54
|
expect(page).to have_link '13'
|
|
66
55
|
end
|
|
67
56
|
|
|
57
|
+
it 'has a sortable status' do
|
|
58
|
+
pending 'status is always undetermined currently'
|
|
59
|
+
visit('/csv_import_details/index?direction=asc&locale=en&sort=status')
|
|
60
|
+
expect(page).to have_content 'zippy'
|
|
61
|
+
end
|
|
62
|
+
|
|
68
63
|
it 'has a sortable date' do
|
|
69
64
|
visit('/csv_import_details/index?direction=desc&locale=en&sort=created_at')
|
|
70
65
|
expect(page).to have_content 'October 31'
|
|
@@ -83,6 +78,12 @@ RSpec.describe 'viewing the csv import detail page', :clean, js: true do
|
|
|
83
78
|
expect(page).to have_content('October 29, 2019 14:20')
|
|
84
79
|
end
|
|
85
80
|
|
|
81
|
+
it 'displays undetermined for the status' do
|
|
82
|
+
visit ('/csv_import_details/index')
|
|
83
|
+
expect(page).to have_content('Status')
|
|
84
|
+
expect(page).to have_content('undetermined')
|
|
85
|
+
end
|
|
86
|
+
|
|
86
87
|
it 'displays the overwrite behavior type' do
|
|
87
88
|
visit ('/csv_import_details/index')
|
|
88
89
|
expect(page).to have_content('Overwrite Behavior Type')
|
|
@@ -98,6 +99,7 @@ RSpec.describe 'viewing the csv import detail page', :clean, js: true do
|
|
|
98
99
|
|
|
99
100
|
visit('/csv_import_details/index')
|
|
100
101
|
expect(page).to have_content('Next')
|
|
102
|
+
|
|
101
103
|
end
|
|
102
104
|
|
|
103
105
|
it 'has pagination at 10' do
|
|
@@ -132,15 +134,4 @@ RSpec.describe 'viewing the csv import detail page', :clean, js: true do
|
|
|
132
134
|
click_on 'View Files'
|
|
133
135
|
expect(page).to have_content 'Row Number'
|
|
134
136
|
end
|
|
135
|
-
|
|
136
|
-
it 'can show a status for a file' do
|
|
137
|
-
file_set
|
|
138
|
-
visit('/csv_import_details/index')
|
|
139
|
-
click_on '5'
|
|
140
|
-
expect(page).to have_content 'View Files'
|
|
141
|
-
expect(page).to have_content 'Status'
|
|
142
|
-
expect(page.html).to match(/glyphicon-question-sign/)
|
|
143
|
-
click_on 'View Files'
|
|
144
|
-
expect(page).to have_content('Filename')
|
|
145
|
-
end
|
|
146
137
|
end
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'rails_helper'
|
|
3
|
+
include Warden::Test::Helpers
|
|
4
|
+
|
|
5
|
+
RSpec.describe 'Importing records from a CSV file', :perform_jobs, :clean, type: :system, js: true do
|
|
6
|
+
before do
|
|
7
|
+
allow(CharacterizeJob).to receive(:perform_later)
|
|
8
|
+
ENV['IMPORT_PATH'] = File.join(fixture_path, 'images')
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
let(:csv_file) { File.join(fixture_path, 'csv_import', 'good', 'all_fields_multi.csv') }
|
|
12
|
+
|
|
13
|
+
context 'logged in as an admin user' do
|
|
14
|
+
let(:collection) { FactoryBot.build(:collection, title: ['Testing Collection']) }
|
|
15
|
+
let(:admin_user) { FactoryBot.create(:admin) }
|
|
16
|
+
|
|
17
|
+
let(:admin_set_id) { AdminSet.find_or_create_default_admin_set_id }
|
|
18
|
+
let(:permission_template) { Hyrax::PermissionTemplate.find_or_create_by!(source_id: admin_set_id) }
|
|
19
|
+
let(:workflow) { Sipity::Workflow.create!(active: true, name: 'test-workflow', permission_template: permission_template) }
|
|
20
|
+
|
|
21
|
+
before do
|
|
22
|
+
# Create a single action that can be taken
|
|
23
|
+
Sipity::WorkflowAction.create!(name: 'submit', workflow: workflow)
|
|
24
|
+
|
|
25
|
+
# Grant the user access to deposit into the admin set.
|
|
26
|
+
Hyrax::PermissionTemplateAccess.create!(
|
|
27
|
+
permission_template_id: permission_template.id,
|
|
28
|
+
agent_type: 'user',
|
|
29
|
+
agent_id: admin_user.user_key,
|
|
30
|
+
access: 'deposit'
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
collection.save!
|
|
34
|
+
login_as admin_user
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it 'starts the import' do
|
|
38
|
+
visit '/csv_imports/new'
|
|
39
|
+
expect(page).to have_content 'Testing Collection'
|
|
40
|
+
expect(page).not_to have_content '["Testing Collection"]'
|
|
41
|
+
|
|
42
|
+
# Fill in and submit the form
|
|
43
|
+
select 'Testing Collection', from: "csv_import[fedora_collection_id]"
|
|
44
|
+
select 'Update Existing Metadata, create new works', from: "csv_import[update_actor_stack]"
|
|
45
|
+
attach_file('csv_import[manifest]', csv_file, make_visible: true)
|
|
46
|
+
|
|
47
|
+
expect(page).to have_content('You sucessfully uploaded this CSV: all_fields_multi.csv')
|
|
48
|
+
|
|
49
|
+
click_on 'Preview Import'
|
|
50
|
+
|
|
51
|
+
# We expect to see the title of the collection on the page
|
|
52
|
+
expect(page).to have_content 'Testing Collection'
|
|
53
|
+
|
|
54
|
+
expect(page).to have_content 'This import will process 1 row(s).'
|
|
55
|
+
|
|
56
|
+
# There is a link so the user can cancel.
|
|
57
|
+
expect(page).to have_link 'Cancel', href: '/csv_imports/new?locale=en'
|
|
58
|
+
|
|
59
|
+
expect(page).not_to have_content 'deduplication_key'
|
|
60
|
+
|
|
61
|
+
# After reading the warnings, the user decides
|
|
62
|
+
# to continue with the import.
|
|
63
|
+
click_on 'Start Import'
|
|
64
|
+
|
|
65
|
+
# The show page for the CsvImport
|
|
66
|
+
expect(page).to have_content 'all_fields_multi.csv'
|
|
67
|
+
expect(page).to have_content 'Start time'
|
|
68
|
+
|
|
69
|
+
# We expect to see the title of the collection on the page
|
|
70
|
+
expect(page).to have_content 'Testing Collection'
|
|
71
|
+
expect(Work.count).to eq 1
|
|
72
|
+
|
|
73
|
+
# Ensure that all the fields got assigned as expected
|
|
74
|
+
work = Work.where(title: "*haberdashery*").first
|
|
75
|
+
expect(work.title.first).to match(/haberdashery/)
|
|
76
|
+
expect(Zizia::PreIngestFile.last.status).to eq('attached')
|
|
77
|
+
|
|
78
|
+
expect(Zizia::PreIngestWork.find_by(deduplication_key: work.deduplication_key).pre_ingest_files.count).to eq(2)
|
|
79
|
+
|
|
80
|
+
# Everything should have the attached status now
|
|
81
|
+
expect(Zizia::PreIngestWork.find_by(deduplication_key: work.deduplication_key)
|
|
82
|
+
.pre_ingest_files.first.status).to eq('attached')
|
|
83
|
+
expect(Zizia::PreIngestWork.find_by(deduplication_key: work.deduplication_key).pre_ingest_files.last.status).to eq('attached')
|
|
84
|
+
expect(Zizia::PreIngestWork.find_by(deduplication_key: work.deduplication_key).status).to eq('attached')
|
|
85
|
+
visit('/csv_import_details/index')
|
|
86
|
+
click_on '1'
|
|
87
|
+
expect(page).to have_content 'View Files'
|
|
88
|
+
click_on 'View Files'
|
|
89
|
+
expect(page.html).not_to match(/glyphicon-question-sign/)
|
|
90
|
+
expect(page.html).to match(/glyphicon-ok-sign/)
|
|
91
|
+
expect(page).to have_content('dog.jpg')
|
|
92
|
+
expect(page).to have_content('cat.jpg')
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
@@ -4,6 +4,7 @@ include Warden::Test::Helpers
|
|
|
4
4
|
|
|
5
5
|
RSpec.describe 'Importing records from a CSV file', :perform_jobs, :clean, type: :system, js: true do
|
|
6
6
|
before do
|
|
7
|
+
allow(CharacterizeJob).to receive(:perform_later)
|
|
7
8
|
ENV['IMPORT_PATH'] = File.join(fixture_path, 'images')
|
|
8
9
|
end
|
|
9
10
|
|
|
@@ -32,7 +33,6 @@ RSpec.describe 'Importing records from a CSV file', :perform_jobs, :clean, type:
|
|
|
32
33
|
access: 'deposit'
|
|
33
34
|
)
|
|
34
35
|
|
|
35
|
-
allow(CharacterizeJob).to receive(:perform_later) # There is no fits installed on travis-ci
|
|
36
36
|
collection.save!
|
|
37
37
|
login_as admin_user
|
|
38
38
|
end
|
|
@@ -251,7 +251,7 @@ RSpec.describe 'Importing records from a CSV file', :perform_jobs, :clean, type:
|
|
|
251
251
|
expect(page).to have_content('cat.jpg')
|
|
252
252
|
expect(page).to have_content('5.74 MB')
|
|
253
253
|
expect(page).to have_content('abc/123')
|
|
254
|
-
expect(page).to have_content('
|
|
254
|
+
expect(page).to have_content('haberdashery')
|
|
255
255
|
expect(page).to have_content('Date Created')
|
|
256
256
|
end
|
|
257
257
|
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'rails_helper'
|
|
3
|
+
|
|
4
|
+
RSpec.describe Zizia::ApplicationJob do
|
|
5
|
+
let(:application_job) { described_class.new }
|
|
6
|
+
|
|
7
|
+
context 'when including Zizia' do
|
|
8
|
+
it 'has its own ApplicationJob class' do
|
|
9
|
+
expect(application_job).to be_kind_of(ActiveJob::Base)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -4,15 +4,9 @@ require 'rails_helper'
|
|
|
4
4
|
RSpec.describe Zizia::PreIngestFile do
|
|
5
5
|
let(:pre_ingest_work) { FactoryBot.create(:pre_ingest_work) }
|
|
6
6
|
let(:pre_ingest_file) { FactoryBot.create(:pre_ingest_file, pre_ingest_work_id: pre_ingest_work.id) }
|
|
7
|
-
let(:
|
|
8
|
-
let(:file_set) do
|
|
9
|
-
FactoryBot.create(:file_set,
|
|
10
|
-
title: ['zizia.png'],
|
|
11
|
-
content: File.open([Zizia::Engine.root, '/', 'spec/fixtures/zizia.png'].join))
|
|
12
|
-
end
|
|
13
|
-
let(:basename) { 'zizia.png' }
|
|
7
|
+
let(:basename) { 'my.csv' }
|
|
14
8
|
|
|
15
9
|
it 'can get the basename for the file' do
|
|
16
|
-
expect(pre_ingest_file.basename).to eq
|
|
10
|
+
expect(pre_ingest_file.basename).to eq(basename)
|
|
17
11
|
end
|
|
18
12
|
end
|
data/spec/rails_helper.rb
CHANGED
|
@@ -12,7 +12,6 @@ require 'hydra-role-management'
|
|
|
12
12
|
require 'byebug'
|
|
13
13
|
require 'rails-controller-testing'
|
|
14
14
|
require 'selenium-webdriver'
|
|
15
|
-
require 'devise'
|
|
16
15
|
# Add additional requires below this line. Rails is not loaded until this point!
|
|
17
16
|
|
|
18
17
|
# Requires supporting ruby files with custom matchers and macros, etc, in
|
|
@@ -39,8 +38,6 @@ rescue ActiveRecord::PendingMigrationError => e
|
|
|
39
38
|
exit 1
|
|
40
39
|
end
|
|
41
40
|
RSpec.configure do |config|
|
|
42
|
-
config.include Devise::Test::ControllerHelpers, type: :controller
|
|
43
|
-
|
|
44
41
|
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
|
|
45
42
|
config.fixture_path = "#{::Rails.root}/spec/fixtures"
|
|
46
43
|
|
|
@@ -25,6 +25,9 @@ module Hyrax
|
|
|
25
25
|
work.property :related_url, predicate: ::RDF::RDFS.seeAlso
|
|
26
26
|
work.property :bibliographic_citation, predicate: ::RDF::Vocab::DC.bibliographicCitation
|
|
27
27
|
work.property :source, predicate: ::RDF::Vocab::DC.source
|
|
28
|
+
|
|
29
|
+
# From Zizia
|
|
30
|
+
work.property :deduplication_key, predicate: ::RDF::Vocab::BF2.identifiedBy
|
|
28
31
|
end
|
|
29
32
|
end
|
|
30
33
|
end
|
|
@@ -23,12 +23,16 @@ describe Zizia::HyraxBasicMetadataMapper do
|
|
|
23
23
|
[:visibility, :files]
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
+
let(:zizia_fields) do
|
|
27
|
+
[:deduplication_key]
|
|
28
|
+
end
|
|
29
|
+
|
|
26
30
|
it_behaves_like 'a Zizia::Mapper' do
|
|
27
31
|
let(:metadata) do
|
|
28
32
|
{ title: ['A Title for a Record'],
|
|
29
33
|
my_custom_field: ['This gets ignored'] }
|
|
30
34
|
end
|
|
31
|
-
let(:expected_fields) { core_fields + basic_fields + tenejo_fields }
|
|
35
|
+
let(:expected_fields) { core_fields + basic_fields + tenejo_fields + zizia_fields }
|
|
32
36
|
end
|
|
33
37
|
|
|
34
38
|
context 'with metadata, but some missing fields' do
|
data/zizia.gemspec
CHANGED
|
@@ -34,6 +34,7 @@ Gem::Specification.new do |gem|
|
|
|
34
34
|
gem.add_development_dependency 'fcrepo_wrapper'
|
|
35
35
|
gem.add_development_dependency 'ffaker'
|
|
36
36
|
gem.add_development_dependency 'font-awesome-rails'
|
|
37
|
+
gem.add_development_dependency 'github_changelog_generator'
|
|
37
38
|
gem.add_development_dependency 'hydra-role-management'
|
|
38
39
|
gem.add_development_dependency 'hyrax', '~> 2.5.1'
|
|
39
40
|
gem.add_development_dependency 'hyrax-spec'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: zizia
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 6.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Data Curation Experts
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-
|
|
11
|
+
date: 2019-12-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: active-fedora
|
|
@@ -254,6 +254,20 @@ dependencies:
|
|
|
254
254
|
- - ">="
|
|
255
255
|
- !ruby/object:Gem::Version
|
|
256
256
|
version: '0'
|
|
257
|
+
- !ruby/object:Gem::Dependency
|
|
258
|
+
name: github_changelog_generator
|
|
259
|
+
requirement: !ruby/object:Gem::Requirement
|
|
260
|
+
requirements:
|
|
261
|
+
- - ">="
|
|
262
|
+
- !ruby/object:Gem::Version
|
|
263
|
+
version: '0'
|
|
264
|
+
type: :development
|
|
265
|
+
prerelease: false
|
|
266
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
267
|
+
requirements:
|
|
268
|
+
- - ">="
|
|
269
|
+
- !ruby/object:Gem::Version
|
|
270
|
+
version: '0'
|
|
257
271
|
- !ruby/object:Gem::Dependency
|
|
258
272
|
name: hydra-role-management
|
|
259
273
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -673,7 +687,6 @@ files:
|
|
|
673
687
|
- app/controllers/zizia/csv_imports_controller.rb
|
|
674
688
|
- app/controllers/zizia/importer_documentation_controller.rb
|
|
675
689
|
- app/controllers/zizia/metadata_details_controller.rb
|
|
676
|
-
- app/controllers/zizia/pre_ingest_works_controller.rb
|
|
677
690
|
- app/helpers/zizia/application_helper.rb
|
|
678
691
|
- app/helpers/zizia/metadata_details_helper.rb
|
|
679
692
|
- app/importers/modular_importer.rb
|
|
@@ -682,7 +695,6 @@ files:
|
|
|
682
695
|
- app/lib/zizia/metadata_details.rb
|
|
683
696
|
- app/lib/zizia/metadata_usage.rb
|
|
684
697
|
- app/lib/zizia/work_attributes.rb
|
|
685
|
-
- app/models/zizia/ability.rb
|
|
686
698
|
- app/models/zizia/csv_import.rb
|
|
687
699
|
- app/models/zizia/csv_import_detail.rb
|
|
688
700
|
- app/models/zizia/pre_ingest_file.rb
|
|
@@ -710,6 +722,9 @@ files:
|
|
|
710
722
|
- app/views/zizia/importer_documentation/guide.html.erb
|
|
711
723
|
- app/views/zizia/metadata_details/show.html.erb
|
|
712
724
|
- bin/rails
|
|
725
|
+
- config/initializers/content_deposit_event_job_prepends.rb
|
|
726
|
+
- config/initializers/file_set_attached_event_job_prepends.rb
|
|
727
|
+
- config/initializers/prepends.rb
|
|
713
728
|
- config/routes.rb
|
|
714
729
|
- db/migrate/201901162141281_create_zizia_csv_imports.rb
|
|
715
730
|
- db/migrate/201901162203121_add_manifest_to_zizia_csv_imports.rb
|
|
@@ -731,6 +746,8 @@ files:
|
|
|
731
746
|
- db/migrate/20191031131041_add_deduplication_key_to_pre_ingest_work.rb
|
|
732
747
|
- db/migrate/20191105165518_add_uniqueness_constraint_to_pre_ingest_work_deduplication_key.rb
|
|
733
748
|
- db/migrate/20191105211127_remove_uniqueness_constraint_to_pre_ingest_work_deduplication_key.rb
|
|
749
|
+
- db/migrate/20191114021032_add_status_to_pre_ingest_file.rb
|
|
750
|
+
- db/migrate/20191210223833_add_status_to_pre_ingest_work.rb
|
|
734
751
|
- docs/_config.yml
|
|
735
752
|
- docs/customizing_metadata.md
|
|
736
753
|
- docs/index.md
|
|
@@ -781,7 +798,6 @@ files:
|
|
|
781
798
|
- solr/config/xslt/luke.xsl
|
|
782
799
|
- spec/controllers/importer_documentation_controller_spec.rb
|
|
783
800
|
- spec/controllers/metadata_details_spec.rb
|
|
784
|
-
- spec/controllers/pre_ingest_works_controller_spec.rb
|
|
785
801
|
- spec/dummy/.fcrepo_wrapper
|
|
786
802
|
- spec/dummy/.gitignore
|
|
787
803
|
- spec/dummy/.rspec
|
|
@@ -1474,6 +1490,7 @@ files:
|
|
|
1474
1490
|
- spec/dummy/spec/fixtures/csv_import/good/all_fields.csv
|
|
1475
1491
|
- spec/dummy/spec/fixtures/csv_import/good/all_fields_complete_update.csv
|
|
1476
1492
|
- spec/dummy/spec/fixtures/csv_import/good/all_fields_metadata_update.csv
|
|
1493
|
+
- spec/dummy/spec/fixtures/csv_import/good/all_fields_multi.csv
|
|
1477
1494
|
- spec/dummy/spec/fixtures/csv_import/good/all_fields_only_new.csv
|
|
1478
1495
|
- spec/dummy/spec/fixtures/images/animals/cat.png
|
|
1479
1496
|
- spec/dummy/spec/fixtures/images/birds.jpg
|
|
@@ -1490,6 +1507,7 @@ files:
|
|
|
1490
1507
|
- spec/dummy/spec/support/capybara.rb
|
|
1491
1508
|
- spec/dummy/spec/system/csv_import_details_page_spec.rb
|
|
1492
1509
|
- spec/dummy/spec/system/import_csv_with_warnings_spec.rb
|
|
1510
|
+
- spec/dummy/spec/system/import_file_status_spec.rb
|
|
1493
1511
|
- spec/dummy/spec/system/import_from_csv_spec.rb
|
|
1494
1512
|
- spec/dummy/spec/system/import_from_csv_with_errors_spec.rb
|
|
1495
1513
|
- spec/dummy/spec/system/import_with_no_collection_spec.rb
|
|
@@ -1512,7 +1530,6 @@ files:
|
|
|
1512
1530
|
- spec/factories/collection.rb
|
|
1513
1531
|
- spec/factories/csv_import.rb
|
|
1514
1532
|
- spec/factories/csv_import_detail.rb
|
|
1515
|
-
- spec/factories/file_sets.rb
|
|
1516
1533
|
- spec/factories/pre_ingest_file.rb
|
|
1517
1534
|
- spec/factories/pre_ingest_work.rb
|
|
1518
1535
|
- spec/factories/user.rb
|
|
@@ -1532,6 +1549,7 @@ files:
|
|
|
1532
1549
|
- spec/integration/csv_import_detail_spec.rb
|
|
1533
1550
|
- spec/integration/import_hyrax_csv.rb
|
|
1534
1551
|
- spec/models/csv_import_spec.rb
|
|
1552
|
+
- spec/models/zizia/application_job_spec.rb
|
|
1535
1553
|
- spec/models/zizia/csv_import_detail_spec.rb
|
|
1536
1554
|
- spec/models/zizia/pre_ingest_file_spec.rb
|
|
1537
1555
|
- spec/models/zizia/pre_ingest_work_spec.rb
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Zizia
|
|
4
|
-
class PreIngestWorksController < ::ApplicationController
|
|
5
|
-
before_action :merge_abilities
|
|
6
|
-
load_and_authorize_resource
|
|
7
|
-
|
|
8
|
-
def thumbnails
|
|
9
|
-
pre_ingest_work = Zizia::PreIngestWork.where(deduplication_key: pre_ingest_works_params[:deduplication_key]).first
|
|
10
|
-
|
|
11
|
-
@thumbnails = if pre_ingest_work
|
|
12
|
-
pre_ingest_work.thumbnails
|
|
13
|
-
else
|
|
14
|
-
[]
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
respond_to do |format|
|
|
18
|
-
format.json { render json: { thumbnails: @thumbnails } }
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
private
|
|
23
|
-
|
|
24
|
-
def pre_ingest_works_params
|
|
25
|
-
params.permit(:deduplication_key, :format)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def merge_abilities
|
|
29
|
-
current_ability.merge(Zizia::Ability.new(current_user))
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
data/app/models/zizia/ability.rb
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
module Zizia
|
|
3
|
-
class Ability
|
|
4
|
-
include Hydra::Ability
|
|
5
|
-
include Hyrax::Ability
|
|
6
|
-
self.ability_logic += [:everyone_can_create_curation_concerns]
|
|
7
|
-
|
|
8
|
-
# Define any customized permissions here.
|
|
9
|
-
def custom_permissions
|
|
10
|
-
can :manage, Zizia::CsvImport if current_user.admin?
|
|
11
|
-
can :manage, Zizia::CsvImportDetail if current_user.admin?
|
|
12
|
-
can :manage, Zizia::PreIngestWork if current_user.admin?
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'rails_helper'
|
|
4
|
-
|
|
5
|
-
RSpec.describe Zizia::PreIngestWorksController, :clean, type: :controller do
|
|
6
|
-
routes { Zizia::Engine.routes }
|
|
7
|
-
let(:admin_user) { FactoryBot.create(:admin) }
|
|
8
|
-
let(:pre_ingest_work) { FactoryBot.create(:pre_ingest_work) }
|
|
9
|
-
let(:pre_ingest_file) { FactoryBot.create(:pre_ingest_file, pre_ingest_work_id: pre_ingest_work.id) }
|
|
10
|
-
let(:pre_ingest_file_without_file) { FactoryBot.create(:pre_ingest_file, pre_ingest_work_id: pre_ingest_work.id, filename: File.open([Zizia::Engine.root, '/', 'spec/fixtures/dog.jpg'].join)) }
|
|
11
|
-
let(:work) { Work.new(title: ['a title'], deduplication_key: pre_ingest_work.deduplication_key) }
|
|
12
|
-
let(:file_set) do
|
|
13
|
-
FactoryBot.create(:file_set,
|
|
14
|
-
title: ['zizia.png'],
|
|
15
|
-
content: File.open([Zizia::Engine.root, '/', 'spec/fixtures/zizia.png'].join))
|
|
16
|
-
end
|
|
17
|
-
let(:basename) { 'zizia.png' }
|
|
18
|
-
before do
|
|
19
|
-
work.ordered_members << file_set
|
|
20
|
-
work.save
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
describe 'GET thumbnails' do
|
|
24
|
-
context 'as a logged in user' do
|
|
25
|
-
it 'returns 200' do
|
|
26
|
-
allow(controller).to receive(:current_user).and_return(admin_user)
|
|
27
|
-
get :thumbnails, params: { deduplication_key: pre_ingest_work.deduplication_key, format: :json }
|
|
28
|
-
expect(response.status).to eq(200)
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
it 'returns an array of thumbail paths' do
|
|
32
|
-
file_set.save
|
|
33
|
-
allow(controller).to receive(:current_user).and_return(admin_user)
|
|
34
|
-
get :thumbnails, params: { deduplication_key: pre_ingest_work.deduplication_key, format: :json }
|
|
35
|
-
parsed_json = JSON.parse(response.body)
|
|
36
|
-
expect(parsed_json['thumbnails']).to be_an(Array)
|
|
37
|
-
expect(parsed_json['thumbnails'].empty?).to eq(false)
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
it 'returns an empty array if there aren\'t any thumbnails' do
|
|
41
|
-
allow(controller).to receive(:current_user).and_return(admin_user)
|
|
42
|
-
get :thumbnails, params: { deduplication_key: 'abc/1234', format: :json }
|
|
43
|
-
parsed_json = JSON.parse(response.body)
|
|
44
|
-
expect(parsed_json['thumbnails']).to be_an(Array)
|
|
45
|
-
expect(parsed_json['thumbnails'].empty?).to eq(true)
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
context 'as someone not logged in' do
|
|
50
|
-
it 'returns 401' do
|
|
51
|
-
get :thumbnails, params: { deduplication_key: pre_ingest_work.deduplication_key, format: :json }
|
|
52
|
-
expect(response.status).to eq(401)
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
data/spec/factories/file_sets.rb
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
FactoryBot.define do
|
|
3
|
-
factory :file_set do
|
|
4
|
-
transient do
|
|
5
|
-
user { build(:user) }
|
|
6
|
-
title { nil }
|
|
7
|
-
content { nil }
|
|
8
|
-
end
|
|
9
|
-
after(:build) do |fs, evaluator|
|
|
10
|
-
fs.apply_depositor_metadata evaluator.user.user_key
|
|
11
|
-
fs.title = evaluator.title
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
after(:create) do |file, evaluator|
|
|
15
|
-
Hydra::Works::UploadFileToFileSet.call(file, evaluator.content) if evaluator.content
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
trait :public do
|
|
19
|
-
read_groups { ["public"] }
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
trait :registered do
|
|
23
|
-
read_groups { ["registered"] }
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
factory :file_with_work do
|
|
27
|
-
after(:build) do |file, _evaluator|
|
|
28
|
-
file.title = ['testfile']
|
|
29
|
-
end
|
|
30
|
-
after(:create) do |file, evaluator|
|
|
31
|
-
Hydra::Works::UploadFileToFileSet.call(file, evaluator.content) if evaluator.content
|
|
32
|
-
create(:work, user: evaluator.user).members << file
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|