sufia 1.3.0 → 2.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.
Files changed (163) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -3
  3. data/Gemfile +1 -0
  4. data/Releasing_sufia.md +3 -0
  5. data/SUFIA_VERSION +1 -0
  6. data/app/assets/javascripts/sufia.js +22 -24
  7. data/app/assets/javascripts/sufia/batch_select_all.js +2 -0
  8. data/app/assets/javascripts/sufia/fileupload.js +6 -0
  9. data/app/assets/javascripts/sufia/uploader.js +165 -0
  10. data/app/assets/javascripts/terms_of_service.js +36 -30
  11. data/app/assets/stylesheets/{scholarsphere-bootstrap.css → application-bootstrap.css} +0 -0
  12. data/app/assets/stylesheets/sufia.css.scss +1 -1
  13. data/app/controllers/batch_controller.rb +1 -0
  14. data/app/controllers/concerns/sufia/users_controller_behavior.rb +2 -1
  15. data/app/helpers/generic_file_helper.rb +17 -0
  16. data/{lib/sufia → app}/jobs/content_delete_event_job.rb +0 -0
  17. data/{lib/sufia → app}/jobs/content_deposit_event_job.rb +0 -0
  18. data/{lib/sufia → app}/jobs/content_new_version_event_job.rb +0 -0
  19. data/{lib/sufia → app}/jobs/content_restored_version_event_job.rb +0 -0
  20. data/{lib/sufia → app}/jobs/content_update_event_job.rb +0 -0
  21. data/{lib/sufia → app}/jobs/event_job.rb +0 -0
  22. data/{lib/sufia → app}/jobs/user_edit_profile_event_job.rb +0 -0
  23. data/{lib/sufia → app}/jobs/user_follow_event_job.rb +0 -0
  24. data/{lib/sufia → app}/jobs/user_unfollow_event_job.rb +0 -0
  25. data/app/models/contact_form.rb +2 -2
  26. data/app/views/_ga.html.erb +2 -2
  27. data/app/views/batch_edits/_batch_edits_actions.html.erb +1 -0
  28. data/app/views/batch_edits/_check_all.html.erb +1 -2
  29. data/app/views/catalog/_sort_and_per_page.html.erb +1 -1
  30. data/app/views/dashboard/_batch_edits_actions.html.erb +2 -0
  31. data/app/views/dashboard/_sort_and_per_page.html.erb +1 -1
  32. data/app/views/generic_files/_breadcrumbs.html.erb +5 -1
  33. data/app/views/generic_files/_descriptions.html.erb +6 -4
  34. data/app/views/generic_files/_dropbox_import.html.erb +3 -0
  35. data/app/views/generic_files/_field_display.html.erb +12 -0
  36. data/app/views/generic_files/_field_form.html.erb +1 -1
  37. data/app/views/generic_files/_multiple_upload.html.erb +4 -135
  38. data/app/views/generic_files/_permission_form.html.erb +5 -5
  39. data/app/views/generic_files/_show_descriptions.html.erb +6 -14
  40. data/app/views/generic_files/_show_details.html.erb +2 -2
  41. data/app/views/generic_files/edit_fields/_resource_type.html.erb +9 -0
  42. data/app/views/generic_files/edit_fields/_rights.html.erb +1 -1
  43. data/app/views/generic_files/edit_fields/_type.html.erb +4 -1
  44. data/app/views/generic_files/new.html.erb +18 -1
  45. data/app/views/generic_files/show_fields/_default.html.erb +12 -0
  46. data/app/views/generic_files/upload/_agreement.html.erb +5 -0
  47. data/app/views/generic_files/upload/_alerts.html.erb +19 -0
  48. data/app/views/generic_files/upload/_dropbox_chooser.html.erb +39 -0
  49. data/app/views/generic_files/upload/_form.html.erb +6 -0
  50. data/app/views/generic_files/upload/_form_fields.html.erb +47 -0
  51. data/app/views/generic_files/upload/_script_templates.html.erb +61 -0
  52. data/app/views/generic_files/upload/_tos_checkbox.html.erb +3 -0
  53. data/app/views/layouts/_head-tag-content.html.erb +22 -0
  54. data/app/views/layouts/{hydra-head.html.erb → homepage.html.erb} +3 -44
  55. data/app/views/layouts/sufia-one-column.html.erb +43 -0
  56. data/app/views/layouts/sufia-two-column.html.erb +45 -0
  57. data/app/views/static/agreement.html.erb +12 -11
  58. data/app/views/static/mendeley.html.erb +2 -2
  59. data/app/views/static/terms.html.erb +11 -11
  60. data/app/views/static/zotero.html.erb +2 -2
  61. data/config/initializers/sufia_events.rb +3 -0
  62. data/config/locales/sufia.en.yml +3 -6
  63. data/features/step_definitions/{scholarsphere.rb → sufia.rb} +0 -0
  64. data/lib/generators/sufia/sufia_generator.rb +1 -1
  65. data/lib/generators/sufia/templates/config/resque_config.rb +1 -1
  66. data/lib/generators/sufia/templates/config/sufia.rb +3 -0
  67. data/lib/sufia.rb +1 -50
  68. data/lib/sufia/batch_edits_controller_behavior.rb +4 -0
  69. data/lib/sufia/controller.rb +13 -0
  70. data/lib/sufia/dashboard_controller_behavior.rb +3 -2
  71. data/lib/sufia/files_controller_behavior.rb +35 -12
  72. data/lib/sufia/version.rb +1 -1
  73. data/spec/controllers/batch_edits_controller_spec.rb +2 -2
  74. data/spec/controllers/generic_files_controller_spec.rb +37 -1
  75. data/spec/models/generic_file_spec.rb +6 -6
  76. data/spec/models/properties_datastream_spec.rb +8 -7
  77. data/spec/models/transcode_audio_job_spec.rb +1 -1
  78. data/spec/models/transcode_video_job_spec.rb +1 -1
  79. data/spec/views/batch_edits/check_all_spec.rb +22 -0
  80. data/sufia-models/.gitignore +17 -0
  81. data/sufia-models/Gemfile +4 -0
  82. data/sufia-models/LICENSE.md +177 -0
  83. data/sufia-models/README.md +39 -0
  84. data/sufia-models/Rakefile +1 -0
  85. data/{app → sufia-models/app}/models/batch.rb +2 -4
  86. data/{app → sufia-models/app}/models/checksum_audit_log.rb +3 -4
  87. data/{app → sufia-models/app}/models/datastreams/batch_rdf_datastream.rb +0 -0
  88. data/{app → sufia-models/app}/models/datastreams/file_content_datastream.rb +0 -0
  89. data/{app → sufia-models/app}/models/datastreams/fits_datastream.rb +0 -0
  90. data/{app → sufia-models/app}/models/datastreams/generic_file_rdf_datastream.rb +12 -12
  91. data/{app → sufia-models/app}/models/datastreams/paranoid_rights_datastream.rb +0 -15
  92. data/{app → sufia-models/app}/models/datastreams/properties_datastream.rb +1 -2
  93. data/{app → sufia-models/app}/models/domain_term.rb +0 -0
  94. data/{app → sufia-models/app}/models/follow.rb +0 -0
  95. data/{app → sufia-models/app}/models/generic_file.rb +0 -0
  96. data/{app → sufia-models/app}/models/geo_names_resource.rb +0 -0
  97. data/{app → sufia-models/app}/models/group.rb +0 -0
  98. data/{app → sufia-models/app}/models/local_authority.rb +0 -0
  99. data/{app → sufia-models/app}/models/local_authority_entry.rb +0 -0
  100. data/{app → sufia-models/app}/models/single_use_link.rb +0 -0
  101. data/{app → sufia-models/app}/models/subject_local_authority_entry.rb +0 -0
  102. data/{app → sufia-models/app}/models/trophy.rb +0 -0
  103. data/{app → sufia-models/app}/models/version_committer.rb +0 -0
  104. data/sufia-models/config/locales/sufia.en.yml +6 -0
  105. data/sufia-models/lib/sufia/models.rb +34 -0
  106. data/{lib/sufia → sufia-models/lib/sufia/models}/active_fedora/redis.rb +0 -0
  107. data/{lib/sufia → sufia-models/lib/sufia/models}/active_record/redis.rb +0 -0
  108. data/{lib → sufia-models/lib/sufia/models}/active_support/core_ext/marshal.rb +0 -0
  109. data/sufia-models/lib/sufia/models/engine.rb +61 -0
  110. data/sufia-models/lib/sufia/models/file_content.rb +9 -0
  111. data/{lib/sufia → sufia-models/lib/sufia/models}/file_content/extract_metadata.rb +2 -2
  112. data/{lib/sufia → sufia-models/lib/sufia/models}/file_content/versions.rb +0 -0
  113. data/{lib/sufia → sufia-models/lib/sufia/models}/generic_file.rb +3 -34
  114. data/{lib/sufia → sufia-models/lib/sufia/models}/generic_file/actions.rb +16 -1
  115. data/{lib/sufia → sufia-models/lib/sufia/models}/generic_file/audit.rb +1 -1
  116. data/{lib/sufia → sufia-models/lib/sufia/models}/generic_file/characterization.rb +1 -2
  117. data/{lib/sufia → sufia-models/lib/sufia/models}/generic_file/export.rb +0 -0
  118. data/{lib/sufia → sufia-models/lib/sufia/models}/generic_file/permissions.rb +0 -1
  119. data/{lib/sufia → sufia-models/lib/sufia/models}/generic_file/thumbnail.rb +3 -3
  120. data/sufia-models/lib/sufia/models/generic_file/web_form.rb +45 -0
  121. data/{lib/sufia → sufia-models/lib/sufia/models}/id_service.rb +11 -7
  122. data/{lib/sufia → sufia-models/lib/sufia/models}/jobs/audit_job.rb +0 -0
  123. data/{lib/sufia → sufia-models/lib/sufia/models}/jobs/batch_update_job.rb +0 -0
  124. data/{lib/sufia → sufia-models/lib/sufia/models}/jobs/characterize_job.rb +0 -0
  125. data/{lib/sufia → sufia-models/lib/sufia/models}/jobs/ffmpeg_transcode_job.rb +3 -3
  126. data/sufia-models/lib/sufia/models/jobs/import_url_job.rb +55 -0
  127. data/{lib/sufia → sufia-models/lib/sufia/models}/jobs/resolrize_job.rb +0 -0
  128. data/{lib/sufia → sufia-models/lib/sufia/models}/jobs/transcode_audio_job.rb +0 -0
  129. data/{lib/sufia → sufia-models/lib/sufia/models}/jobs/transcode_video_job.rb +0 -0
  130. data/{lib/sufia → sufia-models/lib/sufia/models}/jobs/unzip_job.rb +16 -4
  131. data/{lib/sufia → sufia-models/lib/sufia/models}/model_methods.rb +0 -0
  132. data/{lib/sufia → sufia-models/lib/sufia/models}/noid.rb +1 -1
  133. data/{lib/sufia/queue → sufia-models/lib/sufia/models}/resque.rb +0 -2
  134. data/{lib/sufia → sufia-models/lib/sufia/models}/solr_document_behavior.rb +0 -0
  135. data/{lib/sufia → sufia-models/lib/sufia/models}/user.rb +1 -1
  136. data/{lib/sufia → sufia-models/lib/sufia/models}/utils.rb +0 -0
  137. data/sufia-models/lib/sufia/models/version.rb +5 -0
  138. data/sufia-models/lib/tasks/sufia-models_tasks.rake +7 -0
  139. data/sufia-models/sufia-models.gemspec +44 -0
  140. data/sufia.gemspec +2 -12
  141. data/tasks/release.rake +90 -0
  142. data/tasks/sufia-dev.rake +1 -1
  143. data/tasks/sufia.rake +1 -3
  144. metadata +118 -238
  145. data/app/views/generic_files/show_fields/_based_near.html.erb +0 -12
  146. data/app/views/generic_files/show_fields/_contributor.html.erb +0 -12
  147. data/app/views/generic_files/show_fields/_creator.html.erb +0 -12
  148. data/app/views/generic_files/show_fields/_date_created.html.erb +0 -12
  149. data/app/views/generic_files/show_fields/_description.html.erb +0 -12
  150. data/app/views/generic_files/show_fields/_identifier.html.erb +0 -9
  151. data/app/views/generic_files/show_fields/_language.html.erb +0 -9
  152. data/app/views/generic_files/show_fields/_publisher.html.erb +0 -12
  153. data/app/views/generic_files/show_fields/_related_url.html.erb +0 -11
  154. data/app/views/generic_files/show_fields/_resource_type.html.erb +0 -9
  155. data/app/views/generic_files/show_fields/_rights.html.erb +0 -9
  156. data/app/views/generic_files/show_fields/_subject.html.erb +0 -12
  157. data/app/views/generic_files/show_fields/_tag.html.erb +0 -9
  158. data/app/views/generic_files/show_fields/_title.html.erb +0 -12
  159. data/lib/sufia/file_content.rb +0 -8
  160. data/lib/sufia/generic_file/web_form.rb +0 -15
  161. data/vendor/assets/javascripts/fileupload.js +0 -6
  162. data/vendor/assets/javascripts/fileupload/application.js +0 -185
  163. data/vendor/assets/javascripts/fileupload/jquery-ui-1.8.14.custom.min.js +0 -76
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,6 @@
1
+ en:
2
+ sufia:
3
+ product_name: "ScholarSphere"
4
+ institution_name: "Penn State"
5
+ institution_name_full: "The Pennsylvania State University"
6
+
@@ -0,0 +1,34 @@
1
+ require "sufia/models/version"
2
+ require "sufia/models/engine"
3
+ require 'hydra/head'
4
+ require 'devise'
5
+ require 'nest'
6
+ require 'mailboxer'
7
+ require 'acts_as_follower'
8
+ require 'paperclip'
9
+ require 'RMagick'
10
+ require 'activerecord-import'
11
+ require 'resque/server'
12
+
13
+ module Sufia
14
+ extend ActiveSupport::Autoload
15
+
16
+ module Models
17
+ end
18
+
19
+ autoload :Utils, 'sufia/models/utils'
20
+
21
+ attr_writer :queue
22
+
23
+ def self.queue
24
+ @queue ||= config.queue.new('sufia')
25
+ end
26
+
27
+ def self.config(&block)
28
+ @@config ||= Sufia::Models::Engine::Configuration.new
29
+
30
+ yield @@config if block
31
+
32
+ return @@config
33
+ end
34
+ end
@@ -0,0 +1,61 @@
1
+ require 'sufia/models/resque'
2
+ module Sufia
3
+ module Models
4
+ def self.config(&block)
5
+ @@config ||= Engine::Configuration.new
6
+
7
+ yield @@config if block
8
+
9
+ return @@config
10
+ end
11
+
12
+ class Engine < ::Rails::Engine
13
+
14
+ # Set some configuration defaults
15
+ config.enable_ffmpeg = false
16
+ config.noid_template = '.reeddeeddk'
17
+ config.ffmpeg_path = 'ffmpeg'
18
+ config.fits_message_length = 5
19
+ config.temp_file_base = nil
20
+ config.minter_statefile = '/tmp/minter-state'
21
+ config.id_namespace = "sufia"
22
+ config.fits_path = "fits.sh"
23
+ config.enable_contact_form_delivery = false
24
+ config.dropbox_api_key = nil
25
+ config.queue = Sufia::Resque::Queue
26
+
27
+ config.autoload_paths += %W(
28
+ #{config.root}/lib/sufia/models/jobs
29
+ #{config.root}/app/models/datastreams
30
+ )
31
+
32
+ rake_tasks do
33
+ load File.expand_path('../../../tasks/sufia-models_tasks.rake', __FILE__)
34
+ end
35
+
36
+ initializer "patches" do
37
+ require 'sufia/models/active_fedora/redis'
38
+ require 'sufia/models/active_record/redis'
39
+ require 'sufia/models/active_support/core_ext/marshal'
40
+ end
41
+
42
+ initializer 'requires' do
43
+ require 'sufia/models/model_methods'
44
+ require 'sufia/models/noid'
45
+ require 'sufia/models/file_content'
46
+ require 'sufia/models/file_content/extract_metadata'
47
+ require 'sufia/models/file_content/versions'
48
+ require 'sufia/models/generic_file/actions'
49
+ require 'sufia/models/generic_file/audit'
50
+ require 'sufia/models/generic_file/characterization'
51
+ require 'sufia/models/generic_file/export'
52
+ require 'sufia/models/generic_file/permissions'
53
+ require 'sufia/models/generic_file/thumbnail'
54
+ require 'sufia/models/generic_file'
55
+ require 'sufia/models/user'
56
+ require 'sufia/models/id_service'
57
+ require 'sufia/models/solr_document_behavior'
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,9 @@
1
+ module Sufia
2
+ module FileContent
3
+ extend ActiveSupport::Autoload
4
+
5
+ autoload :ExtractMetadata, 'sufia/models/file_content/extract_metadata'
6
+ autoload :Versions, 'sufia/models/file_content/versions'
7
+
8
+ end
9
+ end
@@ -14,7 +14,7 @@ module Sufia
14
14
 
