curation_concerns 0.14.0.pre3 → 0.14.0.pre4

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.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/app/actors/curation_concerns/file_set_actor.rb +5 -5
  3. data/app/controllers/concerns/curation_concerns/curation_concern_controller.rb +0 -1
  4. data/app/controllers/concerns/curation_concerns/file_sets_controller_behavior.rb +3 -3
  5. data/app/forms/curation_concerns/forms/collection_edit_form.rb +1 -1
  6. data/app/helpers/curation_concerns/url_helper.rb +1 -1
  7. data/app/indexers/curation_concerns/file_set_indexer.rb +0 -1
  8. data/app/indexers/curation_concerns/work_indexer.rb +0 -4
  9. data/app/jobs/import_url_job.rb +2 -2
  10. data/app/models/concerns/curation_concerns/file_set/belongs_to_works.rb +18 -16
  11. data/app/presenters/curation_concerns/presenter_factory.rb +1 -1
  12. data/app/services/curation_concerns/lock_manager.rb +1 -1
  13. data/curation_concerns.gemspec +0 -2
  14. data/lib/curation_concerns/name.rb +3 -3
  15. data/lib/curation_concerns/rails/routes.rb +2 -2
  16. data/lib/curation_concerns/version.rb +1 -1
  17. data/lib/generators/curation_concerns/models_generator.rb +0 -2
  18. data/lib/generators/curation_concerns/templates/config/redis_config.rb +0 -3
  19. data/lib/generators/curation_concerns/work/USAGE +1 -2
  20. data/lib/generators/curation_concerns/work/templates/README +3 -3
  21. data/spec/actors/curation_concerns/file_set_actor_spec.rb +3 -3
  22. data/spec/controllers/curation_concerns/file_sets_controller_spec.rb +1 -1
  23. data/spec/factories/generic_works.rb +1 -1
  24. data/spec/features/collection_spec.rb +0 -6
  25. data/spec/features/update_file_spec.rb +1 -1
  26. data/spec/models/file_set_spec.rb +1 -1
  27. metadata +2 -33
  28. data/lib/generators/curation_concerns/templates/config/resque-pool.yml +0 -1
  29. data/lib/generators/curation_concerns/templates/config/resque_config.rb +0 -6
  30. data/lib/tasks/resque.rake +0 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 499d0f504305d4a3527b20952256ca5c479495f6
4
- data.tar.gz: 198f23262a6af4305f350622678666ae444d4c9f
3
+ metadata.gz: 0f26ce391fb38ff166cbb42ab25a0672e00c4afb
4
+ data.tar.gz: 147ccb6fca4723a76d739f63209605c6fc60dab1
5
5
  SHA512:
6
- metadata.gz: fc6d2a67ff1711383d698b083ccbd4e869f1031354fd302512787abddeb656a43ac12b6b87d1bb163230ee1db5da17684190deff4fa28f1f2dc99b240870c503
7
- data.tar.gz: 48549fbe68acc204baf000be4464be9363b00dff9ebb77198deb2c8eb2f15115143881f2f07f80176ea38b5be71cf9c576fcb614f0e4c37573c985abd521a79f
6
+ metadata.gz: a6e502b77d4b2dceb8516c696bc0a79325eab35f666b642d279a329109cce3924973ccd489c214a084449130aad4f391f781c0f153f73b785c8dd94901821fb1
7
+ data.tar.gz: 34ecae91255788a87ff51aff846b1ecdaba2c68eb9456bec585a08315a8a6256e9ef9aa1d1424766ec79b262f5301831bb6be222791e9d63de91511103340cfa
@@ -143,12 +143,12 @@ module CurationConcerns
143
143
  end
144
144
 
145
145
  def unlink_from_work
146
- work = file_set.in_works.first
146
+ work = file_set.parent
147
147
  return unless work && (work.thumbnail_id == file_set.id || work.representative_id == file_set.id)
