sufia-models 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 33db1fdd5e93067f20aa4aab56100ee6fe7c4531
4
- data.tar.gz: cbe0f59400bab96cfdb631aa889c85030e0f788d
3
+ metadata.gz: f3f270df659dfb48b395c515f70e0447c94504f7
4
+ data.tar.gz: d7db33a427da9b43b84e51e25ffc6fa2c3dbdd4a
5
5
  SHA512:
6
- metadata.gz: f40cc7480f96ab9605187d9f416f5476d5702869d77cfa9514c63e274aab8a566bd2c977fdcb4c648b84d2be69f743aa27c103bfac98cb88743779c8b87806b2
7
- data.tar.gz: 6109011aacbb53e69819c5f83c257ed97f1fbb5fdfc9ee4a5d29a864eb1516eec2c53c58b3e477e0b8722af62f828b70c9ed0c0690501e83b93149816495bcc2
6
+ metadata.gz: b76383a5af4b49c6bfd22e158233d0d51088cb3b1545b5dfafbde77827dcf6c662889fdf34bf01bfe46fc1406ef147009b2791d64c523fcee507cd8a5f910b67
7
+ data.tar.gz: d800eba8c79b73b29da94a8ab1928dee3bf883e1c07115ddec34b85186cc41dc77a22075e51fac85f4141daffa03013ccf1f1e6c716a5ebaa0fa59ddd22172ff
@@ -0,0 +1,4 @@
1
+ en:
2
+ sufia:
3
+ product_name: "ScholarSphere"
4
+ institution_name: "Penn State"
data/lib/sufia/models.rb CHANGED
@@ -1,11 +1,39 @@
1
1
  require "sufia/models/version"
2
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'
3
12
 
4
13
  module Sufia
14
+ extend ActiveSupport::Autoload
15
+
5
16
  module Models
17
+
6
18
  extend ActiveSupport::Autoload
7
19
 
8
- autoload :Resque, 'models/queue/resque'
9
- autoload :User, 'models/user'
20
+ autoload :Resque, 'sufia/models/queue/resque'
21
+ autoload :User, 'sufia/models/user'
22
+ end
23
+
24
+ autoload :Resque, 'sufia/models/resque'
25
+
26
+ attr_writer :queue
27
+
28
+ def self.queue
29
+ @queue ||= config.queue.new('sufia')
30
+ end
31
+
32
+ def self.config(&block)
33
+ @@config ||= Sufia::Models::Engine::Configuration.new
34
+
35
+ yield @@config if block
36
+
37
+ return @@config
10
38
  end
11
39
  end
@@ -0,0 +1,22 @@
1
+ ### This patch is going into active-support (rails 4). https://github.com/rails/rails/pull/8246
2
+ module Marshal
3
+ class << self
4
+ def load_with_autoloading(source)
5
+ begin
6
+ load_without_autoloading(source)
7
+ rescue ArgumentError, NameError => exc
8
+ if exc.message.match(%r|undefined class/module (.+)|)
9
+ # try loading the class/module
10
+ $1.constantize
11
+ # if it is a IO we need to go back to read the object
12
+ source.rewind if source.respond_to?(:rewind)
13
+ retry
14
+ else
15
+ raise exc
16
+ end
17
+ end
18
+ end
19
+
20
+ alias_method_chain :load, :autoloading
21
+ end
22
+ end
@@ -1,15 +1,21 @@
1
- module Curate
1
+ module Sufia
2
2
  module Models
3
+ def self.config(&block)
4
+ @@config ||= Engine::Configuration.new
5
+
6
+ yield @@config if block
7
+
8
+ return @@config
9
+ end
10
+
3
11
  class Engine < ::Rails::Engine
4
12
  config.autoload_paths += %W(
5
13
  #{config.root}/lib/sufia/models/jobs
6
14
  )
7
- initializer "Patch active_fedora" do
15
+ initializer "patches" do
8
16
  require 'sufia/models/active_fedora/redis'