15
15
  def to_tempfile &block
16
16
  return unless has_content?
17
- tmp_base = Sufia::Engine.config.temp_file_base
17
+ tmp_base = Sufia.config.temp_file_base
18
18
  f = Tempfile.new("#{pid}-#{dsVersionID}")
19
19
  f.binmode
20
20
  if content.respond_to? :read
@@ -52,7 +52,7 @@ module Sufia
52
52
 
53
53
 
54
54
  def fits_path
55
- Sufia::Engine.config.fits_path
55
+ Sufia.config.fits_path
56
56
  end
57
57
 
58
58
  end
@@ -1,7 +1,3 @@
1
- require 'datastreams/generic_file_rdf_datastream'
2
- require 'datastreams/properties_datastream'
3
- require 'datastreams/file_content_datastream'
4
-
5
1
  module Sufia
6
2
  module GenericFile
7
3
  extend ActiveSupport::Concern
@@ -12,7 +8,7 @@ module Sufia
12
8
  autoload :Audit
13
9
  autoload :Actions
14
10
  autoload :Permissions
15
- autoload :WebForm
11
+ autoload :WebForm, 'sufia/models/generic_file/web_form'
16
12
  include Sufia::ModelMethods
17
13
  include Sufia::Noid
18
14
  include Sufia::GenericFile::Thumbnail