148
- # This is required to clear the thumbnail_id and representative_id fields on the work
149
- # and force it to be re-solrized. Although ActiveFedora::Aggregation clears the
150
- # children nodes it leaves the GenericWork.thumbnail_id and GenericWork.representative_id
151
- # fields in Solr populated.
148
+ # This is required to clear the thumbnail_id and representative_id
149
+ # fields on the work and force it to be re-solrized. Although
150
+ # ActiveFedora clears the children nodes it leaves the work's
151
+ # thumbnail_id and representative_id fields in Solr populated.
152
152
  work.thumbnail = nil if work.thumbnail_id == file_set.id
153
153
  work.representative = nil if work.representative_id == file_set.id
154
154
  work.save!
@@ -40,7 +40,6 @@ module CurationConcerns::CurationConcernController
40
40
  end
41
41
 
42
42
  def create
43
- # return unless verify_acceptance_of_user_agreement!
44
43
  if actor.create(attributes_for_actor)
45
44
  after_create_response
46
45
  else
@@ -70,7 +70,7 @@ module CurationConcerns
70
70
  end
71
71
 
72
72
  def destroy
73
- parent = @file_set.in_works.first
73
+ parent = @file_set.parent
74
74
  actor.destroy
75
75
  redirect_to [main_app, parent], notice: 'The file has been deleted.'
76
76
  end
@@ -194,7 +194,7 @@ module CurationConcerns
194
194
  if request.xhr?
195
195
  render 'jq_upload', formats: 'json', content_type: 'text/html'
196
196
  else
197
- redirect_to [main_app, @file_set.in_works.first]
197
+ redirect_to [main_app, @file_set.parent]
198
198
  end
199
199
  end
200
200
  format.json do
@@ -204,7 +204,7 @@ module CurationConcerns
204
204
  else
205
205
  msg = @file_set.errors.full_messages.join(', ')
206
206
  flash[:error] = msg
207
- json_error "Error creating generic file #{file.original_filename}: #{msg}"
207
+ json_error "Error creating file #{file.original_filename}: #{msg}"
208
208
  end
209
209
  end
210
210
 
@@ -18,7 +18,7 @@ module CurationConcerns
18
18
  model_class.validators_on(key).any? { |v| v.is_a? ActiveModel::Validations::PresenceValidator }
19
19
  end
20
20
 
21
- # @return [Hash] All generic files in the collection, file.to_s is the key, file.id is the value
21
+ # @return [Hash] All FileSets in the collection, file.to_s is the key, file.id is the value
22
22
  def select_files
23
23
  Hash[all_files]
24
24
  end
@@ -10,7 +10,7 @@ module CurationConcerns
10
10
  end
11
11
  end
12
12
 
13
- # generated new GenericWork models get registered as curation concerns and need a
13
+ # generated models get registered as curation concerns and need a
14
14
  # track_model_path to render Blacklight-related views
15
15
  (['FileSet', 'Collection'] + CurationConcerns.config.registered_curation_concern_types).each do |concern|
16
16
  define_method("track_#{concern.constantize.model_name.singular_route_key}_path") { |*args| main_app.track_solr_document_path(*args) }
@@ -14,7 +14,6 @@ module CurationConcerns
14
14
  solr_doc[Solrizer.solr_name('file_format', :facetable)] = file_format
15
15
  solr_doc[Solrizer.solr_name(:file_size, STORED_INTEGER)] = object.file_size[0]
16
16
  solr_doc['all_text_timv'] = object.full_text.content
17
- solr_doc[Solrizer.solr_name('generic_work_ids', :symbol)] = object.generic_work_ids unless object.generic_work_ids.empty?
18
17
  solr_doc['height_is'] = Integer(object.height.first) if object.height.present?
19
18
  solr_doc['width_is'] = Integer(object.width.first) if object.width.present?
20
19
  solr_doc[Solrizer.solr_name('mime_type', :stored_sortable)] = object.mime_type