9
- end
10
-
11
- initializer "Patch active_record" do
12
17
  require 'sufia/models/active_record/redis'
18
+ require 'sufia/models/active_support/core_ext/marshal'
13
19
  end
14
20
 
15
21
  initializer 'requires' do
@@ -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
@@ -70,7 +70,7 @@ module Sufia
70
70
  end
71
71
 
72
72
  def persistent_url
73
- "#{Sufia::Engine.config.persistent_hostpath}#{noid}"
73
+ "#{Sufia.config.persistent_hostpath}#{noid}"
74
74
  end
75
75
 
76
76
  def retry_warming
@@ -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,9 @@ 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
38
41
  end
39
42
  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
@@ -43,7 +43,7 @@ module Sufia
43
43
  # Populate descMetadata with fields from FITS (e.g. Author from pdfs)
44
44
  def append_metadata
45
45
  terms = self.characterization_terms
46
- Sufia::Engine.config.fits_to_desc_mapping.each_pair do |k, v|
46
+ Sufia.config.fits_to_desc_mapping.each_pair do |k, v|
47
47
  if terms.has_key?(k)
48
48
  # coerce to array to remove a conditional
49
49
  terms[k] = [terms[k]] unless terms[k].is_a? Array
@@ -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
@@ -16,9 +16,10 @@ require 'noid'
16
16
 
17
17
  module Sufia
18
18
  module IdService
19
- @minter = ::Noid::Minter.new(:template => '.reeddeeddk')
19
+ @template = Sufia.config.noid_template rescue '.reeddeeddk'
20
+ @minter = ::Noid::Minter.new(:template => @template)
20
21
  @pid = $$
21
- @namespace = Sufia::Engine.config.id_namespace
22
+ @namespace = Sufia.config.id_namespace
22
23
  @semaphore = Mutex.new
23
24
  def self.valid?(identifier)
24
25
  # remove the fedora namespace since it's not part of the noid