@@ -30,7 +26,7 @@ module Sufia
30
26
 
31
27
  belongs_to :batch, :property => :is_part_of
32
28
 
33
- delegate_to :properties, [:relative_path, :depositor], :unique => true
29
+ delegate_to :properties, [:relative_path, :depositor, :import_url], :unique => true
34
30
  delegate_to :descMetadata, [:date_uploaded, :date_modified], :unique => true
35
31
  delegate_to :descMetadata, [:related_url, :based_near, :part_of, :creator,
36
32
  :contributor, :title, :tag, :description, :rights,
@@ -38,16 +34,9 @@ module Sufia
38
34
  :resource_type, :identifier, :language]
39
35
 
40
36
  around_save :characterize_if_changed, :retry_warming
41
- before_save :remove_blank_assertions
42
37
  before_destroy :cleanup_trophies
43
38
  end
44
39
 
45
- def remove_blank_assertions
46
- terms_for_editing.each do |key|
47
- self[key] = nil if self[key] == ['']
48
- end
49
- end
50
-
51
40
 
52
41
  def record_version_committer(user)
53
42
  version = content.latest_version
@@ -78,7 +67,7 @@ module Sufia
78
67
  end
79
68
 
80
69
  def persistent_url
81
- "#{Sufia::Engine.config.persistent_hostpath}#{noid}"
70
+ "#{Sufia.config.persistent_hostpath}#{noid}"
82
71
  end