@@ -3,10 +3,6 @@ module CurationConcerns
3
3
  include IndexesThumbnails
4
4
  def generate_solr_document
5
5
  super.tap do |solr_doc|
6
- # We know that all the members of GenericWorks are FileSets so we can use
7
- # member_ids which requires fewer Fedora API calls than file_set_ids.
8
- # file_set_ids requires loading all the members from Fedora but member_ids
9
- # looks just at solr
10
6
  solr_doc[Solrizer.solr_name('member_ids', :symbol)] = object.member_ids
11
7
  Solrizer.set_field(solr_doc, 'generic_type', 'Work', :facetable)
12
8
  end
@@ -17,10 +17,10 @@ class ImportUrlJob < ActiveJob::Base
17
17
  Tempfile.open(file_set.id.tr('/', '_')) do |f|
18
18
  copy_remote_file(file_set, f)
19
19
 
20
- # reload the generic file once the data is copied since this is a long running task
20
+ # reload the FileSet once the data is copied since this is a long running task
21
21
  file_set.reload
22
22
 
23
- # attach downloaded file to generic file stubbed out
23
+ # attach downloaded file to FileSet stubbed out
24
24
  if CurationConcerns::FileSetActor.new(file_set, user).create_content(f)
25
25
  # send message to user on download success
26
26
  CurationConcerns.config.callback.run(:after_import_url_success, file_set, user)
@@ -7,19 +7,14 @@ module CurationConcerns
7
7
  before_destroy :remove_representative_relationship
8
8
  end
9
9
 
10
- def generic_works
11
- in_objects # in_objects is provided by Hydra::PCDM::ObjectBehavior
12
- end
13
-
14
- # OPTIMIZE: We can load this from Solr much faster than loading the objects
15
- def generic_work_ids
16
- generic_works.map(&:id)
10
+ def parents
11
+ in_works
17
12
  end
18
13
 
19
14
  # Returns the first parent object
20
15
  # This is a hack to handle things like FileSets inheriting access controls from their parent. (see CurationConcerns::ParentContainer in app/controllers/concerns/curation_concers/parent_container.rb)
21
16
  def parent
22
- in_objects.first
17
+ parents.first
23
18
  end
24
19
 
25
20
  # Returns the id of first parent object
@@ -27,21 +22,28 @@ module CurationConcerns
27
22
  delegate :id, to: :parent, prefix: true
28
23
 
29
24
  # Files with sibling relationships
30
- # Returns all FileSets aggregated by any of the GenericWorks that aggregate the current object
25
+ # Returns all FileSets aggregated by any of the parent objects that
26
+ # aggregate the current object
31
27
  def related_files
32
- generic_works = self.generic_works
33
- return [] if generic_works.empty?
34
- generic_works.flat_map { |work| work.file_sets.select { |file_set| file_set.id != id } }
28
+ parent_objects = parents
29
+ return [] if parent_objects.empty?
30
+ parent_objects.flat_map do |work|
31
+ work.file_sets.select do |file_set|
32
+ file_set.id != id
33
+ end
34
+ end
35
35
  end
36
36
 
37
- # If any parent works are pointing at this object as their representative, remove that pointer.
37
+ # If any parent objects are pointing at this object as their
38
+ # representative, remove that pointer.
38
39
  def remove_representative_relationship
39
- generic_works = self.generic_works
40
- return if generic_works.empty?
41
- generic_works.each do |work|
40
+ parent_objects = parents
41
+ return if parent_objects.empty?
42
+ parent_objects.each do |work|
42
43
  work.update(representative_id: nil) if work.representative_id == id
43
44
  end
44
45
  end
45
46
  end
46
47
  end
47
48
  end
49
+ \
@@ -3,7 +3,7 @@ module CurationConcerns
3
3
  class << self
4
4
  # @param [Array] ids the list of ids to load
