sufia 6.2.0 → 6.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +146 -0
- data/.travis.yml +4 -7
- data/Gemfile +2 -0
- data/History.md +29 -1
- data/README.md +25 -9
- data/SUFIA_VERSION +1 -1
- data/app/assets/stylesheets/sufia/_collections.scss +15 -0
- data/app/assets/stylesheets/sufia/_file-listing.scss +7 -0
- data/app/assets/stylesheets/sufia/_home-page.scss +10 -0
- data/app/builders/sufia/bootstrap_breadcrumbs_builder.rb +3 -5
- data/app/controllers/admin/stats_controller.rb +1 -76
- data/app/controllers/api/items_controller.rb +4 -6
- data/app/controllers/api/zotero_controller.rb +5 -5
- data/app/controllers/authorities_controller.rb +5 -1
- data/app/controllers/batch_edits_controller.rb +3 -3
- data/app/controllers/concerns/sufia/admin/depositor_stats.rb +41 -0
- data/app/controllers/concerns/sufia/admin/stats_behavior.rb +94 -0
- data/app/controllers/concerns/sufia/batch_controller_behavior.rb +16 -18
- data/app/controllers/concerns/sufia/batch_edits_controller_behavior.rb +54 -56
- data/app/controllers/concerns/sufia/breadcrumbs.rb +3 -6
- data/app/controllers/concerns/sufia/collections_controller_behavior.rb +39 -39
- data/app/controllers/concerns/sufia/controller.rb +10 -10
- data/app/controllers/concerns/sufia/dashboard_controller_behavior.rb +17 -18
- data/app/controllers/concerns/sufia/depositors_controller_behavior.rb +9 -12
- data/app/controllers/concerns/sufia/files_controller/browse_everything.rb +6 -7
- data/app/controllers/concerns/sufia/files_controller/local_ingest_behavior.rb +39 -40
- data/app/controllers/concerns/sufia/files_controller/upload_complete_behavior.rb +1 -1
- data/app/controllers/concerns/sufia/files_controller_behavior.rb +109 -110
- data/app/controllers/concerns/sufia/homepage_controller.rb +8 -8
- data/app/controllers/concerns/sufia/my_controller_behavior.rb +13 -10
- data/app/controllers/concerns/sufia/single_use_links_controller_behavior.rb +11 -14
- data/app/controllers/concerns/sufia/single_use_links_viewer_controller_behavior.rb +27 -21
- data/app/controllers/concerns/sufia/transfers_controller_behavior.rb +17 -17
- data/app/controllers/concerns/sufia/users_controller_behavior.rb +54 -54
- data/app/controllers/contact_form_controller.rb +1 -1
- data/app/controllers/content_blocks_controller.rb +11 -12
- data/app/controllers/directory_controller.rb +2 -3
- data/app/controllers/featured_work_lists_controller.rb +1 -1
- data/app/controllers/featured_works_controller.rb +2 -4
- data/app/controllers/homepage_controller.rb +1 -2
- data/app/controllers/mailbox_controller.rb +12 -32
- data/app/controllers/my/collections_controller.rb +3 -4
- data/app/controllers/my/files_controller.rb +4 -6
- data/app/controllers/my/highlights_controller.rb +4 -6
- data/app/controllers/my/shares_controller.rb +3 -5
- data/app/controllers/pages_controller.rb +1 -3
- data/app/controllers/single_use_links_controller.rb +0 -1
- data/app/controllers/single_use_links_viewer_controller.rb +0 -1
- data/app/controllers/static_controller.rb +1 -0
- data/app/forms/sufia/forms/collection_edit_form.rb +2 -2
- data/app/helpers/batch_edits_helper.rb +1 -3
- data/app/helpers/content_block_helper.rb +7 -8
- data/app/helpers/generic_file_helper.rb +23 -24
- data/app/helpers/sufia/blacklight_override.rb +6 -7
- data/app/helpers/sufia/dashboard_helper_behavior.rb +4 -7
- data/app/helpers/sufia/permissions_helper.rb +3 -4
- data/app/helpers/sufia/sufia_helper_behavior.rb +30 -29
- data/app/helpers/trophy_helper.rb +15 -15
- data/app/inputs/select_with_modal_help_input.rb +3 -3
- data/app/inputs/with_help_icon.rb +4 -4
- data/app/jobs/content_delete_event_job.rb +0 -1
- data/app/jobs/content_depositor_change_event_job.rb +1 -2
- data/app/jobs/event_job.rb +0 -1
- data/app/jobs/user_unfollow_event_job.rb +1 -0
- data/app/models/concerns/sufia/solr_document_behavior.rb +1 -2
- data/app/models/contact_form.rb +6 -6
- data/app/models/content_block.rb +1 -2
- data/app/models/featured_work_list.rb +3 -5
- data/app/models/user_mailbox.rb +44 -0
- data/app/presenters/sufia/collection_presenter.rb +6 -8
- data/app/presenters/sufia/generic_file_presenter.rb +2 -2
- data/app/presenters/sufia/presenter_renderer.rb +2 -2
- data/app/presenters/sufia/version_list_presenter.rb +1 -1
- data/app/presenters/sufia/version_presenter.rb +3 -6
- data/app/search_builders/deposit_search_builder.rb +19 -0
- data/app/search_builders/sufia/my_search_builder_behavior.rb +1 -2
- data/app/search_builders/sufia/search_builder.rb +1 -3
- data/app/uploaders/tinymce_asset_uploader.rb +0 -2
- data/app/views/_controls.html.erb +5 -5
- data/app/views/admin/stats/_deposits.html.erb +19 -0
- data/app/views/admin/stats/index.html.erb +2 -0
- data/app/views/batch_edits/edit.html.erb +2 -2
- data/app/views/collections/_edit_actions.html.erb +3 -3
- data/app/views/collections/_form_for_select_collection.html.erb +2 -2
- data/app/views/collections/_sort_and_per_page.html.erb +12 -9
- data/app/views/collections/_view_type_group.html.erb +1 -1
- data/app/views/collections/edit.html.erb +5 -5
- data/app/views/collections/show.html.erb +7 -6
- data/app/views/homepage/_announcement.html.erb +5 -0
- data/app/views/homepage/_home.html.erb +1 -0
- data/app/views/my/_sort_and_per_page.html.erb +14 -10
- data/app/views/my/index.html.erb +1 -1
- data/app/views/pages/show.html.erb +0 -2
- data/app/views/single_use_links/new_download.html.erb +1 -1
- data/app/views/single_use_links_viewer/show.html.erb +1 -1
- data/app/views/users/_notify_link.html.erb +1 -1
- data/app/views/users/_notify_number.html.erb +2 -2
- data/config/initializers/simple_form.rb +1 -1
- data/config/initializers/simple_form_bootstrap.rb +1 -1
- data/config/locales/sufia.en.yml +4 -0
- data/config/routes.rb +2 -3
- data/lib/generators/sufia/admin_stat_generator.rb +0 -3
- data/lib/generators/sufia/install_generator.rb +8 -9
- data/lib/generators/sufia/templates/catalog_controller.rb +2 -3
- data/lib/generators/sufia/templates/config/action_dispatch_http_upload_monkey_patch.rb +1 -0
- data/lib/generators/sufia/upgrade400_generator.rb +9 -9
- data/lib/generators/sufia/upgrade600_generator.rb +1 -4
- data/lib/sufia.rb +2 -2
- data/lib/sufia/arkivo/actor.rb +1 -1
- data/lib/sufia/arkivo/create_subscription_job.rb +30 -30
- data/lib/sufia/arkivo/metadata_munger.rb +7 -7
- data/lib/sufia/arkivo/schema_validator.rb +1 -1
- data/lib/sufia/single_use_error.rb +0 -1
- data/lib/sufia/version.rb +1 -1
- data/lib/sufia/zotero/config.rb +13 -13
- data/spec/actors/generic_file/actor_spec.rb +17 -18
- data/spec/controllers/admin_stats_controller_spec.rb +56 -5
- data/spec/controllers/api/zotero_controller_spec.rb +10 -9
- data/spec/controllers/authorities_controller_spec.rb +8 -8
- data/spec/controllers/batch_controller_spec.rb +19 -20
- data/spec/controllers/batch_edits_controller_spec.rb +8 -9
- data/spec/controllers/catalog_controller_spec.rb +7 -9
- data/spec/controllers/collections_controller_spec.rb +30 -32
- data/spec/controllers/content_blocks_controller_spec.rb +4 -4
- data/spec/controllers/dashboard_controller_spec.rb +12 -12
- data/spec/controllers/depositors_controller_spec.rb +8 -8
- data/spec/controllers/downloads_controller_spec.rb +10 -11
- data/spec/controllers/featured_work_lists_controller_spec.rb +4 -4
- data/spec/controllers/featured_works_controller_spec.rb +11 -12
- data/spec/controllers/generic_files_controller_spec.rb +154 -125
- data/spec/controllers/homepage_controller_spec.rb +22 -15
- data/spec/controllers/mailbox_controller_spec.rb +20 -36
- data/spec/controllers/my/collections_controller_spec.rb +4 -5
- data/spec/controllers/my/files_controller_spec.rb +10 -11
- data/spec/controllers/my/highlights_controller_spec.rb +4 -5
- data/spec/controllers/my/shares_controller_spec.rb +12 -14
- data/spec/controllers/my_controller_spec.rb +1 -3
- data/spec/controllers/pages_controller_spec.rb +4 -4
- data/spec/controllers/single_use_links_controller_spec.rb +1 -3
- data/spec/controllers/single_use_links_viewer_controller_spec.rb +1 -2
- data/spec/controllers/static_controller_spec.rb +1 -1
- data/spec/controllers/tinymce_assets_controller_spec.rb +8 -9
- data/spec/controllers/transfers_controller_spec.rb +19 -19
- data/spec/controllers/users_controller_spec.rb +33 -35
- data/spec/factories/api_items.rb +2 -2
- data/spec/factories/content_blocks.rb +1 -1
- data/spec/factories/featured_works.rb +1 -1
- data/spec/factories/generic_files.rb +3 -3
- data/spec/factories/users.rb +7 -8
- data/spec/features/browse_dashboard_files_spec.rb +14 -18
- data/spec/features/browse_files_spec.rb +3 -4
- data/spec/features/catalog_search_spec.rb +3 -5
- data/spec/features/cloud_upload_spec.rb +2 -2
- data/spec/features/collection_spec.rb +21 -21
- data/spec/features/contact_form_spec.rb +10 -11
- data/spec/features/display_dashboard_spec.rb +5 -9
- data/spec/features/edit_file_spec.rb +8 -9
- data/spec/features/featured_item_spec.rb +1 -1
- data/spec/features/ingest_upload_files_spec.rb +5 -5
- data/spec/features/notifications_spec.rb +2 -6
- data/spec/features/ownership_transfer_spec.rb +2 -2
- data/spec/features/proxy_spec.rb +2 -2
- data/spec/features/search_spec.rb +3 -4
- data/spec/features/single_use_links_spec.rb +1 -1
- data/spec/features/users_spec.rb +4 -5
- data/spec/forms/collection_edit_form_spec.rb +2 -2
- data/spec/forms/generic_file_edit_form_spec.rb +6 -7
- data/spec/helpers/batch_edits_helper_spec.rb +9 -13
- data/spec/helpers/content_block_helper_spec.rb +3 -3
- data/spec/helpers/dashboard_helper_spec.rb +19 -24
- data/spec/helpers/generic_file_helper_spec.rb +5 -7
- data/spec/helpers/sufia_helper_spec.rb +43 -54
- data/spec/helpers/trophy_helper_spec.rb +5 -5
- data/spec/inputs/multi_value_with_help_input_spec.rb +1 -2
- data/spec/inputs/select_with_help_input_spec.rb +19 -15
- data/spec/javascripts/jasmine_spec.rb +4 -5
- data/spec/javascripts/support/jasmine_helper.rb +9 -9
- data/spec/jobs/active_fedora_id_based_job_spec.rb +7 -5
- data/spec/jobs/audit_job_spec.rb +7 -7
- data/spec/jobs/batch_update_job_spec.rb +5 -6
- data/spec/jobs/characterize_job_spec.rb +1 -1
- data/spec/jobs/content_depositor_change_event_job_spec.rb +1 -1
- data/spec/jobs/create_derivatives_job_spec.rb +5 -5
- data/spec/jobs/event_jobs_spec.rb +16 -16
- data/spec/jobs/import_url_job_spec.rb +36 -5
- data/spec/jobs/ingest_local_file_job_spec.rb +31 -20
- data/spec/jobs/sufia_resque_queue_spec.rb +1 -1
- data/spec/lib/sufia/analytics_spec.rb +0 -1
- data/spec/lib/sufia/arkivo/actor_spec.rb +6 -6
- data/spec/lib/sufia/arkivo/schema_validator_spec.rb +18 -18
- data/spec/lib/sufia/breadcrumbs_spec.rb +5 -6
- data/spec/lib/sufia/messages_spec.rb +11 -12
- data/spec/lib/sufia/readable_permissions_spec.rb +8 -10
- data/spec/lib/sufia/upload_complete_behavior_spec.rb +6 -7
- data/spec/lib/sufia/user_stat_importer_spec.rb +30 -33
- data/spec/lib/sufia/writable_permissions_spec.rb +1 -3
- data/spec/lib/sufia/zotero/config_spec.rb +4 -6
- data/spec/models/ability_spec.rb +11 -9
- data/spec/models/batch_spec.rb +13 -13
- data/spec/models/characterization_spec.rb +2 -3
- data/spec/models/checksum_audit_log_spec.rb +18 -19
- data/spec/models/collection_spec.rb +11 -12
- data/spec/models/content_block_spec.rb +33 -22
- data/spec/models/download_spec.rb +3 -5
- data/spec/models/featured_work_list_spec.rb +3 -3
- data/spec/models/featured_work_spec.rb +12 -14
- data/spec/models/file_content_datastream_spec.rb +9 -7
- data/spec/models/file_download_stat_spec.rb +34 -40
- data/spec/models/file_usage_spec.rb +46 -52
- data/spec/models/file_view_stat_spec.rb +35 -41
- data/spec/models/fits_datastream_spec.rb +23 -25
- data/spec/models/generic_file/visibility_spec.rb +10 -5
- data/spec/models/generic_file_spec.rb +86 -88
- data/spec/models/geo_names_resource_spec.rb +3 -5
- data/spec/models/local_authority_spec.rb +30 -33
- data/spec/models/pageview_spec.rb +3 -3
- data/spec/models/proxy_deposit_request_spec.rb +3 -3
- data/spec/models/single_use_link_spec.rb +36 -36
- data/spec/models/solr_document_spec.rb +3 -6
- data/spec/models/trophy_spec.rb +8 -9
- data/spec/models/user_mailbox_spec.rb +62 -0
- data/spec/models/user_spec.rb +28 -29
- data/spec/presenters/presenter_renderer_spec.rb +1 -1
- data/spec/presenters/sufia/generic_file_presenter_spec.rb +5 -5
- data/spec/presenters/sufia/version_list_presenter_spec.rb +2 -2
- data/spec/presenters/sufia/version_presenter_spec.rb +1 -1
- data/spec/routing/featured_works_route_spec.rb +4 -4
- data/spec/routing/ownership_transfers_route_spec.rb +1 -1
- data/spec/routing/route_spec.rb +89 -89
- data/spec/services/generic_file_audit_service_spec.rb +8 -8
- data/spec/services/repository_audit_service_spec.rb +7 -3
- data/spec/spec_helper.rb +5 -4
- data/spec/support/features/session_helpers.rb +1 -1
- data/spec/support/input_support.rb +1 -2
- data/spec/support/rake.rb +1 -1
- data/spec/support/selectors.rb +1 -6
- data/spec/support/statistic_helper.rb +1 -1
- data/spec/support/uploaded_file_monkeypatch.rb +1 -1
- data/spec/tasks/rake_spec.rb +3 -5
- data/spec/views/admin/stats/index.html.erb_spec.rb +16 -16
- data/spec/views/batch/edit.html.erb_spec.rb +1 -3
- data/spec/views/batch_edits/check_all_spec.rb +5 -5
- data/spec/views/batch_edits/edit.html.erb_spec.rb +1 -3
- data/spec/views/catalog/index.html.erb_spec.rb +1 -3
- data/spec/views/catalog/sort_and_per_page.html.erb_spec.rb +4 -5
- data/spec/views/collections/_form.html.erb_spec.rb +5 -3
- data/spec/views/collections/_show_descriptions.html.erb_spec.rb +7 -8
- data/spec/views/collections/_show_document_list.erb_spec.rb +4 -6
- data/spec/views/dashboard/index_spec.rb +14 -21
- data/spec/views/generic_file/_browse_everything.html.erb_spec.rb +2 -2
- data/spec/views/generic_file/_permission_form.html.erb_spec.rb +8 -9
- data/spec/views/generic_file/edit.html.erb_spec.rb +7 -7
- data/spec/views/generic_file/show.html.erb_spec.rb +24 -25
- data/spec/views/generic_file/stats.html.erb_spec.rb +19 -19
- data/spec/views/homepage/_announcement.html.erb_spec.rb +51 -0
- data/spec/views/homepage/_featured_works.html.erb_spec.rb +5 -9
- data/spec/views/homepage/_home_header.html.erb_spec.rb +2 -2
- data/spec/views/my/facet.html.erb_spec.rb +4 -4
- data/spec/views/single_use_links/new_download.html.erb_spec.rb +28 -0
- data/spec/views/single_use_links_viewer/show.html.erb_spec.rb +29 -0
- data/spec/views/users/_follower_modal.html.erb_spec.rb +7 -8
- data/spec/views/users/_following_modal.html.erb_spec.rb +4 -5
- data/spec/views/users/_notify_number.html.erb_spec.rb +2 -5
- data/spec/views/users/_user_util_links.html.erb_spec.rb +5 -8
- data/spec/views/users/index.html.erb_spec.rb +4 -6
- data/spec/views/users/show.html.erb_spec.rb +4 -7
- data/tasks/sufia-dev.rake +19 -3
- metadata +20 -5
@@ -28,7 +28,7 @@ class CatalogController < ApplicationController
|
|
28
28
|
end
|
29
29
|
|
30
30
|
configure_blacklight do |config|
|
31
|
-
#Show gallery view
|
31
|
+
# Show gallery view
|
32
32
|
config.view.gallery.partials = [:index_header, :index]
|
33
33
|
config.view.slideshow.partials = [:index]
|
34
34
|
|
@@ -119,7 +119,7 @@ class CatalogController < ApplicationController
|
|
119
119
|
# solr request handler? The one set in config[:default_solr_parameters][:qt],
|
120
120
|
# since we aren't specifying it otherwise.
|
121
121
|
config.add_search_field('all_fields', label: 'All Fields', include_in_advanced_search: false) do |field|
|
122
|
-
all_names = config.show_fields.values.map
|
122
|
+
all_names = config.show_fields.values.map(&:field).join(" ")
|
123
123
|
title_name = solr_name("title", :stored_searchable)
|
124
124
|
field.solr_parameters = {
|
125
125
|
qf: "#{all_names} file_format_tesim all_text_timv",
|
@@ -312,5 +312,4 @@ class CatalogController < ApplicationController
|
|
312
312
|
# mean") suggestion is offered.
|
313
313
|
config.spell_max = 5
|
314
314
|
end
|
315
|
-
|
316
315
|
end
|
@@ -7,7 +7,7 @@ class Sufia::Upgrade400Generator < Rails::Generators::Base
|
|
7
7
|
|
8
8
|
source_root File.expand_path('../templates', __FILE__)
|
9
9
|
|
10
|
-
argument :model_name, type: :string
|
10
|
+
argument :model_name, type: :string, default: "user"
|
11
11
|
desc """
|
12
12
|
This generator for upgrading sufia from 3.7.2 to 4.0 makes the following changes to your application:
|
13
13
|
1. Updates the root route
|
@@ -40,9 +40,9 @@ This generator for upgrading sufia from 3.7.2 to 4.0 makes the following changes
|
|
40
40
|
def inject_sufia_controller_behavior
|
41
41
|
controller_name = "CatalogController"
|
42
42
|
file_path = "app/controllers/catalog_controller.rb"
|
43
|
-
if File.
|
43
|
+
if File.exist?(file_path)
|
44
44
|
insert_into_file file_path, after: 'include Hydra::Controller::ControllerBehavior' do
|
45
|
-
"\n # Adds Sufia behaviors to the catalog controller (#{controller_name})\n"
|
45
|
+
"\n # Adds Sufia behaviors to the catalog controller (#{controller_name})\n" \
|
46
46
|
" include Sufia::Catalog\n"
|
47
47
|
end
|
48
48
|
else
|
@@ -68,9 +68,9 @@ This generator for upgrading sufia from 3.7.2 to 4.0 makes the following changes
|
|
68
68
|
|
69
69
|
def blacklight_marc
|
70
70
|
file_path = 'app/models/solr_document.rb'
|
71
|
-
return unless File.
|
72
|
-
|
73
|
-
|
71
|
+
return unless File.exist?(file_path) &&
|
72
|
+
file_contains?('app/models/solr_document.rb', 'Blacklight::Solr::Document::Marc') &&
|
73
|
+
!file_contains?('Gemfile', 'blacklight-marc')
|
74
74
|
insert_into_file 'Gemfile', after: /gem 'sufia'.*$/ do
|
75
75
|
"\ngem 'blacklight-marc'"
|
76
76
|
end
|
@@ -85,7 +85,7 @@ This generator for upgrading sufia from 3.7.2 to 4.0 makes the following changes
|
|
85
85
|
|
86
86
|
private
|
87
87
|
|
88
|
-
|
89
|
-
|
90
|
-
|
88
|
+
def file_contains?(path, string)
|
89
|
+
File.readlines(path).grep(/#{string}/).any?
|
90
|
+
end
|
91
91
|
end
|
@@ -2,7 +2,6 @@
|
|
2
2
|
require 'rails/generators'
|
3
3
|
|
4
4
|
class Sufia::Upgrade600Generator < Rails::Generators::Base
|
5
|
-
|
6
5
|
source_root File.expand_path('../templates', __FILE__)
|
7
6
|
|
8
7
|
desc """
|
@@ -13,7 +12,7 @@ This generator for upgrading sufia to 6.0 makes the following changes to your ap
|
|
13
12
|
def insert_builder
|
14
13
|
insert_into_file 'app/models/search_builder.rb', after: /include Blacklight::Solr::SearchBuilderBehavior/ do
|
15
14
|
# First line should be generated by Hydra. projecthydra/hydra-head#255
|
16
|
-
"\n include Hydra::AccessControlsEnforcement"
|
15
|
+
"\n include Hydra::AccessControlsEnforcement" \
|
17
16
|
"\n include Sufia::SearchBuilder\n"
|
18
17
|
end
|
19
18
|
end
|
@@ -21,6 +20,4 @@ This generator for upgrading sufia to 6.0 makes the following changes to your ap
|
|
21
20
|
def migrations
|
22
21
|
generate "sufia:models:upgrade600"
|
23
22
|
end
|
24
|
-
|
25
23
|
end
|
26
|
-
|
data/lib/sufia.rb
CHANGED
@@ -37,8 +37,8 @@ module Sufia
|
|
37
37
|
)
|
38
38
|
|
39
39
|
config.assets.paths << config.root.join('vendor', 'assets', 'fonts')
|
40
|
-
config.assets.precompile <<
|
41
|
-
config.assets.precompile <<
|
40
|
+
config.assets.precompile << /vjs\.(?:eot|ttf|woff)$/
|
41
|
+
config.assets.precompile << /fontawesome-webfont\.(?:svg|ttf|woff)$/
|
42
42
|
config.assets.precompile += %w( ZeroClipboard.swf )
|
43
43
|
end
|
44
44
|
end
|
data/lib/sufia/arkivo/actor.rb
CHANGED
@@ -82,7 +82,7 @@ module Sufia
|
|
82
82
|
def extract_file_from_item
|
83
83
|
encoded = item['file']['base64']
|
84
84
|
content = Base64.decode64(encoded)
|
85
|
-
tmp = Tempfile.new(item['file']['md5'],
|
85
|
+
tmp = Tempfile.new(item['file']['md5'], encoding: Encoding::UTF_8)
|
86
86
|
tmp.binmode
|
87
87
|
tmp.original_filename = item['file']['filename']
|
88
88
|
tmp.content_type = item['file']['contentType']
|
@@ -27,41 +27,41 @@ module Sufia
|
|
27
27
|
|
28
28
|
private
|
29
29
|
|
30
|
-
|
31
|
-
|
32
|
-
|
30
|
+
def logger
|
31
|
+
ActiveFedora::Base.logger
|
32
|
+
end
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
34
|
+
def validate_user!
|
35
|
+
log_and_raise('User not found') if user.blank?
|
36
|
+
log_and_raise('User does not have an Arkivo token') if user.arkivo_token.blank?
|
37
|
+
log_and_raise('User has not yet connected with Zotero') if user.zotero_userid.blank?
|
38
|
+
log_and_raise('User already has a subscription') if user.arkivo_subscription.present?
|
39
|
+
end
|
40
40
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
41
|
+
def log_and_raise(message)
|
42
|
+
logger.error "*** Arkivo error: #{message}: #{user}"
|
43
|
+
raise SubscriptionError, message
|
44
|
+
end
|
45
45
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
46
|
+
def post_to_api
|
47
|
+
Faraday.new(url: Sufia::Arkivo.config[:url]).post do |request|
|
48
|
+
request.url Sufia::Arkivo.new_subscription_url
|
49
|
+
request.headers['Content-Type'] = 'application/json'
|
50
|
+
request.body = new_subscription_json
|
51
|
+
end
|
51
52
|
end
|
52
|
-
end
|
53
53
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
54
|
+
def new_subscription_json
|
55
|
+
{
|
56
|
+
url: Sufia::Zotero.publications_url(@user.zotero_userid),
|
57
|
+
plugins: [
|
58
|
+
{
|
59
|
+
name: "sufia",
|
60
|
+
options: { token: @user.arkivo_token }
|
61
|
+
}
|
62
|
+
]
|
63
|
+
}.to_json
|
64
|
+
end
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
@@ -1,15 +1,15 @@
|
|
1
1
|
module Sufia
|
2
2
|
module Arkivo
|
3
3
|
CREATOR_TYPES = ['author', 'interviewer', 'director', 'scriptwriter',
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
'inventor', 'composer', 'cartographer', 'programmer', 'artist',
|
5
|
+
'bookAuthor'
|
6
|
+
]
|
7
7
|
|
8
8
|
CONTRIBUTOR_TYPES = ['contributor', 'editor', 'translator', 'seriesEditor',
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
'interviewee', 'producer', 'castMember', 'sponsor', 'counsel',
|
10
|
+
'attorneyAgent', 'recipient', 'performer', 'wordsBy', 'commenter',
|
11
|
+
'presenter', 'guest', 'podcaster', 'reviewedAuthor', 'cosponsor'
|
12
|
+
]
|
13
13
|
|
14
14
|
class MetadataMunger
|
15
15
|
def initialize(metadata)
|
@@ -48,7 +48,7 @@ module Sufia
|
|
48
48
|
def call
|
49
49
|
JSON::Validator.validate!(Sufia::Arkivo::ITEM_SCHEMA, item, version: :draft3)
|
50
50
|
rescue JSON::Schema::ValidationError => exception
|
51
|
-
raise Sufia::Arkivo::InvalidItem
|
51
|
+
raise Sufia::Arkivo::InvalidItem, exception.message
|
52
52
|
end
|
53
53
|
end
|
54
54
|
end
|
data/lib/sufia/version.rb
CHANGED
data/lib/sufia/zotero/config.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
module Sufia
|
2
|
+
module Zotero
|
3
|
+
def self.config
|
4
|
+
@config ||= reload_config!
|
5
|
+
end
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
def self.reload_config!
|
8
|
+
@config = YAML.load(ERB.new(IO.read(File.join(Rails.root, 'config', 'zotero.yml'))).result)['zotero']
|
9
|
+
end
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
def self.publications_url(zotero_userid)
|
12
|
+
"/users/#{zotero_userid}/publications/items"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -5,14 +5,14 @@ describe Sufia::GenericFile::Actor do
|
|
5
5
|
|
6
6
|
let(:user) { FactoryGirl.create(:user) }
|
7
7
|
let(:generic_file) { FactoryGirl.create(:generic_file) }
|
8
|
-
let(:actor) {
|
9
|
-
let(:uploaded_file) { fixture_file_upload('/world.png','image/png') }
|
8
|
+
let(:actor) { described_class.new(generic_file, user) }
|
9
|
+
let(:uploaded_file) { fixture_file_upload('/world.png', 'image/png') }
|
10
10
|
|
11
11
|
describe "#create_content" do
|
12
12
|
let(:deposit_message) { double('deposit message') }
|
13
13
|
let(:characterize_message) { double('characterize message') }
|
14
14
|
|
15
|
-
it "
|
15
|
+
it "enqueues deposit and characterize messages" do
|
16
16
|
allow(ContentDepositEventJob).to receive(:new).with(generic_file.id, user.user_key).and_return(deposit_message)
|
17
17
|
allow(CharacterizeJob).to receive(:new).with(generic_file.id).and_return(characterize_message)
|
18
18
|
expect(Sufia.queue).to receive(:push).with(deposit_message)
|
@@ -24,25 +24,24 @@ describe Sufia::GenericFile::Actor do
|
|
24
24
|
let(:file) { "world.png" }
|
25
25
|
let(:long_name) { "an absurdly long title that goes on way to long and messes up the display of the page which should not need to be this big in order to show this impossibly long, long, long, oh so long string" }
|
26
26
|
let(:short_name) { "Nice Short Name" }
|
27
|
-
let(:actor) {
|
27
|
+
let(:actor) { described_class.new(generic_file, user) }
|
28
28
|
before do
|
29
29
|
allow(generic_file).to receive(:label).and_return(short_name)
|
30
30
|
allow(Sufia.queue).to receive(:push)
|
31
31
|
actor.create_content(fixture_file_upload(file), long_name, 'content', 'image/png')
|
32
|
-
end
|
32
|
+
end
|
33
33
|
subject { generic_file.title }
|
34
34
|
it { is_expected.to eql [short_name] }
|
35
35
|
end
|
36
36
|
|
37
37
|
context "with two existing versions from different users" do
|
38
|
-
|
39
38
|
let(:file1) { "world.png" }
|
40
39
|
let(:file2) { "image.jpg" }
|
41
|
-
let(:actor1) {
|
42
|
-
let(:actor2) {
|
40
|
+
let(:actor1) { described_class.new(generic_file, user) }
|
41
|
+
let(:actor2) { described_class.new(generic_file, second_user) }
|
43
42
|
|
44
43
|
let(:second_user) { FactoryGirl.find_or_create(:archivist) }
|
45
|
-
let(:versions)
|
44
|
+
let(:versions) { generic_file.content.versions }
|
46
45
|
|
47
46
|
before do
|
48
47
|
allow(Sufia.queue).to receive(:push)
|
@@ -50,22 +49,22 @@ describe Sufia::GenericFile::Actor do
|
|
50
49
|
actor2.create_content(fixture_file_upload(file2), file2, 'content', 'image/jpeg')
|
51
50
|
end
|
52
51
|
|
53
|
-
it "
|
52
|
+
it "has two versions" do
|
54
53
|
expect(versions.all.count).to eq 2
|
55
54
|
end
|
56
55
|
|
57
|
-
it "
|
56
|
+
it "has the current version" do
|
58
57
|
expect(generic_file.content.latest_version.label).to eq 'version2'
|
59
58
|
expect(generic_file.content.mime_type).to eq "image/jpeg"
|
60
59
|
expect(generic_file.content.original_name).to eq file2
|
61
60
|
end
|
62
61
|
|
63
|
-
it "
|
62
|
+
it "uses the first version for the object's title and label" do
|
64
63
|
expect(generic_file.label).to eql(file1)
|
65
64
|
expect(generic_file.title.first).to eql(file1)
|
66
65
|
end
|
67
66
|
|
68
|
-
it "
|
67
|
+
it "notes the user for each version" do
|
69
68
|
expect(VersionCommitter.where(version_id: versions.first.uri).pluck(:committer_login)).to eq [user.user_key]
|
70
69
|
expect(VersionCommitter.where(version_id: versions.last.uri).pluck(:committer_login)).to eq [second_user.user_key]
|
71
70
|
end
|
@@ -73,19 +72,19 @@ describe Sufia::GenericFile::Actor do
|
|
73
72
|
end
|
74
73
|
|
75
74
|
describe "#virus_check" do
|
76
|
-
it "
|
75
|
+
it "returns the results of running ClamAV scanfile method" do
|
77
76
|
expect(ClamAV.instance).to receive(:scanfile).and_return(1)
|
78
|
-
expect {
|
77
|
+
expect { described_class.virus_check(File.new(fixture_path + '/world.png')) }.to raise_error(Sufia::VirusFoundError)
|
79
78
|
end
|
80
79
|
end
|
81
80
|
|
82
81
|
describe "#featured_work" do
|
83
82
|
let(:gf) { FactoryGirl.create(:generic_file, visibility: 'open') }
|
84
|
-
let(:actor) {
|
83
|
+
let(:actor) { described_class.new(gf, user) }
|
85
84
|
|
86
85
|
before { FeaturedWork.create(generic_file_id: gf.id) }
|
87
86
|
|
88
|
-
it "
|
87
|
+
it "is removed if document is not public" do
|
89
88
|
# Switch document from public to restricted
|
90
89
|
expect { actor.update_metadata({}, 'restricted') }.to change { FeaturedWork.count }.by(-1)
|
91
90
|
end
|
@@ -100,7 +99,7 @@ describe Sufia::GenericFile::Actor do
|
|
100
99
|
f.label = label
|
101
100
|
end
|
102
101
|
end
|
103
|
-
let(:actor) {
|
102
|
+
let(:actor) { described_class.new(generic_file_with_label, user) }
|
104
103
|
|
105
104
|
before do
|
106
105
|
allow(actor).to receive(:save_characterize_and_record_committer).and_return("true")
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Admin::StatsController, type: :controller do
|
4
4
|
let(:user1) { FactoryGirl.find_or_create(:user) }
|
5
5
|
let(:user2) { FactoryGirl.find_or_create(:archivist) }
|
6
|
-
|
6
|
+
|
7
7
|
before do
|
8
8
|
allow(user1).to receive(:groups).and_return(['admin'])
|
9
9
|
allow(user2).to receive(:groups).and_return(['not-admin'])
|
@@ -54,7 +54,7 @@ describe Admin::StatsController, type: :controller do
|
|
54
54
|
ActiveFedora::SolrService.instance.conn.delete_by_id(poltergeist.id)
|
55
55
|
original_files_count
|
56
56
|
end
|
57
|
-
it "
|
57
|
+
it "provides accurate files_count, ensuring that solr deletes have been expunged first" do
|
58
58
|
get :index
|
59
59
|
expect(assigns[:files_count][:total]).to eq(original_files_count - 1)
|
60
60
|
end
|
@@ -63,9 +63,9 @@ describe Admin::StatsController, type: :controller do
|
|
63
63
|
describe "counts" do
|
64
64
|
context "when date range not set" do
|
65
65
|
before do
|
66
|
-
FactoryGirl.
|
67
|
-
FactoryGirl.
|
68
|
-
FactoryGirl.
|
66
|
+
FactoryGirl.build(:generic_file, depositor: user1, id: "abc1223").update_index
|
67
|
+
FactoryGirl.build(:public_file, depositor: user1, id: "bbb1223").update_index
|
68
|
+
FactoryGirl.build(:registered_file, depositor: user1, id: "ccc1223").update_index
|
69
69
|
Collection.create(title: "test") do |c|
|
70
70
|
c.apply_depositor_metadata(user1.user_key)
|
71
71
|
end
|
@@ -98,5 +98,56 @@ describe Admin::StatsController, type: :controller do
|
|
98
98
|
end
|
99
99
|
end
|
100
100
|
|
101
|
+
describe "depositor counts" do
|
102
|
+
before do
|
103
|
+
GenericFile.new(id: "abc123") do |gf|
|
104
|
+
gf.apply_depositor_metadata(user1)
|
105
|
+
gf.update_index
|
106
|
+
end
|
107
|
+
GenericFile.new(id: "def123") do |gf|
|
108
|
+
gf.apply_depositor_metadata(user2)
|
109
|
+
gf.update_index
|
110
|
+
end
|
111
|
+
GenericFile.new(id: "zzz123") do |gf|
|
112
|
+
gf.create_date = [2.days.ago]
|
113
|
+
gf.apply_depositor_metadata(user1)
|
114
|
+
gf.update_index
|
115
|
+
end
|
116
|
+
Collection.new(id: "ccc123") do |c|
|
117
|
+
c.apply_depositor_metadata(user1)
|
118
|
+
c.update_index
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
it "gathers user deposits" do
|
123
|
+
get :index
|
124
|
+
expect(assigns[:depositors]).to include({ key: user1.user_key, deposits: 2, user: user1 }, key: user2.user_key, deposits: 1, user: user2)
|
125
|
+
end
|
126
|
+
|
127
|
+
it "gathers user deposits during a date range" do
|
128
|
+
get :index, deposit_stats: { start_date: 1.days.ago.strftime("%Y-%m-%d"), end_date: 0.days.ago.strftime("%Y-%m-%d") }
|
129
|
+
expect(assigns[:depositors]).to include({ key: user1.user_key, deposits: 1, user: user1 }, key: user2.user_key, deposits: 1, user: user2)
|
130
|
+
end
|
131
|
+
|
132
|
+
context "more than 10 users" do
|
133
|
+
let(:users) { [] }
|
134
|
+
before do
|
135
|
+
(1..12).each do |number|
|
136
|
+
luser = User.create(email: "user#{number}@blah.com", password: "blahbalh")
|
137
|
+
users << luser
|
138
|
+
GenericFile.new(id: "more#{number}") do |gf|
|
139
|
+
gf.apply_depositor_metadata(luser)
|
140
|
+
gf.update_index
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
it "gathers user deposits" do
|
146
|
+
get :index
|
147
|
+
expect(assigns[:depositors]).to include({ key: user1.user_key, deposits: 2, user: user1 }, key: user2.user_key, deposits: 1, user: user2)
|
148
|
+
users.each { |user| expect(assigns[:depositors]).to include(key: user.user_key, deposits: 1, user: user) }
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
101
152
|
end
|
102
153
|
end
|