83
72
 
84
73
  def retry_warming
@@ -161,26 +150,6 @@ module Sufia
161
150
  end
162
151
  end
163
152
 
164
- def to_jq_upload
165
- return {
166
- "name" => self.title,
167
- "size" => self.file_size,
168
- "url" => "/files/#{noid}",
169
- "thumbnail_url" => self.pid,
170
- "delete_url" => "deleteme", # generic_file_path(:id => id),
171
- "delete_type" => "DELETE"
172
- }
173
- end
174
-
175
- def terms_for_editing
176
- terms_for_display -
177
- [:part_of, :date_modified, :date_uploaded, :format] #, :resource_type]
178
- end
179
-
180
- def terms_for_display
181
- self.descMetadata.class.config.keys
182
- end
183
-
184
153
  # Is this file in the middle of being processed by a batch?
185
154
  def processing?
186
155
  return false if self.batch.blank?
@@ -13,6 +13,7 @@ module Sufia::GenericFile
13
13
  else
14
14
  logger.warn "unable to find batch to attach to"
15
15
  end
16
+ yield(generic_file) if block_given?
16
17
  generic_file.save!
17
18
  end
18
19
 
@@ -33,7 +34,21 @@ module Sufia::GenericFile
33
34
 
34
35
  generic_file.record_version_committer(user)
