sufia-models 0.0.1

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 (67) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.md +177 -0
  5. data/README.md +29 -0
  6. data/Rakefile +1 -0
  7. data/app/models/batch.rb +46 -0
  8. data/app/models/checksum_audit_log.rb +35 -0
  9. data/app/models/contact_form.rb +42 -0
  10. data/app/models/datastreams/batch_rdf_datastream.rb +23 -0
  11. data/app/models/datastreams/file_content_datastream.rb +18 -0
  12. data/app/models/datastreams/fits_datastream.rb +188 -0
  13. data/app/models/datastreams/generic_file_rdf_datastream.rb +75 -0
  14. data/app/models/datastreams/paranoid_rights_datastream.rb +37 -0
  15. data/app/models/datastreams/properties_datastream.rb +33 -0
  16. data/app/models/domain_term.rb +18 -0
  17. data/app/models/follow.rb +28 -0
  18. data/app/models/generic_file.rb +16 -0
  19. data/app/models/geo_names_resource.rb +34 -0
  20. data/app/models/group.rb +8 -0
  21. data/app/models/local_authority.rb +93 -0
  22. data/app/models/local_authority_entry.rb +18 -0
  23. data/app/models/single_use_link.rb +26 -0
  24. data/app/models/subject_local_authority_entry.rb +16 -0
  25. data/app/models/trophy.rb +12 -0
  26. data/app/models/version_committer.rb +17 -0
  27. data/lib/sufia/models.rb +11 -0
  28. data/lib/sufia/models/active_fedora/redis.rb +49 -0
  29. data/lib/sufia/models/active_record/redis.rb +56 -0
  30. data/lib/sufia/models/engine.rb +34 -0
  31. data/lib/sufia/models/file_content.rb +9 -0
  32. data/lib/sufia/models/file_content/extract_metadata.rb +60 -0
  33. data/lib/sufia/models/file_content/versions.rb +23 -0
  34. data/lib/sufia/models/generic_file.rb +183 -0
  35. data/lib/sufia/models/generic_file/actions.rb +39 -0
  36. data/lib/sufia/models/generic_file/audit.rb +119 -0
  37. data/lib/sufia/models/generic_file/characterization.rb +81 -0
  38. data/lib/sufia/models/generic_file/export.rb +339 -0
  39. data/lib/sufia/models/generic_file/permissions.rb +64 -0
  40. data/lib/sufia/models/generic_file/thumbnail.rb +91 -0
  41. data/lib/sufia/models/id_service.rb +57 -0
  42. data/lib/sufia/models/jobs/audit_job.rb +65 -0
  43. data/lib/sufia/models/jobs/batch_update_job.rb +86 -0
  44. data/lib/sufia/models/jobs/characterize_job.rb +43 -0
  45. data/lib/sufia/models/jobs/content_delete_event_job.rb +31 -0
  46. data/lib/sufia/models/jobs/content_deposit_event_job.rb +32 -0
  47. data/lib/sufia/models/jobs/content_new_version_event_job.rb +32 -0
  48. data/lib/sufia/models/jobs/content_restored_version_event_job.rb +40 -0
  49. data/lib/sufia/models/jobs/content_update_event_job.rb +32 -0
  50. data/lib/sufia/models/jobs/event_job.rb +33 -0
  51. data/lib/sufia/models/jobs/ffmpeg_transcode_job.rb +61 -0
  52. data/lib/sufia/models/jobs/resolrize_job.rb +23 -0
  53. data/lib/sufia/models/jobs/transcode_audio_job.rb +40 -0
  54. data/lib/sufia/models/jobs/transcode_video_job.rb +39 -0
  55. data/lib/sufia/models/jobs/unzip_job.rb +54 -0
  56. data/lib/sufia/models/jobs/user_edit_profile_event_job.rb +35 -0
  57. data/lib/sufia/models/jobs/user_follow_event_job.rb +37 -0
  58. data/lib/sufia/models/jobs/user_unfollow_event_job.rb +38 -0
  59. data/lib/sufia/models/model_methods.rb +39 -0
  60. data/lib/sufia/models/noid.rb +42 -0
  61. data/lib/sufia/models/solr_document_behavior.rb +125 -0
  62. data/lib/sufia/models/user.rb +126 -0
  63. data/lib/sufia/models/utils.rb +36 -0
  64. data/lib/sufia/models/version.rb +5 -0
  65. data/lib/tasks/sufia-models_tasks.rake +4 -0
  66. data/sufia-models.gemspec +28 -0
  67. metadata +151 -0
