sufia 0.0.2 → 0.0.3
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.
- data/README.md +3 -0
- data/app/assets/javascripts/sufia.js +11 -0
- data/app/assets/stylesheets/sufia.css +1 -0
- data/app/controllers/batch_edits_controller.rb +1 -1
- data/app/controllers/downloads_controller.rb +1 -65
- data/app/controllers/generic_files_controller.rb +1 -296
- data/app/models/datastreams/generic_file_rdf_datastream.rb +0 -4
- data/app/views/_ga.html.erb +2 -2
- data/app/views/batch/edit.html.erb +1 -13
- data/app/views/batch_edits/edit.html.erb +0 -8
- data/app/views/catalog/index.html.erb +1 -1
- data/app/views/dashboard/index.html.erb +0 -19
- data/app/views/generic_files/_media_display.html.erb +6 -6
- data/app/views/generic_files/_show_actions.html.erb +37 -0
- data/app/views/generic_files/_show_descriptions.html.erb +118 -0
- data/app/views/generic_files/_show_details.html.erb +67 -0
- data/app/views/generic_files/edit.html.erb +6 -19
- data/app/views/generic_files/show.html.erb +3 -236
- data/app/views/users/edit.html.erb +0 -6
- data/lib/generators/sufia/templates/catalog_controller.rb +2 -2
- data/lib/generators/sufia/templates/config/sufia.rb +3 -0
- data/lib/sufia.rb +10 -8
- data/lib/sufia/downloads_controller_behavior.rb +77 -0
- data/lib/sufia/files_controller_behavior.rb +245 -0
- data/lib/sufia/generic_file.rb +9 -15
- data/lib/sufia/version.rb +1 -1
- data/spec/controllers/generic_files_controller_spec.rb +9 -19
- data/spec/models/generic_file_spec.rb +2 -3
- metadata +7 -7
- data/app/assets/javascripts/batch.js +0 -26
- data/app/assets/javascripts/bootstrap-button.js +0 -96
- data/app/assets/javascripts/bootstrap-dropdown.js +0 -100
- data/app/assets/javascripts/bootstrap-modal.js +0 -218
- data/app/assets/javascripts/dashboard.js +0 -40
@@ -14,12 +14,6 @@ See the License for the specific language governing permissions and
|
|
14
14
|
limitations under the License.
|
15
15
|
%>
|
16
16
|
|
17
|
-
<% content_for :js_head do %>
|
18
|
-
|
19
|
-
<%= javascript_include_tag 'bootstrap-tooltip.js'%>
|
20
|
-
<%= javascript_include_tag 'bootstrap-popover.js'%>
|
21
|
-
<% end %>
|
22
|
-
|
23
17
|
<% content_for :local_js do %>
|
24
18
|
// initialize popover helpers
|
25
19
|
$("a[rel=popover]").popover();
|
@@ -290,8 +290,8 @@ class CatalogController < ApplicationController
|
|
290
290
|
:"spellcheck.dictionary" => "format"
|
291
291
|
}
|
292
292
|
field.solr_local_parameters = {
|
293
|
-
:qf => "
|
294
|
-
:pf => "
|
293
|
+
:qf => "file_format_t",
|
294
|
+
:pf => "file_format_t"
|
295
295
|
}
|
296
296
|
end
|
297
297
|
|
data/lib/sufia.rb
CHANGED
@@ -68,13 +68,15 @@ module Sufia
|
|
68
68
|
end
|
69
69
|
|
70
70
|
autoload :GenericFile
|
71
|
-
autoload :Controller
|
72
|
-
autoload :Utils
|
73
|
-
autoload :User
|
74
|
-
autoload :ModelMethods
|
75
|
-
autoload :Noid
|
76
|
-
autoload :IdService
|
77
|
-
autoload :HttpHeaderAuth
|
78
|
-
autoload :SolrDocumentBehavior
|
71
|
+
autoload :Controller
|
72
|
+
autoload :Utils
|
73
|
+
autoload :User
|
74
|
+
autoload :ModelMethods
|
75
|
+
autoload :Noid
|
76
|
+
autoload :IdService
|
77
|
+
autoload :HttpHeaderAuth
|
78
|
+
autoload :SolrDocumentBehavior
|
79
|
+
autoload :FilesControllerBehavior
|
80
|
+
autoload :DownloadsControllerBehavior
|
79
81
|
end
|
80
82
|
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# Copyright © 2012 The Pennsylvania State University
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
module Sufia
|
16
|
+
module DownloadsControllerBehavior
|
17
|
+
extend ActiveSupport::Concern
|
18
|
+
|
19
|
+
included do
|
20
|
+
# module mixes in normalize_identifier method
|
21
|
+
include Sufia::Noid
|
22
|
+
|
23
|
+
# moved check into the routine so we can handle the user with no access
|
24
|
+
prepend_before_filter :normalize_identifier
|
25
|
+
end
|
26
|
+
|
27
|
+
def show
|
28
|
+
if can? :read, params["id"]
|
29
|
+
logger.info "Can read #{params['id']}"
|
30
|
+
|
31
|
+
send_content (params["id"])
|
32
|
+
return
|
33
|
+
else
|
34
|
+
logger.info "Can not read #{params['id']}"
|
35
|
+
redirect_to "/assets/NoAccess.png"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
protected
|
40
|
+
|
41
|
+
def send_content (id)
|
42
|
+
@asset = ActiveFedora::Base.find(id, :cast=>true)
|
43
|
+
opts = {}
|
44
|
+
ds = nil
|
45
|
+
opts[:filename] = params["filename"] || @asset.label
|
46
|
+
opts[:disposition] = 'inline'
|
47
|
+
if params.has_key?(:datastream_id)
|
48
|
+
opts[:filename] = params[:datastream_id]
|
49
|
+
ds = @asset.datastreams[params[:datastream_id]]
|
50
|
+
end
|
51
|
+
ds = default_content_ds(@asset) if ds.nil?
|
52
|
+
raise ActionController::RoutingError.new('Not Found') if ds.nil?
|
53
|
+
data = ds.content
|
54
|
+
opts[:type] = ds.mimeType
|
55
|
+
send_data data, opts
|
56
|
+
return
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
private
|
61
|
+
|
62
|
+
def default_content_ds(asset)
|
63
|
+
ActiveFedora::ContentModel.known_models_for(asset).each do |model_class|
|
64
|
+
return model_class.default_content_ds if model_class.respond_to?(:default_content_ds)
|
65
|
+
end
|
66
|
+
if asset.datastreams.keys.include?(DownloadsController.default_content_dsid)
|
67
|
+
return asset.datastreams[DownloadsController.default_content_dsid]
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
module ClassMethods
|
72
|
+
def default_content_dsid
|
73
|
+
"content"
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,245 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Copyright © 2012 The Pennsylvania State University
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
|
16
|
+
module Sufia
|
17
|
+
module FilesControllerBehavior
|
18
|
+
extend ActiveSupport::Concern
|
19
|
+
|
20
|
+
included do
|
21
|
+
include Hydra::Controller::ControllerBehavior
|
22
|
+
include Hydra::Controller::UploadBehavior # for add_posted_blob_to_asset method
|
23
|
+
include Blacklight::Configurable # comply with BL 3.7
|
24
|
+
include Sufia::Noid # for normalize_identifier method
|
25
|
+
|
26
|
+
# This is needed as of BL 3.7
|
27
|
+
self.copy_blacklight_config_from(CatalogController)
|
28
|
+
|
29
|
+
# Catch permission errors
|
30
|
+
rescue_from Hydra::AccessDenied, CanCan::AccessDenied do |exception|
|
31
|
+
if (exception.action == :edit)
|
32
|
+
redirect_to(sufia.url_for({:action=>'show'}), :alert => "You do not have sufficient privileges to edit this document")
|
33
|
+
elsif current_user and current_user.persisted?
|
34
|
+
redirect_to root_url, :alert => exception.message
|
35
|
+
else
|
36
|
+
session["user_return_to"] = request.url
|
37
|
+
redirect_to new_user_session_url, :alert => exception.message
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
# actions: audit, index, create, new, edit, show, update, destroy, permissions, citation
|
42
|
+
before_filter :authenticate_user!, :except => [:show, :citation]
|
43
|
+
before_filter :has_access?, :except => [:show]
|
44
|
+
prepend_before_filter :normalize_identifier, :except => [:index, :create, :new]
|
45
|
+
load_resource :only=>[:audit]
|
46
|
+
load_and_authorize_resource :except=>[:index, :audit]
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
# routed to /files/new
|
51
|
+
def new
|
52
|
+
@generic_file = ::GenericFile.new
|
53
|
+
@batch_noid = Sufia::Noid.noidify(Sufia::IdService.mint)
|
54
|
+
end
|
55
|
+
|
56
|
+
# routed to /files/:id/edit
|
57
|
+
def edit
|
58
|
+
@terms = @generic_file.get_terms
|
59
|
+
@groups = current_user.groups
|
60
|
+
end
|
61
|
+
|
62
|
+
# routed to /files/:id
|
63
|
+
def index
|
64
|
+
@generic_files = ::GenericFile.find(:all, :rows => ::GenericFile.count)
|
65
|
+
render :json => @generic_files.map(&:to_jq_upload).to_json
|
66
|
+
end
|
67
|
+
|
68
|
+
# routed to /files/:id (DELETE)
|
69
|
+
def destroy
|
70
|
+
pid = @generic_file.noid
|
71
|
+
@generic_file.delete
|
72
|
+
Sufia.queue.push(ContentDeleteEventJob.new(pid, current_user.user_key))
|
73
|
+
redirect_to sufia.dashboard_index_path, :notice => render_to_string(:partial=>'generic_files/asset_deleted_flash', :locals => { :generic_file => @generic_file })
|
74
|
+
end
|
75
|
+
|
76
|
+
# routed to /files (POST)
|
77
|
+
def create
|
78
|
+
begin
|
79
|
+
retval = " "
|
80
|
+
# check error condition No files
|
81
|
+
if !params.has_key?(:files)
|
82
|
+
retval = render :json => [{:error => "Error! No file to save"}].to_json
|
83
|
+
|
84
|
+
# check error condition empty file
|
85
|
+
elsif ((params[:files][0].respond_to?(:tempfile)) && (params[:files][0].tempfile.size == 0))
|
86
|
+
retval = render :json => [{ :name => params[:files][0].original_filename, :error => "Error! Zero Length File!"}].to_json
|
87
|
+
|
88
|
+
elsif ((params[:files][0].respond_to?(:size)) && (params[:files][0].size == 0))
|
89
|
+
retval = render :json => [{ :name => params[:files][0].original_filename, :error => "Error! Zero Length File!"}].to_json
|
90
|
+
|
91
|
+
elsif (params[:terms_of_service] != '1')
|
92
|
+
retval = render :json => [{ :name => params[:files][0].original_filename, :error => "You must accept the terms of service!"}].to_json
|
93
|
+
|
94
|
+
# process file
|
95
|
+
else
|
96
|
+
create_and_save_generic_file
|
97
|
+
if @generic_file
|
98
|
+
Sufia.queue.push(ContentDepositEventJob.new(@generic_file.pid, current_user.user_key))
|
99
|
+
respond_to do |format|
|
100
|
+
format.html {
|
101
|
+
retval = render :json => [@generic_file.to_jq_upload].to_json,
|
102
|
+
:content_type => 'text/html',
|
103
|
+
:layout => false
|
104
|
+
}
|
105
|
+
format.json {
|
106
|
+
retval = render :json => [@generic_file.to_jq_upload].to_json
|
107
|
+
}
|
108
|
+
end
|
109
|
+
else
|
110
|
+
retval = render :json => [{:error => "Error creating generic file."}].to_json
|
111
|
+
end
|
112
|
+
end
|
113
|
+
rescue => error
|
114
|
+
logger.error "GenericFilesController::create rescued #{error.class}\n\t#{error.to_s}\n #{error.backtrace.join("\n")}\n\n"
|
115
|
+
retval = render :json => [{:error => "Error occurred while creating generic file."}].to_json
|
116
|
+
ensure
|
117
|
+
# remove the tempfile (only if it is a temp file)
|
118
|
+
params[:files][0].tempfile.delete if params[:files][0].respond_to?(:tempfile)
|
119
|
+
end
|
120
|
+
|
121
|
+
return retval
|
122
|
+
end
|
123
|
+
|
124
|
+
# routed to /files/:id/citation
|
125
|
+
def citation
|
126
|
+
end
|
127
|
+
|
128
|
+
# routed to /files/:id
|
129
|
+
def show
|
130
|
+
@can_edit = can? :edit, @generic_file
|
131
|
+
@events = @generic_file.events(100)
|
132
|
+
|
133
|
+
respond_to do |format|
|
134
|
+
format.html
|
135
|
+
format.endnote { render :text => @generic_file.export_as_endnote }
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
# routed to /files/:id/audit (POST)
|
140
|
+
def audit
|
141
|
+
render :json=>@generic_file.audit
|
142
|
+
end
|
143
|
+
|
144
|
+
# routed to /files/:id (PUT)
|
145
|
+
def update
|
146
|
+
version_event = false
|
147
|
+
|
148
|
+
if params.has_key?(:revision) and params[:revision] != @generic_file.content.latest_version.versionID
|
149
|
+
revision = @generic_file.content.get_version(params[:revision])
|
150
|
+
@generic_file.add_file_datastream(revision.content, :dsid => 'content')
|
151
|
+
version_event = true
|
152
|
+
Sufia.queue.push(ContentRestoredVersionEventJob.new(@generic_file.pid, current_user.user_key, params[:revision]))
|
153
|
+
end
|
154
|
+
|
155
|
+
if params.has_key?(:filedata)
|
156
|
+
return unless virus_check(params[:filedata]) == 0
|
157
|
+
add_posted_blob_to_asset(@generic_file, params[:filedata])
|
158
|
+
version_event = true
|
159
|
+
Sufia.queue.push(ContentNewVersionEventJob.new(@generic_file.pid, current_user.user_key))
|
160
|
+
end
|
161
|
+
@generic_file.attributes = params[:generic_file].reject { |k,v| %w{ Filedata Filename revision part_of date_modified date_uploaded format }.include? k}
|
162
|
+
@generic_file.set_visibility(params[:visibility])
|
163
|
+
@generic_file.date_modified = Time.now.ctime
|
164
|
+
@generic_file.save!
|
165
|
+
# do not trigger an update event if a version event has already been triggered
|
166
|
+
Sufia.queue.push(ContentUpdateEventJob.new(@generic_file.pid, current_user.user_key)) unless version_event
|
167
|
+
record_version_committer(@generic_file, current_user)
|
168
|
+
redirect_to sufia.edit_generic_file_path(:tab => params[:redirect_tab]), :notice => render_to_string(:partial=>'generic_files/asset_updated_flash', :locals => { :generic_file => @generic_file })
|
169
|
+
|
170
|
+
end
|
171
|
+
|
172
|
+
protected
|
173
|
+
def record_version_committer(generic_file, user)
|
174
|
+
version = generic_file.content.latest_version
|
175
|
+
# content datastream not (yet?) present
|
176
|
+
return if version.nil?
|
177
|
+
VersionCommitter.create(:obj_id => version.pid,
|
178
|
+
:datastream_id => version.dsid,
|
179
|
+
:version_id => version.versionID,
|
180
|
+
:committer_login => user.user_key)
|
181
|
+
end
|
182
|
+
|
183
|
+
def virus_check( file)
|
184
|
+
if defined? ClamAV
|
185
|
+
stat = ClamAV.instance.scanfile(file.path)
|
186
|
+
flash[:error] = "Virus checking did not pass for #{file.original_filename} status = #{stat}" unless stat == 0
|
187
|
+
logger.warn "Virus checking did not pass for #{file.inspect} status = #{stat}" unless stat == 0
|
188
|
+
stat
|
189
|
+
else
|
190
|
+
logger.warn "Virus checking disabled for #{file.inspect}"
|
191
|
+
0
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
def create_and_save_generic_file
|
196
|
+
unless params.has_key?(:files)
|
197
|
+
logger.warn "!!!! No Files !!!!"
|
198
|
+
return
|
199
|
+
end
|
200
|
+
file = params[:files][0]
|
201
|
+
return nil unless virus_check(file) == 0
|
202
|
+
|
203
|
+
@generic_file = ::GenericFile.new
|
204
|
+
@generic_file.terms_of_service = params[:terms_of_service]
|
205
|
+
# if we want to be able to save zero length files then we can use this to make the file 1 byte instead of zero length and fedora will take it
|
206
|
+
#if (file.tempfile.size == 0)
|
207
|
+
# logger.warn "Encountered an empty file... Creating a new temp file with on space."
|
208
|
+
# f = Tempfile.new ("emptyfile")
|
209
|
+
# f.write " "
|
210
|
+
# f.rewind
|
211
|
+
# file.tempfile = f
|
212
|
+
#end
|
213
|
+
add_posted_blob_to_asset(@generic_file,file)
|
214
|
+
|
215
|
+
@generic_file.apply_depositor_metadata(user_key)
|
216
|
+
@generic_file.date_uploaded = Time.now.ctime
|
217
|
+
@generic_file.date_modified = Time.now.ctime
|
218
|
+
@generic_file.relative_path = params[:relative_path] if params.has_key?(:relative_path)
|
219
|
+
@generic_file.creator = current_user.name
|
220
|
+
|
221
|
+
if params.has_key?(:batch_id)
|
222
|
+
batch_id = Sufia::Noid.namespaceize(params[:batch_id])
|
223
|
+
@generic_file.add_relationship("isPartOf", "info:fedora/#{batch_id}")
|
224
|
+
else
|
225
|
+
logger.warn "unable to find batch to attach to"
|
226
|
+
end
|
227
|
+
|
228
|
+
save_tries = 0
|
229
|
+
begin
|
230
|
+
@generic_file.save
|
231
|
+
rescue RSolr::Error::Http => error
|
232
|
+
logger.warn "GenericFilesController::create_and_save_generic_file Caught RSOLR error #{error.inspect}"
|
233
|
+
save_tries+=1
|
234
|
+
# fail for good if the tries is greater than 3
|
235
|
+
rescue_action_without_handler(error) if save_tries >=3
|
236
|
+
sleep 0.01
|
237
|
+
retry
|
238
|
+
end
|
239
|
+
|
240
|
+
record_version_committer(@generic_file, current_user)
|
241
|
+
Sufia.queue.push(UnzipJob.new(@generic_file.pid)) if file.content_type == 'application/zip'
|
242
|
+
return @generic_file
|
243
|
+
end
|
244
|
+
end
|
245
|
+
end
|
data/lib/sufia/generic_file.rb
CHANGED
@@ -32,12 +32,13 @@ module Sufia
|
|
32
32
|
delegate_to :descMetadata, [:date_uploaded, :date_modified], :unique => true
|
33
33
|
delegate_to :descMetadata, [:related_url, :based_near, :part_of, :creator,
|
34
34
|
:contributor, :title, :tag, :description, :rights,
|
35
|
-
:publisher, :date_created, :subject,
|
35
|
+
:publisher, :date_created, :subject,
|
36
36
|
:resource_type, :identifier, :language]
|
37
37
|
around_save :characterize_if_changed, :retry_warming
|
38
38
|
|
39
39
|
#make sure the terms of service is present and set to 1 before saving
|
40
40
|
validates_acceptance_of :terms_of_service, :allow_nil => false
|
41
|
+
after_find :preset_terms
|
41
42
|
end
|
42
43
|
|
43
44
|
def pdf?
|
@@ -160,7 +161,7 @@ module Sufia
|
|
160
161
|
terms.each do |t|
|
161
162
|
next if t.empty?
|
162
163
|
key = t.to_s.split("generic_file__").last
|
163
|
-
next if ['part_of', 'date_modified', 'date_uploaded'
|
164
|
+
next if ['part_of', 'date_modified', 'date_uploaded'].include?(key)
|
164
165
|
values[key] = self.send(key) if self.respond_to?(key)
|
165
166
|
end
|
166
167
|
return values
|
@@ -173,26 +174,19 @@ module Sufia
|
|
173
174
|
return (!self.batch.status.empty?) && (self.batch.status.count == 1) && (self.batch.status[0] == "processing")
|
174
175
|
end
|
175
176
|
|
177
|
+
def preset_terms
|
178
|
+
self.terms_of_service = '1'
|
179
|
+
end
|
180
|
+
|
176
181
|
module ClassMethods
|
177
|
-
|
182
|
+
# TODO this could probably be better handled by i18n
|
183
|
+
@@FIELD_LABEL_MAP = {"based_near"=>"Location", 'description'=>"Abstract or Summary", 'tag'=>"Keyword", 'date_created'=>"Date Created", 'related_url'=>"Related URL"}
|
178
184
|
|
179
185
|
def get_label(key)
|
180
186
|
label = @@FIELD_LABEL_MAP[key]
|
181
187
|
label = key.gsub('_',' ').titleize if label.blank?
|
182
188
|
return label
|
183
189
|
end
|
184
|
-
|
185
|
-
# redefine find so that it sets the terms of service
|
186
|
-
def find(args, opts={})
|
187
|
-
gf = super
|
188
|
-
# use the field type to see if the return will be one item or multiple
|
189
|
-
if args.is_a? String
|
190
|
-
gf.terms_of_service = '1'
|
191
|
-
elsif gf.respond_to? :each
|
192
|
-
gf.each {|f| f.terms_of_service = '1'}
|
193
|
-
end
|
194
|
-
return gf
|
195
|
-
end
|
196
190
|
end
|
197
191
|
|
198
192
|
end
|
data/lib/sufia/version.rb
CHANGED
@@ -188,8 +188,7 @@ describe GenericFilesController do
|
|
188
188
|
|
189
189
|
describe "destroy" do
|
190
190
|
before(:each) do
|
191
|
-
GenericFile.
|
192
|
-
@generic_file = GenericFile.new
|
191
|
+
@generic_file = GenericFile.new(:terms_of_service => '1')
|
193
192
|
@generic_file.apply_depositor_metadata(@user.user_key)
|
194
193
|
@generic_file.save
|
195
194
|
@user = FactoryGirl.find_or_create(:user)
|
@@ -213,9 +212,8 @@ describe GenericFilesController do
|
|
213
212
|
|
214
213
|
describe "update" do
|
215
214
|
before do
|
216
|
-
GenericFile.any_instance.stub(:terms_of_service).and_return('1')
|
217
215
|
#controller.should_receive(:virus_check).and_return(0)
|
218
|
-
@generic_file = GenericFile.new
|
216
|
+
@generic_file = GenericFile.new(:terms_of_service=>'1')
|
219
217
|
@generic_file.apply_depositor_metadata(@user.user_key)
|
220
218
|
@generic_file.save
|
221
219
|
end
|
@@ -335,9 +333,8 @@ describe GenericFilesController do
|
|
335
333
|
end
|
336
334
|
|
337
335
|
describe "someone elses files" do
|
338
|
-
before
|
339
|
-
GenericFile.
|
340
|
-
f = GenericFile.new(:pid => 'sufia:test5')
|
336
|
+
before do
|
337
|
+
f = GenericFile.new(:pid => 'sufia:test5', :terms_of_service=> '1')
|
341
338
|
f.apply_depositor_metadata('archivist1@example.com')
|
342
339
|
f.set_title_and_label('world.png')
|
343
340
|
f.add_file_datastream(File.new(fixture_path + '/world.png'))
|
@@ -347,8 +344,8 @@ describe GenericFilesController do
|
|
347
344
|
f.save
|
348
345
|
@file = f
|
349
346
|
end
|
350
|
-
after
|
351
|
-
GenericFile.find('sufia:test5').
|
347
|
+
after do
|
348
|
+
GenericFile.find('sufia:test5').destroy
|
352
349
|
end
|
353
350
|
describe "edit" do
|
354
351
|
it "should give me a flash error" do
|
@@ -367,7 +364,6 @@ describe GenericFilesController do
|
|
367
364
|
end
|
368
365
|
end
|
369
366
|
describe "flash" do
|
370
|
-
render_views
|
371
367
|
it "should not let the user submit if they logout" do
|
372
368
|
sign_out @user
|
373
369
|
get :new
|
@@ -376,23 +372,17 @@ describe GenericFilesController do
|
|
376
372
|
flash[:alert].should include("You need to sign in or sign up before continuing")
|
377
373
|
end
|
378
374
|
it "should filter flash if they signin" do
|
379
|
-
request.env['warden'].stub(:user).and_return(@user)
|
380
|
-
sign_out @user
|
381
|
-
get :new
|
382
375
|
sign_in @user
|
383
376
|
get :show, id:"test5"
|
384
|
-
|
377
|
+
flash[:alert].should be_nil
|
385
378
|
end
|
386
379
|
describe "failing audit" do
|
387
|
-
|
380
|
+
render_views
|
381
|
+
before do
|
388
382
|
ActiveFedora::RelsExtDatastream.any_instance.stub(:dsChecksumValid).and_return(false)
|
389
383
|
@archivist = FactoryGirl.find_or_create(:archivist)
|
390
384
|
end
|
391
|
-
after(:all) do
|
392
|
-
@archivist.delete
|
393
|
-
end
|
394
385
|
it "should display failing audits" do
|
395
|
-
sign_out @user
|
396
386
|
sign_in @archivist
|
397
387
|
@ds = @file.datastreams.first
|
398
388
|
AuditJob.new(@file.pid, @ds[0], @ds[1].versionID).run
|