35
36
  Sufia.queue.push(UnzipJob.new(generic_file.pid)) if generic_file.content.mimeType == 'application/zip'
36
- Sufia.queue.push(ContentDepositEventJob.new(generic_file.pid, user.user_key))
37
+ if Sufia.config.respond_to?(:after_create_content)
38
+ Sufia.config.after_create_content.call(generic_file, user)
39
+ end
37
40
  end
41
+
42
+ def self.virus_check(file)
43
+ if defined? ClamAV
44
+ stat = ClamAV.instance.scanfile(file.path)
45
+ logger.warn "Virus checking did not pass for #{file.inspect} status = #{stat}" unless stat == 0
46
+ stat
47
+ else
48
+ logger.warn "Virus checking disabled for #{file.inspect}"
49
+ 0
50
+ end
51
+ end
52
+
38
53
  end
39
54
  end
@@ -77,7 +77,7 @@ module Sufia
77
77
  #logger.debug "***AUDIT*** last audit = #{latest_audit.updated_at.to_date}"
78
78
  days_since_last_audit = (DateTime.now - latest_audit.updated_at.to_date).to_i
79
79
  #logger.debug "***AUDIT*** days since last audit: #{days_since_last_audit}"
80
- if days_since_last_audit < Sufia::Engine.config.max_days_between_audits
80
+ if days_since_last_audit < Sufia.config.max_days_between_audits
81
81
  #logger.debug "***AUDIT*** No audit needed for #{version.pid} #{version.versionID} (#{latest_audit.updated_at})"