5
5
  # @param [Class] klass the class of presenter to make
6
- # @return [Array] presenters for the generic files in order of the ids
6
+ # @return [Array] presenters for the documents in order of the ids
7
7
  def build_presenters(ids, klass, ability)
8
8
  new(ids, klass, ability).build
9
9
  end
@@ -33,7 +33,7 @@ module CurationConcerns
33
33
  end
34
34
 
35
35
  def options
36
- ::Resque.redis.redis.client.options
36
+ ::Redis.current.client.options
37
37
  end
38
38
  end
39
39
  end
@@ -31,8 +31,6 @@ Gem::Specification.new do |spec|
31
31
  spec.add_dependency 'active_attr'
32
32
  spec.add_dependency 'hydra-works', '~> 0.8', '>= 0.8.1'
33
33
  spec.add_dependency 'active_fedora-noid', '~> 1.0'
34
- spec.add_dependency 'resque', '~> 1.23'
35
- spec.add_dependency 'resque-pool', '~> 0.3'
36
34
  spec.add_dependency 'qa', '~> 0.5'
37
35
  spec.add_dependency 'redlock', '~> 0.1.2'
38
36
  spec.add_dependency 'solrizer', '~> 3.4'
@@ -3,11 +3,11 @@ module CurationConcerns
3
3
  # without changing the param key.
4
4
  #
5
5
  # Example:
6
- # name = CurationConcerns::Name.new(GenericWork)
6
+ # name = CurationConcerns::Name.new(MyWork)
7
7
  # name.param_key
8
- # # => 'generic_work'
8
+ # # => 'my_work'
9
9
  # name.route_key
10
- # # => 'curation_concerns_generic_works'
10
+ # # => 'curation_concerns_my_works'
11
11
  #
12
12
  class Name < ActiveModel::Name
13
13
  def initialize(klass, namespace = nil, name = nil)
@@ -71,9 +71,9 @@ module ActionDispatch::Routing
71
71
  ROUTE_OPTIONS = { 'curation_concerns' => { path: :concern } }.freeze
72
72
 
73
73
  # Namespaces routes appropriately
74
- # @example namespaced_resources("curation_concerns/generic_work") is equivalent to
74
+ # @example namespaced_resources("curation_concerns/my_work") is equivalent to
75
75
  # namespace "curation_concerns", path: :concern do
76
- # resources "generic_work", except: [:index]
76
+ # resources "my_work", except: [:index]
77
77
  # end
78
78
  def namespaced_resources(target, opts = {}, &block)
79
79
  if target.include?('/')
@@ -1,3 +1,3 @@
1
1
  module CurationConcerns
2
- VERSION = "0.14.0.pre3".freeze
2
+ VERSION = "0.14.0.pre4".freeze
3
3
  end
@@ -43,9 +43,7 @@ This generator makes the following changes to your application:
43
43
  "\nMime::Type.register 'application/x-endnote-refer', :endnote", verbose: false
44
44
  copy_file 'config/curation_concerns.rb', 'config/initializers/curation_concerns.rb'
45
45
  copy_file 'config/redis.yml', 'config/redis.yml'
46
- copy_file 'config/resque-pool.yml', 'config/resque-pool.yml'
47
46
  copy_file 'config/redis_config.rb', 'config/initializers/redis_config.rb'
48
- copy_file 'config/resque_config.rb', 'config/initializers/resque_config.rb'
49
47
  end
50
48
 
51
49
  def create_collection
@@ -13,9 +13,6 @@ if defined?(PhusionPassenger)
13
13
  rescue
14
14
  nil
15
15
  end
16
- Resque.redis = Redis.current
17
- Resque.redis.namespace = "#{CurationConcerns.config.redis_namespace}:#{Rails.env}"
18
- Resque.redis.client.reconnect if Resque.redis
19
16
  end
20
17
  end
21
18
  else
@@ -1,6 +1,5 @@
1
1
  Description:
2
- This generator creates the necessary files for work that extends
3
- CurationConcerns's GenericWork.
2
+ This generator creates the necessary files for new work types.
4
3
 
5
4
  Example:
6
5
  rails generate curation_concerns:work ScholarlyPaper
@@ -4,9 +4,9 @@ After creating your work you may wish to:
4
4
 
5
5
  1. Add custom views:
6
6
 
7
- Your newly created work's controller extends from
8
- CurationConcerns::GenericWorksController; This means that it will use the
9
- views found in CurationConcerns::Engine.root/app/views/curation_concerns/base.
7
+ By default, the views found in
8
+ CurationConcerns::Engine.root/app/views/curation_concerns/base
9
+ will be used.
10
10
 
11
11
  2. Modify the model, actor, form or presenter.
12
12
 
@@ -30,15 +30,15 @@ describe CurationConcerns::FileSetActor do
30
30
 
31
31
  context 'when a work is not provided' do
32
32
  it "leaves the association blank" do
33
- expect(subject.generic_works).to be_empty
33
+ expect(subject.parents).to be_empty
34
34
  end
35
35
  end
36
36
 
37
37
  context 'when a work is provided' do
38
38
  let(:work) { create(:generic_work) }
39
39
 
40
- it 'adds the generic file to the parent work' do
41
- expect(subject.generic_works).to eq [work]
40
+ it 'adds the FileSet to the parent work' do
41
+ expect(subject.parents).to eq [work]
42
42
  expect(work.reload.file_sets).to include(subject)
43
43
 
44
44
  # Confirming that date_uploaded and date_modified were set
@@ -81,7 +81,7 @@ describe CurationConcerns::FileSetsController do
81
81
  it 'errors out of create after on continuous rsolr error' do
82
82
  xhr :post, :create, parent_id: parent, file_set: { files: [file] },
83
83
  permission: { group: { 'public' => 'read' } }, terms_of_service: '1'
84
- expect(response.body).to include('Error creating generic file image.png')
84
+ expect(response.body).to include('Error creating file image.png')
85
85
  end
86
86
  end
87
87
  end
@@ -19,7 +19,7 @@ FactoryGirl.define do
19
19
 
20
20
  factory :work_with_one_file do
21
21
  before(:create) do |work, evaluator|
22
- work.ordered_members << FactoryGirl.create(:file_set, user: evaluator.user, title: ['A Contained Generic File'], filename: 'filename.pdf')
22
+ work.ordered_members << FactoryGirl.create(:file_set, user: evaluator.user, title: ['A Contained FileSet'], filename: 'filename.pdf')
23
23
  end
24
24
  end
25
25
 
@@ -12,13 +12,7 @@ feature 'collection' do
12
12
  let(:gw1) { create(:generic_work, user: user, title: ['First test work']) }
13
13
  let(:gw2) { create(:generic_work, user: user, title: ['Second test work']) }
14
14
 
15
- before(:all) do
16
- @old_resque_inline_value = Resque.inline
17
- Resque.inline = true
18
- end
19
-
20
15
  after(:all) do
21
- Resque.inline = @old_resque_inline_value
22
16
  GenericWork.destroy_all
23
17
  Collection.destroy_all
24
18
  end
@@ -20,7 +20,7 @@ feature 'Editing attached files' do
20
20
  attach_file('Upload a file', fixture_file_path('files/image.png'))
21
21
  click_button 'Update Attached File'
22
22
 
23
- expect(page).to have_content 'The file A Contained Generic File has been updated.'
23
+ expect(page).to have_content 'The file A Contained FileSet has been updated.'
24
24
 
25
25
  # TODO: this stuff belongs in an Actor or Controller test:
26
26
  file_set.reload
@@ -416,7 +416,7 @@ describe FileSet do
416
416
  let(:work) { create(:work_with_one_file) }
417
417
  subject { work.file_sets.first.reload }