@@ -41,7 +42,7 @@ module Sufia
41
42
  File.open("tmp/minter-state", File::RDWR|File::CREAT, 0644) {|f|
42
43
  f.flock(File::LOCK_EX)
43
44
  yaml = YAML::load(f.read)
44
- yaml = {:template => '.reeddeeddk'} unless yaml
45
+ yaml = {:template => @template} unless yaml
45
46
  minter = ::Noid::Minter.new(yaml)
46
47
  pid = "#{@namespace}:#{minter.mint}"
47
48
  f.rewind
@@ -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
 
@@ -36,7 +36,7 @@ module Sufia
36
36
 
37
37
  protected
38
38
  def Noid.namespace
39
- Sufia::Engine.config.id_namespace
39
+ Sufia.config.id_namespace
40
40
  end
41
41
  end
42
42
  end
@@ -0,0 +1,28 @@
1
+ # Borrowed from:
2
+ # https://github.com/jeremy/resque-rails/blob/master/lib/resque/rails/queue.rb
3
+ module Sufia
4
+ module Resque
5
+ class Queue
6
+ attr_reader :default_queue_name
7
+
8
+ def initialize(default_queue_name)
9
+ @default_queue_name = default_queue_name
10
+ end
11
+
12
+ def push(job)
13
+ queue = job.respond_to?(:queue_name) ? job.queue_name : default_queue_name
14
+ begin
15
+ ::Resque.enqueue_to queue, MarshaledJob, Base64.encode64(Marshal.dump(job))
16
+ rescue Redis::CannotConnectError
17
+ logger.error "Redis is down!"
18
+ end
19
+ end
20
+ end
21
+
22
+ class MarshaledJob
23
+ def self.perform(marshaled_job)
24
+ Marshal.load(Base64.decode64(marshaled_job)).run
25
+ end
26
+ end
27
+ end
28
+ end
@@ -71,7 +71,7 @@ module Sufia::User
71
71
 
72
72
  #method to get the trophy ids without the namespace included
73
73
  def trophy_ids
74
- trophies.map { |t| "#{Sufia::Engine.config.id_namespace}:#{t.generic_file_id}" }
74
+ trophies.map { |t| "#{Sufia.config.id_namespace}:#{t.generic_file_id}" }
75
75
  end
76
76
 
77
77
  # method needed for messaging
@@ -1,5 +1,5 @@
1
1
  module Sufia
2
2
  module Models
3
- VERSION = "0.0.2"
3
+ VERSION = "0.1.0"
4
4
  end
5
5
  end
data/sufia-models.gemspec CHANGED
@@ -28,4 +28,17 @@ Gem::Specification.new do |spec|
28
28
  spec.add_development_dependency "bundler", "~> 1.3"
29
29
  spec.add_development_dependency "rake"
30
30
  spec.add_dependency "rails", "~> 3.2.13"
31
+ spec.add_dependency 'hydra-head', '~> 6.0'
32
+ spec.add_dependency 'nest', '~> 1.1.1'
33
+ spec.add_dependency 'resque', '~> 1.23.0'#, :require => 'resque/server'
34
+ spec.add_dependency 'resque-pool', '0.3.0'
35
+ spec.add_dependency 'noid', '~> 0.6.6'
36
+ spec.add_dependency 'mailboxer', '0.8.0'
37
+ spec.add_dependency 'acts_as_follower', '0.1.1'
38
+ spec.add_dependency 'rmagick'
39
+ spec.add_dependency 'paperclip', '3.3.0'
40
+ spec.add_dependency 'zipruby', '0.3.6'
41
+ spec.add_dependency 'activerecord-import', '0.3.0' # 0.3.1 caused a bug in testing: "SQLite3::SQLException: near ",": syntax error: INSERT INTO..."
42
+ spec.add_dependency 'devise'
43
+
31
44
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sufia-models
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Friesen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-15 00:00:00.000000000 Z
11
+ date: 2013-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,174 @@ dependencies:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: 3.2.13
55
+ - !ruby/object:Gem::Dependency
56
+ name: hydra-head
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '6.0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '6.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: nest
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: 1.1.1
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: 1.1.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: resque
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 1.23.0
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: 1.23.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: resque-pool
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '='
102
+ - !ruby/object:Gem::Version
103
+ version: 0.3.0
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 0.3.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: noid
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 0.6.6
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ~>
123
+ - !ruby/object:Gem::Version
124
+ version: 0.6.6
125
+ - !ruby/object:Gem::Dependency
126
+ name: mailboxer
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '='
130
+ - !ruby/object:Gem::Version
131
+ version: 0.8.0
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '='
137
+ - !ruby/object:Gem::Version
138
+ version: 0.8.0
139
+ - !ruby/object:Gem::Dependency
140
+ name: acts_as_follower
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '='
144
+ - !ruby/object:Gem::Version
145
+ version: 0.1.1
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '='
151
+ - !ruby/object:Gem::Version
152
+ version: 0.1.1
153
+ - !ruby/object:Gem::Dependency
154
+ name: rmagick
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: paperclip
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - '='
172
+ - !ruby/object:Gem::Version
173
+ version: 3.3.0
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - '='
179
+ - !ruby/object:Gem::Version
180
+ version: 3.3.0
181
+ - !ruby/object:Gem::Dependency
182
+ name: zipruby
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - '='
186
+ - !ruby/object:Gem::Version
187
+ version: 0.3.6
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - '='
193
+ - !ruby/object:Gem::Version
194
+ version: 0.3.6
195
+ - !ruby/object:Gem::Dependency
196
+ name: activerecord-import
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - '='
200
+ - !ruby/object:Gem::Version
201
+ version: 0.3.0
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - '='
207
+ - !ruby/object:Gem::Version
208
+ version: 0.3.0
209
+ - !ruby/object:Gem::Dependency
210
+ name: devise
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - '>='
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :runtime
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - '>='
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
55
223
  description: Models and services for sufia
56
224
  email:
57
225
  - jeremy.n.friesen@gmail.com
@@ -66,7 +234,6 @@ files:
66
234
  - Rakefile
67
235
  - app/models/batch.rb
68
236
  - app/models/checksum_audit_log.rb
69
- - app/models/contact_form.rb
70
237
  - app/models/datastreams/batch_rdf_datastream.rb
71
238
  - app/models/datastreams/file_content_datastream.rb
72
239
  - app/models/datastreams/fits_datastream.rb
@@ -84,9 +251,11 @@ files:
84
251
  - app/models/subject_local_authority_entry.rb
85
252
  - app/models/trophy.rb
86
253
  - app/models/version_committer.rb
254
+ - config/locales/sufia.en.yml
87
255
  - lib/sufia/models.rb
88
256
  - lib/sufia/models/active_fedora/redis.rb
89
257
  - lib/sufia/models/active_record/redis.rb
258
+ - lib/sufia/models/active_support/core_ext/marshal.rb
90
259
  - lib/sufia/models/engine.rb
91
260
  - lib/sufia/models/file_content.rb
92
261
  - lib/sufia/models/file_content/extract_metadata.rb
@@ -102,22 +271,14 @@ files:
102
271
  - lib/sufia/models/jobs/audit_job.rb
103
272
  - lib/sufia/models/jobs/batch_update_job.rb
104
273
  - lib/sufia/models/jobs/characterize_job.rb
105
- - lib/sufia/models/jobs/content_delete_event_job.rb
106
- - lib/sufia/models/jobs/content_deposit_event_job.rb
107
- - lib/sufia/models/jobs/content_new_version_event_job.rb
108
- - lib/sufia/models/jobs/content_restored_version_event_job.rb
109
- - lib/sufia/models/jobs/content_update_event_job.rb
110
- - lib/sufia/models/jobs/event_job.rb
111
274
  - lib/sufia/models/jobs/ffmpeg_transcode_job.rb
112
275
  - lib/sufia/models/jobs/resolrize_job.rb
113
276
  - lib/sufia/models/jobs/transcode_audio_job.rb
114
277
  - lib/sufia/models/jobs/transcode_video_job.rb
115
278
  - lib/sufia/models/jobs/unzip_job.rb
116
- - lib/sufia/models/jobs/user_edit_profile_event_job.rb
117
- - lib/sufia/models/jobs/user_follow_event_job.rb
118
- - lib/sufia/models/jobs/user_unfollow_event_job.rb
119
279
  - lib/sufia/models/model_methods.rb
120
280
  - lib/sufia/models/noid.rb
281
+ - lib/sufia/models/resque.rb
121
282
  - lib/sufia/models/solr_document_behavior.rb
122
283
  - lib/sufia/models/user.rb
123
284
  - lib/sufia/models/utils.rb
@@ -1,42 +0,0 @@
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
- require 'mail_form'
16
-
17
- class ContactForm < MailForm::Base
18
- ISSUE_TYPES = [
19
- ["Depositing content", "Depositing content"],
20
- ["Making changes to my content", "Making changes to my content"],
21
- ["Browsing and searching", "Browsing and searching"],
22
- ["Reporting a problem", "Reporting a problem"],
23
- ["General inquiry or request", "General inquiry or request"]
24
- ]
25
- attribute :contact_method, :captcha => true
26
- attribute :category, :validate => true
27
- attribute :name, :validate => true
28
- attribute :email, :validate => /\A([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})\z/i
29
- attribute :subject, :validate => true
30
- attribute :message, :validate => true
31
- # - can't use this without ActiveRecord::Base validates_inclusion_of :issue_type, :in => ISSUE_TYPES
32
-
33
- # Declare the e-mail headers. It accepts anything the mail method
34
- # in ActionMailer accepts.
35
- def headers
36
- {
37
- :subject => "Contact Form:#{subject}",
38
- :to => Sufia::Engine.config.contact_email,
39
- :from => Sufia::Engine.config.from_email
40
- }
41
- end
42
- end
@@ -1,31 +0,0 @@
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
- class ContentDeleteEventJob < EventJob
16
-
17
-
18
- def run
19
- action = "User #{link_to_profile depositor_id} has deleted file '#{generic_file_id}'"
20
- timestamp = Time.now.to_i
21
- depositor = User.find_by_user_key(depositor_id)
22
- # Create the event
23
- event = depositor.create_event(action, timestamp)
24
- # Log the event to the depositor's profile stream
25
- depositor.log_profile_event(event)
26
- # Fan out the event to all followers
27
- depositor.followers.each do |follower|
28
- follower.log_event(event)
29
- end
30
- end
31
- end
@@ -1,32 +0,0 @@
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
- class ContentDepositEventJob < EventJob
16
- def run
17
- gf = GenericFile.find(generic_file_id)
18
- action = "User #{link_to_profile depositor_id} has deposited #{link_to gf.title.first, Sufia::Engine.routes.url_helpers.generic_file_path(gf.noid)}"
19
- timestamp = Time.now.to_i
20
- depositor = User.find_by_user_key(depositor_id)
21
- # Create the event
22
- event = depositor.create_event(action, timestamp)
23
- # Log the event to the depositor's profile stream
24
- depositor.log_profile_event(event)
25
- # Log the event to the GF's stream
26
- gf.log_event(event)
27
- # Fan out the event to all followers who have access
28
- depositor.followers.select { |user| user.can? :read, gf }.each do |follower|
29
- follower.log_event(event)
30
- end
31
- end
32
- end
@@ -1,32 +0,0 @@
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
- class ContentNewVersionEventJob < EventJob
16
- def run
17
- gf = GenericFile.find(generic_file_id)
18
- action = "User #{link_to_profile depositor_id} has added a new version of #{link_to gf.title.first, Sufia::Engine.routes.url_helpers.generic_file_path(gf.noid)}"
19
- timestamp = Time.now.to_i
20
- depositor = User.find_by_user_key(depositor_id)
21
- # Create the event
22
- event = depositor.create_event(action, timestamp)
23
- # Log the event to the depositor's profile stream
24
- depositor.log_profile_event(event)
25
- # Log the event to the GF's stream
26
- gf.log_event(event)
27
- # Fan out the event to all followers who have access
28
- depositor.followers.select { |user| user.can? :read, gf }.each do |follower|
29
- follower.log_event(event)
30
- end
31
- end
32
- end
@@ -1,40 +0,0 @@
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
- class ContentRestoredVersionEventJob < EventJob
16
- attr_accessor :revision_id
17
-
18
- def initialize(generic_file_id, depositor_id, revision_id)
19
- self.generic_file_id = generic_file_id
20
- self.depositor_id = depositor_id
21
- self.revision_id = revision_id
22
- end
23
-
24
- def run
25
- gf = GenericFile.find(generic_file_id)
26
- action = "User #{link_to_profile depositor_id} has restored a version '#{revision_id}' of #{link_to gf.title.first, Sufia::Engine.routes.url_helpers.generic_file_path(gf.noid)}"
27
- timestamp = Time.now.to_i
28
- depositor = User.find_by_user_key(depositor_id)
29
- # Create the event
30
- event = depositor.create_event(action, timestamp)
31
- # Log the event to the depositor's profile stream
32
- depositor.log_profile_event(event)
33
- # Log the event to the GF's stream
34
- gf.log_event(event)
35
- # Fan out the event to all followers who have access
36
- depositor.followers.select { |user| user.can? :read, gf }.each do |follower|
37
- follower.log_event(event)
38
- end
39
- end
40
- end
@@ -1,32 +0,0 @@
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
- class ContentUpdateEventJob < EventJob
16
- def run
17
- gf = GenericFile.find(generic_file_id)
18
- action = "User #{link_to_profile depositor_id} has updated #{link_to gf.title.first, Sufia::Engine.routes.url_helpers.generic_file_path(gf.noid)}"
19
- timestamp = Time.now.to_i
20
- depositor = User.find_by_user_key(depositor_id)
21
- # Create the event
22
- event = depositor.create_event(action, timestamp)
23
- # Log the event to the depositor's profile stream
24
- depositor.log_profile_event(event)
25
- # Log the event to the GF's stream
26
- gf.log_event(event)
27
- # Fan out the event to all followers who have access
28
- depositor.followers.select { |user| user.can? :read, gf }.each do |follower|
29
- follower.log_event(event)
30
- end
31
- end
32
- end
@@ -1,33 +0,0 @@
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
- class EventJob
16
- include Rails.application.routes.url_helpers
17
- include ActionView::Helpers
18
- include ActionView::Helpers::DateHelper
19
- include Hydra::AccessControlsEnforcement
20
- include SufiaHelper
21
-
22
- def queue_name
23
- :event
24
- end
25
-
26
- attr_accessor :generic_file_id, :depositor_id
27
-
28
- def initialize(generic_file_id, depositor_id)
29
- self.generic_file_id = generic_file_id
30
- self.depositor_id = depositor_id
31
- end
32
-
33
- end
@@ -1,35 +0,0 @@
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
- class UserEditProfileEventJob < EventJob
16
- attr_accessor :editor_id
17
-
18
- def initialize(editor_id)
19
- self.editor_id = editor_id
20
- end
21
-
22
- def run
23
- action = "User #{link_to_profile editor_id} has edited his or her profile"
24
- timestamp = Time.now.to_i
25
- editor = User.find_by_user_key(editor_id)
26
- # Create the event
27
- event = editor.create_event(action, timestamp)
28
- # Log the event to the editor's stream
29
- editor.log_event(event)
30
- # Fan out the event to all followers
31
- editor.followers.each do |user|
32
- user.log_event(event)
33
- end
34
- end
35
- end
@@ -1,37 +0,0 @@
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
- class UserFollowEventJob < EventJob
16
- attr_accessor :follower_id, :followee_id
17
-
18
- def initialize(follower_id, followee_id)
19
- self.follower_id = follower_id
20
- self.followee_id = followee_id
21
- end
22
-
23
- def run
24
- # Create the event
25
- follower = User.find_by_user_key(follower_id)
26
- event = follower.create_event("User #{link_to_profile follower_id} is now following #{link_to_profile followee_id}", Time.now.to_i)
27
- # Log the event to the follower's stream
28
- follower.log_event(event)
29
- # Fan out the event to followee
30
- followee = User.find_by_user_key(followee_id)
31
- followee.log_event(event)
32
- # Fan out the event to all followers
33
- follower.followers.each do |user|
34
- user.log_event(event)
35
- end
36
- end
37
- end
@@ -1,38 +0,0 @@
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
- class UserUnfollowEventJob < EventJob
16
- attr_accessor :unfollower_id, :unfollowee_id
17
-
18
- def initialize(unfollower_id, unfollowee_id)
19
- self.unfollower_id = unfollower_id
20
- self.unfollowee_id = unfollowee_id
21
- end
22
- def run
23
- action = "User #{link_to_profile unfollower_id} has unfollowed #{link_to_profile unfollowee_id}"
24
- timestamp = Time.now.to_i
25
- unfollower = User.find_by_user_key(unfollower_id)
26
- # Create the event
27
- event = unfollower.create_event(action, timestamp)
28
- # Log the event to the unfollower's stream
29
- unfollower.log_event(event)
30
- # Fan out the event to unfollowee
31
- unfollowee = User.find_by_user_key(unfollowee_id)
32
- unfollowee.log_event(event)
33
- # Fan out the event to all followers
34
- unfollower.followers.each do |user|
35
- user.log_event(event)
36
- end
37
- end
38
- end