82
82
  return false
83
83
  end
@@ -1,4 +1,3 @@
1
- require 'datastreams/fits_datastream'
2
1
  module Sufia
3
2
  module GenericFile
4
3
  module Characterization
@@ -43,7 +42,7 @@ module Sufia
43
42
  # Populate descMetadata with fields from FITS (e.g. Author from pdfs)
44
43
  def append_metadata
45
44
  terms = self.characterization_terms
46
- Sufia::Engine.config.fits_to_desc_mapping.each_pair do |k, v|
45
+ Sufia.config.fits_to_desc_mapping.each_pair do |k, v|
47
46
  if terms.has_key?(k)
48
47
  # coerce to array to remove a conditional
49
48
  terms[k] = [terms[k]] unless terms[k].is_a? Array
@@ -1,4 +1,3 @@
1
- require 'datastreams/paranoid_rights_datastream'
2
1
  module Sufia
3
2
  module GenericFile
4
3
  module Permissions
@@ -16,13 +16,13 @@ module Sufia
16
16
 
17
17
  protected
18
18
  def create_video_thumbnail
19
- return unless Sufia::Engine.config.enable_ffmpeg
19
+ return unless Sufia.config.enable_ffmpeg
20
20
 
21
- output_file = Dir::Tmpname.create(['sufia', ".png"], Sufia::Engine.config.temp_file_base){}
21
+ output_file = Dir::Tmpname.create(['sufia', ".png"], Sufia.config.temp_file_base){}
22
22
  content.to_tempfile do |f|
23
23
  # we could use something like this in order to find a frame in the middle.
24
24
  #ffprobe -show_files video.avi 2> /dev/null | grep duration | cut -d= -f2 53.399999
25
- command = "#{Sufia::Engine.config.ffmpeg_path} -i \"#{f.path}\" -loglevel quiet -vf \"scale=338:-1\" -r 1 -t 1 #{output_file}"
25
+ command = "#{Sufia.config.ffmpeg_path} -i \"#{f.path}\" -loglevel quiet -vf \"scale=338:-1\" -r 1 -t 1 #{output_file}"
26
26
  system(command)
27
27
  raise "Unable to execute command \"#{command}\"" unless $?.success?
28
28
  end