418
418
  it 'belongs to works' do
419
- expect(subject.generic_works).to eq [work]
419
+ expect(subject.parents).to eq [work]
420
420
  end
421
421
  end
422
422
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: curation_concerns
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0.pre3
4
+ version: 0.14.0.pre4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Zumwalt
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-04-29 00:00:00.000000000 Z
13
+ date: 2016-05-02 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: hydra-head
@@ -200,34 +200,6 @@ dependencies:
200
200
  - - "~>"
201
201
  - !ruby/object:Gem::Version
202
202
  version: '1.0'
203
- - !ruby/object:Gem::Dependency
204
- name: resque
205
- requirement: !ruby/object:Gem::Requirement
206
- requirements:
207
- - - "~>"
208
- - !ruby/object:Gem::Version
209
- version: '1.23'
210
- type: :runtime
211
- prerelease: false
212
- version_requirements: !ruby/object:Gem::Requirement
213
- requirements:
214
- - - "~>"
215
- - !ruby/object:Gem::Version
216
- version: '1.23'
217
- - !ruby/object:Gem::Dependency
218
- name: resque-pool
219
- requirement: !ruby/object:Gem::Requirement
220
- requirements:
221
- - - "~>"
222
- - !ruby/object:Gem::Version
223
- version: '0.3'
224
- type: :runtime
225
- prerelease: false
226
- version_requirements: !ruby/object:Gem::Requirement
227
- requirements:
228
- - - "~>"
229
- - !ruby/object:Gem::Version
230
- version: '0.3'
231
203
  - !ruby/object:Gem::Dependency
232
204
  name: qa
233
205
  requirement: !ruby/object:Gem::Requirement
@@ -1010,8 +982,6 @@ files:
1010
982
  - lib/generators/curation_concerns/templates/config/mime_types.rb
1011
983
  - lib/generators/curation_concerns/templates/config/redis.yml
1012
984
  - lib/generators/curation_concerns/templates/config/redis_config.rb
1013
- - lib/generators/curation_concerns/templates/config/resque-pool.yml
1014
- - lib/generators/curation_concerns/templates/config/resque_config.rb
1015
985
  - lib/generators/curation_concerns/templates/curation_concerns.js
1016
986
  - lib/generators/curation_concerns/templates/curation_concerns.scss
1017
987
  - lib/generators/curation_concerns/templates/curation_concerns_helper.rb
@@ -1033,7 +1003,6 @@ files:
1033
1003
  - lib/generators/curation_concerns/work/work_generator.rb
1034
1004
  - lib/tasks/curation_concerns.rake
1035
1005
  - lib/tasks/migrate.rake
1036
- - lib/tasks/resque.rake
1037
1006
  - lib/tasks/solr_reindex.rake
1038
1007
  - solr/config/_rest_managed.json
1039
1008
  - solr/config/admin-extra.html
@@ -1,6 +0,0 @@
1
- require 'resque'
2
- config = YAML.load(ERB.new(IO.read(File.join(Rails.root, 'config', 'redis.yml'))).result)[Rails.env].with_indifferent_access
3
- Resque.redis = Redis.new(host: config[:host], port: config[:port], thread_safe: true)
4
-
5
- Resque.inline = Rails.env.test?
6
- Resque.redis.namespace = "#{CurationConcerns.config.redis_namespace}:#{Rails.env}"
@@ -1,14 +0,0 @@
1
- require 'resque/pool/tasks'
2
-
3
- # This provides access to the Rails env within all Resque workers
4
- task 'resque:setup' => :environment
5
-
6
- # Set up resque-pool
7
- task 'resque:pool:setup' do
8
- ActiveRecord::Base.connection.disconnect!
9
- require 'resque/pool'
10
- Resque::Pool.after_prefork do |job|
11
- ActiveRecord::Base.establish_connection
12
- Resque.redis.client.reconnect
13
- end
14
- end