@@ -0,0 +1,39 @@
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 'hydra/model_methods'
16
+ module Sufia
17
+ module ModelMethods
18
+ extend ActiveSupport::Concern
19
+
20
+ included do
21
+ include Hydra::ModelMethods
22
+ end
23
+
24
+ # OVERRIDE to support Hydra::Datastream::Properties which does not
25
+ # respond to :depositor_values but :depositor
26
+ # Adds metadata about the depositor to the asset
27
+ # Most important behavior: if the asset has a rightsMetadata datastream, this method will add +depositor_id+ to its individual edit permissions.
28
+
29
+ def apply_depositor_metadata(depositor_id)
30
+ rights_ds = self.datastreams["rightsMetadata"]
31
+ prop_ds = self.datastreams["properties"]
32
+
33
+ rights_ds.update_indexed_attributes([:edit_access, :person]=>depositor_id) unless rights_ds.nil?
34
+ prop_ds.depositor = depositor_id unless prop_ds.nil?
35
+
36
+ return true
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,42 @@
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 Noid
17
+ def Noid.noidify(identifier)
18
+ identifier.split(":").last
19
+ end
20
+
21
+ def Noid.namespaceize(identifier)
22
+ if identifier.start_with?(Noid.namespace)
23
+ identifier
24
+ else
25
+ "#{Noid.namespace}:#{identifier}"
26
+ end
27
+ end
28
+
29
+ def noid
30
+ Noid.noidify(self.pid)
31
+ end
32
+
33
+ def normalize_identifier
34
+ params[:id] = Noid.namespaceize(params[:id])
35
+ end
36
+
37
+ protected
38
+ def Noid.namespace
39
+ Sufia::Engine.config.id_namespace
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,125 @@
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
+ # -*- encoding : utf-8 -*-
16
+ module Sufia
17
+ module SolrDocumentBehavior
18
+ def title_or_label
19
+ title || label
20
+ end
21
+
22
+ ##
23
+ # Give our SolrDocument an ActiveModel::Naming appropriate route_key
24
+ def route_key
25
+ get(Solrizer.solr_name('has_model', :symbol)).split(':').last.downcase
26
+ end
27
+
28
+ ##
29
+ # Offer the source (ActiveFedora-based) model to Rails for some of the
30
+ # Rails methods (e.g. link_to).
31
+ # @example
32
+ # link_to '...', SolrDocument(:id => 'bXXXXXX5').new => <a href="/dams_object/bXXXXXX5">...</a>
33
+ def to_model
34
+ m = ActiveFedora::Base.load_instance_from_solr(id, self)
35
+ return self if m.class == ActiveFedora::Base
36
+ m
37
+ end
38
+
39
+ def noid
40
+ self[Solrizer.solr_name('noid', Sufia::GenericFile.noid_indexer)]
41
+ end
42
+
43
+ def date_uploaded
44
+ field = self[Solrizer.solr_name("desc_metadata__date_uploaded", :stored_sortable, type: :date)]
45
+ return unless field.present?
46
+ begin
47
+ Date.parse(field).to_formatted_s(:standard)
48
+ rescue
49
+ logger.info "Unable to parse date: #{field.first.inspect} for #{self['id']}"
50
+ end
51
+ end
52
+
53
+ def depositor(default = '')
54
+ val = Array(self[Solrizer.solr_name("depositor")]).first
55
+ val.present? ? val : default
56
+ end
57
+
58
+ def title
59
+ Array(self[Solrizer.solr_name('desc_metadata__title')]).first
60
+ end
61
+
62
+ def description
63
+ Array(self[Solrizer.solr_name('desc_metadata__description')]).first
64
+ end
65
+
66
+ def label
67
+ Array(self[Solrizer.solr_name('label')]).first
68
+ end
69
+
70
+ def file_format
71
+ Array(self[Solrizer.solr_name('file_format')]).first
72
+ end
73
+
74
+ def creator
75
+ Array(self[Solrizer.solr_name("desc_metadata__creator")]).first
76
+ end
77
+
78
+ def tags
79
+ Array(self[Solrizer.solr_name("desc_metadata__tag")])
80
+ end
81
+
82
+ def mime_type
83
+ Array(self[Solrizer.solr_name("mime_type")]).first
84
+ end
85
+
86
+ def read_groups
87
+ Array(self[Ability.read_group_field])
88
+ end
89
+
90
+ def edit_groups
91
+ Array(self[Ability.edit_group_field])
92
+ end
93
+
94
+ def edit_people
95
+ Array(self[Ability.edit_person_field])
96
+ end
97
+
98
+ def public?
99
+ read_groups.include?('public')
100
+ end
101
+
102
+ def registered?
103
+ read_groups.include?('registered')
104
+ end
105
+
106
+
107
+ def pdf?
108
+ ['application/pdf'].include? self.mime_type
109
+ end
110
+
111
+ def image?
112
+ ['image/png','image/jpeg', 'image/jpg', 'image/jp2', 'image/bmp', 'image/gif'].include? self.mime_type
113
+ end
114
+
115
+ def video?
116
+ ['video/mpeg', 'video/mp4', 'video/webm', 'video/x-msvideo', 'video/avi', 'video/quicktime', 'application/mxf'].include? self.mime_type
117
+ end
118
+
119
+ def audio?
120
+ # audio/x-wave is the mime type that fits 0.6.0 returns for a wav file.
121
+ # audio/mpeg is the mime type that fits 0.6.0 returns for an mp3 file.
122
+ ['audio/mp3', 'audio/mpeg', 'audio/x-wave', 'audio/x-wav', 'audio/ogg'].include? self.mime_type
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,126 @@
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::User
16
+ extend ActiveSupport::Concern
17
+
18
+ included do
19
+ # Adds acts_as_messageable for user mailboxes
20
+ include Mailboxer::Models::Messageable
21
+ # Connects this user object to Blacklight's Bookmarks and Folders.
22
+ include Blacklight::User
23
+ include Hydra::User
24
+
25
+ delegate :can?, :cannot?, :to => :ability
26
+
27
+ # set this up as a messageable object
28
+ acts_as_messageable
29
+
30
+ # Users should be able to follow things
31
+ acts_as_follower
32
+ # Users should be followable
33
+ acts_as_followable
34
+
35
+ # Setup accessible (or protected) attributes for your model
36
+ attr_accessible :email, :login, :display_name, :address, :admin_area, :department, :title, :office, :chat_id, :website, :affiliation, :telephone, :avatar,
37
+ :group_list, :groups_last_update, :facebook_handle, :twitter_handle, :googleplus_handle
38
+
39
+ # Add user avatar (via paperclip library)
40
+ has_attached_file :avatar, :styles => { medium: "300x300>", thumb: "100x100>" }, :default_url => '/assets/missing_:style.png'
41
+ validates :avatar, :attachment_content_type => { :content_type => /^image\/(jpg|jpeg|pjpeg|png|x-png|gif)$/ }, :if => Proc.new { |p| p.avatar.file? }
42
+ validates :avatar, :attachment_size => { :less_than => 2.megabytes }, :if => Proc.new { |p| p.avatar.file? }
43
+
44
+ end
45
+
46
+ # Format the json for select2 which requires just an id and a field called text.
47
+ # If we need an alternate format we should probably look at a json template gem
48
+ def as_json(opts = nil)
49
+ {id: user_key, text: display_name ? "#{display_name} (#{user_key})" : user_key}
50
+ end
51
+
52
+ def email_address
53
+ return self.email
54
+ end
55
+
56
+ def name
57
+ return self.display_name.titleize || self.user_key rescue self.user_key
58
+ end
59
+
60
+ # Redefine this for more intuitive keys in Redis
61
+ def to_param
62
+ # hack because rails doesn't like periods in urls.
63
+ user_key.gsub(/\./, '-dot-')
64
+ end
65
+
66
+ # method needed for trophies
67
+ def trophies
68
+ trophies = Trophy.where(:user_id => self.id)
69
+ return trophies
70
+ end
71
+
72
+ #method to get the trophy ids without the namespace included
73
+ def trophy_ids
74
+ trophies.map { |t| "#{Sufia::Engine.config.id_namespace}:#{t.generic_file_id}" }
75
+ end
76
+
77
+ # method needed for messaging
78
+ def mailboxer_email(obj=nil)
79
+ return nil
80
+ end
81
+
82
+ # The basic groups method, override or will fallback to Sufia::Ldap::User
83
+ def groups
84
+ return self.group_list ? self.group_list.split(";?;") : []
85
+ end
86
+
87
+ def ability
88
+ @ability ||= Ability.new(self)
89
+ end
90
+
91
+ module ClassMethods
92
+ def current
93
+ Thread.current[:user]
94
+ end
95
+
96
+ def current=(user)
97
+ Thread.current[:user] = user
98
+ end
99
+
100
+ # Override this method if you aren't using email/password
101
+ def audituser
102
+ User.find_by_user_key(audituser_key) || User.create!(Devise.authentication_keys.first => audituser_key, password: Devise.friendly_token[0,20])
103
+ end
104
+
105
+ # Override this method if you aren't using email as the userkey
106
+ def audituser_key
107
+ 'audituser@example.com'
108
+ end
109
+
110
+ # Override this method if you aren't using email/password
111
+ def batchuser
112
+ User.find_by_user_key(batchuser_key) || User.create!(Devise.authentication_keys.first => batchuser_key, password: Devise.friendly_token[0,20])
113
+ end
114
+
115
+ # Override this method if you aren't using email as the userkey
116
+ def batchuser_key
117
+ 'batchuser@example.com'
118
+ end
119
+
120
+ def from_url_component(component)
121
+ User.find_by_user_key(component.gsub(/-dot-/, '.'))
122
+ end
123
+
124
+ end
125
+
126
+ end
@@ -0,0 +1,36 @@
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 Utils
17
+ extend ActiveSupport::Concern
18
+
19
+ def retry_unless(number_of_tries, condition, &block)
20
+ self.class.retry_unless(number_of_tries, condition, &block)
21
+ end
22
+
23
+ module ClassMethods
24
+ def retry_unless(number_of_tries, condition, &block)
25
+ raise ArgumentError, "First argument must be an enumerator" unless number_of_tries.is_a? Enumerator
26
+ raise ArgumentError, "Second argument must be a lambda" unless condition.respond_to? :call
27
+ raise ArgumentError, "Must pass a block of code to retry" unless block_given?
28
+ number_of_tries.each do
29
+ result = block.call
30
+ return result unless condition.call
31
+ end
32
+ raise RuntimeError, "retry_unless could not complete successfully. Try upping the # of tries?"
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,5 @@
1
+ module Sufia
2
+ module Models
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :sufia-models do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'sufia/models/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "sufia-models"
8
+ spec.version = Sufia::Models::VERSION
9
+ spec.authors = [
10
+ "Jeremy Friesen",
11
+ ]
12
+ spec.email = [
13
+ "jeremy.n.friesen@gmail.com",
14
+ ]
15
+ spec.description = %q{Models and services for sufia}
16
+ spec.summary = %q{Models and services for sufia}
17
+ spec.homepage = "https://github.com/projecthydra/sufia-models"
18
+ spec.license = "Apache"
19
+
20
+ spec.files = `git ls-files`.split($/)
21
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
22
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
23
+ spec.require_paths = ["lib"]
24
+
25
+ spec.add_development_dependency "bundler", "~> 1.3"
26
+ spec.add_development_dependency "rake"
27
+ spec.add_dependency "rails", "~> 3.2.13"
28
+ end
metadata ADDED
@@ -0,0 +1,151 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sufia-models
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jeremy Friesen
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-05-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 3.2.13
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 3.2.13
55
+ description: Models and services for sufia
56
+ email:
57
+ - jeremy.n.friesen@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - .gitignore
63
+ - Gemfile
64
+ - LICENSE.md
65
+ - README.md
66
+ - Rakefile
67
+ - app/models/batch.rb
68
+ - app/models/checksum_audit_log.rb
69
+ - app/models/contact_form.rb
70
+ - app/models/datastreams/batch_rdf_datastream.rb
71
+ - app/models/datastreams/file_content_datastream.rb
72
+ - app/models/datastreams/fits_datastream.rb
73
+ - app/models/datastreams/generic_file_rdf_datastream.rb
74
+ - app/models/datastreams/paranoid_rights_datastream.rb
75
+ - app/models/datastreams/properties_datastream.rb
76
+ - app/models/domain_term.rb
77
+ - app/models/follow.rb
78
+ - app/models/generic_file.rb
79
+ - app/models/geo_names_resource.rb
80
+ - app/models/group.rb
81
+ - app/models/local_authority.rb
82
+ - app/models/local_authority_entry.rb
83
+ - app/models/single_use_link.rb
84
+ - app/models/subject_local_authority_entry.rb
85
+ - app/models/trophy.rb
86
+ - app/models/version_committer.rb
87
+ - lib/sufia/models.rb
88
+ - lib/sufia/models/active_fedora/redis.rb
89
+ - lib/sufia/models/active_record/redis.rb
90
+ - lib/sufia/models/engine.rb
91
+ - lib/sufia/models/file_content.rb
92
+ - lib/sufia/models/file_content/extract_metadata.rb
93
+ - lib/sufia/models/file_content/versions.rb
94
+ - lib/sufia/models/generic_file.rb
95
+ - lib/sufia/models/generic_file/actions.rb
96
+ - lib/sufia/models/generic_file/audit.rb
97
+ - lib/sufia/models/generic_file/characterization.rb
98
+ - lib/sufia/models/generic_file/export.rb
99
+ - lib/sufia/models/generic_file/permissions.rb
100
+ - lib/sufia/models/generic_file/thumbnail.rb
101
+ - lib/sufia/models/id_service.rb
102
+ - lib/sufia/models/jobs/audit_job.rb
103
+ - lib/sufia/models/jobs/batch_update_job.rb
104
+ - 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
+ - lib/sufia/models/jobs/ffmpeg_transcode_job.rb
112
+ - lib/sufia/models/jobs/resolrize_job.rb
113
+ - lib/sufia/models/jobs/transcode_audio_job.rb
114
+ - lib/sufia/models/jobs/transcode_video_job.rb
115
+ - 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
+ - lib/sufia/models/model_methods.rb
120
+ - lib/sufia/models/noid.rb
121
+ - lib/sufia/models/solr_document_behavior.rb
122
+ - lib/sufia/models/user.rb
123
+ - lib/sufia/models/utils.rb
124
+ - lib/sufia/models/version.rb
125
+ - lib/tasks/sufia-models_tasks.rake
126
+ - sufia-models.gemspec
127
+ homepage: https://github.com/projecthydra/sufia-models
128
+ licenses:
129
+ - Apache
130
+ metadata: {}
131
+ post_install_message:
132
+ rdoc_options: []
133
+ require_paths:
134
+ - lib
135
+ required_ruby_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - '>='
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ required_rubygems_version: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - '>='
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ requirements: []
146
+ rubyforge_project:
147
+ rubygems_version: 2.0.3
148
+ signing_key:
149
+ specification_version: 4
150
+ summary: Models and services for sufia
151
+ test_files: []