@@ -0,0 +1,45 @@
1
+ module Sufia
2
+ module GenericFile
3
+ module WebForm
4
+ extend ActiveSupport::Concern
5
+ included do
6
+ before_save :remove_blank_assertions
7
+ end
8
+
9
+ def remove_blank_assertions
10
+ terms_for_editing.each do |key|
11
+ self[key] = nil if self[key] == ['']
12
+ end
13
+ end
14
+
15
+ # override this method if you need to initialize more complex RDF assertions (b-nodes)
16
+ def initialize_fields
17
+ terms_for_editing.each do |key|
18
+ # if value is empty, we create an one element array to loop over for output
19
+ self[key] = [''] if self[key].empty?
20
+ end
21
+ end
22
+
23
+ def terms_for_editing
24
+ terms_for_display -
25
+ [:part_of, :date_modified, :date_uploaded, :format] #, :resource_type]
26
+ end
27
+
28
+ def terms_for_display
29
+ self.descMetadata.class.config.keys
30
+ end
31
+
32
+ def to_jq_upload
33
+ return {
34
+ "name" => self.title,
35
+ "size" => self.file_size,
36
+ "url" => "/files/#{noid}",
37
+ "thumbnail_url" => self.pid,
38
+ "delete_url" => "deleteme", # generic_file_path(:id => id),
39
+ "delete_type" => "DELETE"
40
+ }
41
+ end
42
+
43
+ end
44
+ end
45
+ end
@@ -16,9 +16,14 @@ require 'noid'
16
16
 
17
17
  module Sufia
18
18
  module IdService
19
- @minter = ::Noid::Minter.new(:template => '.reeddeeddk')
19
+
20
+ def self.noid_template
21
+ Sufia.config.noid_template
22
+ end
23
+
24
+ @minter = ::Noid::Minter.new(:template => noid_template)
20
25
  @pid = $$
21
- @namespace = Sufia::Engine.config.id_namespace
26
+ @namespace = Sufia.config.id_namespace
22
27
  @semaphore = Mutex.new
23
28
  def self.valid?(identifier)
24
29
  # remove the fedora namespace since it's not part of the noid
@@ -38,20 +43,19 @@ module Sufia
38
43
 
39
44
  def self.next_id
40
45
  pid = ''
41
- File.open("tmp/minter-state", File::RDWR|File::CREAT, 0644) {|f|
46
+ File.open(Sufia.config.minter_statefile, File::RDWR|File::CREAT, 0644) do |f|
42
47
  f.flock(File::LOCK_EX)
43
48
  yaml = YAML::load(f.read)
44
- yaml = {:template => '.reeddeeddk'} unless yaml
49
+ yaml = {:template => noid_template} unless yaml
45
50
  minter = ::Noid::Minter.new(yaml)
46
- pid = "#{@namespace}:#{minter.mint}"
51
+ pid = "#{@namespace}:#{minter.mint}"
47
52
  f.rewind
48
53
  yaml = YAML::dump(minter.dump)
49
54
  f.write yaml
50
55
  f.flush
51
56
  f.truncate(f.pos)
52
- }
57
+ end
53
58
  return pid
54
59
  end
55
-
56
60
  end
57
61
  end
@@ -19,7 +19,7 @@ class FfmpegTranscodeJob
19
19
  end
20
20
 
21
21
  def run
22
- return unless Sufia::Engine.config.enable_ffmpeg
22
+ return unless Sufia.config.enable_ffmpeg
23
23
  self.generic_file = GenericFile.find(generic_file_id)
24
24
  self.datastream = generic_file.datastreams[datastream_in]
25
25
  if datastream
@@ -33,7 +33,7 @@ class FfmpegTranscodeJob
33
33
  def encode_datastream(dest_dsid, mime_type, options)
34
34
  file_suffix = dest_dsid
35
35
  out_file = nil
36
- output_file = Dir::Tmpname.create(['sufia', ".#{file_suffix}"], Sufia::Engine.config.temp_file_base){}
36
+ output_file = Dir::Tmpname.create(['sufia', ".#{file_suffix}"], Sufia.config.temp_file_base){}
37
37
  datastream.to_tempfile do |f|
38
38
  self.class.encode(f.path, options, output_file)
39
39
  end
@@ -54,7 +54,7 @@ class FfmpegTranscodeJob
54
54
  end
55
55
 
56
56
  def self.ffmpeg_path
57
- Sufia::Engine.config.ffmpeg_path
57
+ Sufia.config.ffmpeg_path
58
58
  end
59
59
  end
60
60