sufia-models 4.3.1 → 5.0.0.beta1

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 (58) hide show
  1. checksums.yaml +4 -4
  2. data/app/actors/sufia/generic_file/actor.rb +7 -10
  3. data/app/jobs/active_fedora_pid_based_job.rb +2 -3
  4. data/app/jobs/audit_job.rb +28 -31
  5. data/app/jobs/batch_update_job.rb +9 -8
  6. data/app/jobs/import_url_job.rb +2 -2
  7. data/app/models/batch.rb +11 -12
  8. data/app/models/checksum_audit_log.rb +7 -8
  9. data/app/models/concerns/sufia/ability.rb +4 -6
  10. data/app/models/concerns/sufia/collection.rb +4 -5
  11. data/app/models/concerns/sufia/file_stat_utils.rb +3 -3
  12. data/app/models/concerns/sufia/generic_file.rb +16 -14
  13. data/app/models/concerns/sufia/generic_file/audit.rb +50 -31
  14. data/app/models/concerns/sufia/generic_file/characterization.rb +3 -3
  15. data/app/models/concerns/sufia/generic_file/derivatives.rb +5 -5
  16. data/app/models/concerns/sufia/generic_file/full_text_indexing.rb +2 -2
  17. data/app/models/concerns/sufia/generic_file/metadata.rb +82 -11
  18. data/app/models/concerns/sufia/generic_file/proxy_deposit.rb +12 -3
  19. data/app/models/concerns/sufia/generic_file/versions.rb +1 -4
  20. data/app/models/concerns/sufia/generic_file/web_form.rb +13 -6
  21. data/app/models/concerns/sufia/model_methods.rb +11 -9
  22. data/app/models/concerns/sufia/user.rb +11 -28
  23. data/app/models/datastreams/file_content_datastream.rb +1 -1
  24. data/app/models/datastreams/fits_datastream.rb +1 -1
  25. data/app/models/file_download_stat.rb +2 -2
  26. data/app/models/file_usage.rb +5 -9
  27. data/app/models/file_view_stat.rb +2 -2
  28. data/app/models/local_authority.rb +2 -2
  29. data/app/models/proxy_deposit_request.rb +1 -1
  30. data/app/services/sufia/id_service.rb +5 -5
  31. data/app/services/sufia/noid.rb +10 -7
  32. data/lib/generators/sufia/models/cached_stats_generator.rb +31 -2
  33. data/lib/generators/sufia/models/install_generator.rb +31 -11
  34. data/lib/generators/sufia/models/proxies_generator.rb +31 -2
  35. data/lib/generators/sufia/models/templates/config/sufia.rb +10 -3
  36. data/lib/generators/sufia/models/upgrade400_generator.rb +33 -2
  37. data/lib/sufia/models/engine.rb +13 -4
  38. data/lib/sufia/models/file_content/versions.rb +12 -8
  39. data/lib/sufia/models/version.rb +1 -1
  40. data/lib/sufia/permissions/writable.rb +34 -16
  41. data/sufia-models.gemspec +4 -2
  42. metadata +91 -79
  43. data/app/models/concerns/sufia/generic_file/reload_on_save.rb +0 -18
  44. data/app/models/concerns/sufia/properties_datastream_behavior.rb +0 -32
  45. data/app/models/concerns/sufia/user_usage_stats.rb +0 -15
  46. data/app/models/datastreams/batch_rdf_datastream.rb +0 -6
  47. data/app/models/datastreams/generic_file_rdf_datastream.rb +0 -69
  48. data/app/models/datastreams/paranoid_rights_datastream.rb +0 -22
  49. data/app/models/datastreams/properties_datastream.rb +0 -4
  50. data/app/models/sufia/orcid_validator.rb +0 -8
  51. data/app/models/user_stat.rb +0 -2
  52. data/lib/generators/sufia/models/abstract_migration_generator.rb +0 -30
  53. data/lib/generators/sufia/models/orcid_field_generator.rb +0 -19
  54. data/lib/generators/sufia/models/templates/migrations/add_orcid_to_users.rb +0 -5
  55. data/lib/generators/sufia/models/templates/migrations/create_user_stats.rb +0 -19
  56. data/lib/generators/sufia/models/user_stats_generator.rb +0 -31
  57. data/lib/sufia/models/stats/user_stat_importer.rb +0 -85
  58. data/lib/tasks/stats_tasks.rake +0 -12
@@ -9,10 +9,10 @@ class LocalAuthority < ActiveRecord::Base
9
9
  return unless self.where(name: name).empty?
10
10
  authority = self.create(name: name)
11
11
  format = opts.fetch(:format, :ntriples)
12
- predicate = opts.fetch(:predicate, RDF::SKOS.prefLabel)
12
+ predicate = opts.fetch(:predicate, ::RDF::SKOS.prefLabel)
13
13
  entries = []
14
14
  sources.each do |uri|
15
- RDF::Reader.open(uri, format: format) do |reader|
15
+ ::RDF::Reader.open(uri, format: format) do |reader|
16
16
  reader.each_statement do |statement|
17
17
  if statement.predicate == predicate
18
18
  entries << LocalAuthorityEntry.new(local_authority: authority,
@@ -78,7 +78,7 @@ class ProxyDepositRequest < ActiveRecord::Base
78
78
 
79
79
  def title
80
80
  return 'file not found' if deleted_file?
81
- query = ActiveFedora::SolrService.construct_query_for_pids([pid])
81
+ query = ActiveFedora::SolrQueryBuilder.construct_query_for_ids([pid])
82
82
  solr_response = ActiveFedora::SolrService.query(query, raw: true)
83
83
  SolrDocument.new(solr_response['response']['docs'].first, solr_response).title
84
84
  end
@@ -9,11 +9,11 @@ module Sufia
9
9
 
10
10
  @minter = ::Noid::Minter.new(template: noid_template)
11
11
  @pid = $$
12
- @namespace = Sufia.config.id_namespace
12
+ #@namespace = Sufia.config.id_namespace
13
13
  @semaphore = Mutex.new
14
14
  def self.valid?(identifier)
15
15
  # remove the fedora namespace since it's not part of the noid
16
- noid = identifier.split(":").last
16
+ noid = identifier#.split(":").last
17
17
  return @minter.valid? noid
18
18
  end
19
19
  def self.mint
@@ -28,20 +28,20 @@ module Sufia
28
28
  protected
29
29
 
30
30
  def self.next_id
31
- pid = ''
31
+ id = ''
32
32
  File.open(Sufia.config.minter_statefile, File::RDWR|File::CREAT, 0644) do |f|
33
33
  f.flock(File::LOCK_EX)
34
34
  yaml = YAML::load(f.read)
35
35
  yaml = {template: noid_template} unless yaml
36
36
  minter = ::Noid::Minter.new(yaml)
37
- pid = "#{@namespace}:#{minter.mint}"
37
+ id = minter.mint
38
38
  f.rewind
39
39
  yaml = YAML::dump(minter.dump)
40
40
  f.write yaml
41
41
  f.flush
42
42
  f.truncate(f.pos)
43
43
  end
44
- return pid
44
+ id
45
45
  end
46
46
  end
47
47
  end
@@ -2,16 +2,14 @@ module Sufia
2
2
  module Noid
3
3
  extend ActiveSupport::Concern
4
4
 
5
- module ClassMethods
6
- ## This overrides the default behavior, which is to ask Fedora for a pid
7
- # @see ActiveFedora::Sharding.assign_pid
8
- def assign_pid(_)
9
- Sufia::IdService.mint
10
- end
5
+ ## This overrides the default behavior, which is to ask Fedora for a pid
6
+ # @see ActiveFedora::Sharding.assign_pid
7
+ def assign_pid
8
+ Sufia::IdService.mint
11
9
  end
12
10
 
13
11
  def noid
14
- Noid.noidify(self.pid)
12
+ Noid.noidify(id)
15
13
  end
16
14
 
17
15
  # Redefine this for more intuitive keys in Redis
@@ -24,6 +22,11 @@ module Sufia
24
22
  String(identifier).split(":").last
25
23
  end
26
24
 
25
+ # Create a pairtree like path for the given identifier
26
+ def treeify(identifier)
27
+ (identifier.scan(/..?/).first(4) + [identifier]).join('/')
28
+ end
29
+
27
30
  def namespaceize(identifier)
28
31
  return identifier if identifier.include?(':')
29
32
  "#{namespace}:#{identifier}"
@@ -1,12 +1,30 @@
1
- require_relative 'abstract_migration_generator'
1
+ # -*- encoding : utf-8 -*-
2
+ require 'rails/generators'
3
+ require 'rails/generators/migration'
4
+
5
+ class Sufia::Models::CachedStatsGenerator < Rails::Generators::Base
6
+ include Rails::Generators::Migration
2
7
 
3
- class Sufia::Models::CachedStatsGenerator < Sufia::Models::AbstractMigrationGenerator
4
8
  source_root File.expand_path('../templates', __FILE__)
5
9
 
6
10
  desc """
7
11
  This generator adds the ability to cache usage stats to your application:
8
12
  1. Creates several database migrations if they do not exist in /db/migrate
9
13
  """
14
+ # Implement the required interface for Rails::Generators::Migration.
15
+ # taken from http://github.com/rails/rails/blob/master/activerecord/lib/generators/active_record.rb
16
+ def self.next_migration_number(path)
17
+ if @prev_migration_nr
18
+ @prev_migration_nr += 1
19
+ else
20
+ if last_migration = Dir[File.join(path, '*.rb')].sort.last
21
+ @prev_migration_nr = last_migration.sub(File.join(path, '/'), '').to_i + 1
22
+ else
23
+ @prev_migration_nr = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i
24
+ end
25
+ end
26
+ @prev_migration_nr.to_s
27
+ end
10
28
 
11
29
  def banner
12
30
  say_status("warning", "ADDING STATS CACHING-RELATED SUFIA MODELS", :yellow)
@@ -14,6 +32,7 @@ This generator adds the ability to cache usage stats to your application:
14
32
 
15
33
  # Setup the database migrations
16
34
  def copy_migrations
35
+ # Can't get this any more DRY, because we need this order.
17
36
  [
18
37
  'create_file_view_stats.rb',
19
38
  'create_file_download_stats.rb'
@@ -21,4 +40,14 @@ This generator adds the ability to cache usage stats to your application:
21
40
  better_migration_template file
22
41
  end
23
42
  end
43
+
44
+ private
45
+
46
+ def better_migration_template(file)
47
+ begin
48
+ migration_template "migrations/#{file}", "db/migrate/#{file}"
49
+ rescue Rails::Generators::Error => e
50
+ say_status("warning", e.message, :yellow)
51
+ end
52
+ end
24
53
  end
@@ -1,7 +1,12 @@
1
- require_relative 'abstract_migration_generator'
1
+ # -*- encoding : utf-8 -*-
2
+ require 'rails/generators'
3
+ require 'rails/generators/migration'
4
+
5
+ class Sufia::Models::InstallGenerator < Rails::Generators::Base
6
+ include Rails::Generators::Migration
2
7
 
3
- class Sufia::Models::InstallGenerator < Sufia::Models::AbstractMigrationGenerator
4
8
  source_root File.expand_path('../templates', __FILE__)
9
+
5
10
  argument :model_name, type: :string , default: "user"
6
11
  desc """
7
12
  This generator makes the following changes to your application:
@@ -14,15 +19,30 @@ This generator makes the following changes to your application:
14
19
  7. Runs full-text generator
15
20
  8. Runs proxies generator
16
21
  9. Runs cached stats generator
17
- 10. Runs ORCID field generator
18
- 11. Runs user stats generator
19
22
  """
23
+
24
+ # Implement the required interface for Rails::Generators::Migration.
25
+ # taken from http://github.com/rails/rails/blob/master/activerecord/lib/generators/active_record.rb
26
+ def self.next_migration_number(path)
27
+ if @prev_migration_nr
28
+ @prev_migration_nr += 1
29
+ else
30
+ if last_migration = Dir[File.join(path, '*.rb')].sort.last
31
+ @prev_migration_nr = last_migration.sub(File.join(path, '/'), '').to_i + 1
32
+ else
33
+ @prev_migration_nr = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i
34
+ end
35
+ end
36
+ @prev_migration_nr.to_s
37
+ end
38
+
20
39
  def banner
21
40
  say_status("warning", "GENERATING SUFIA MODELS", :yellow)
22
41
  end
23
42
 
24
43
  # Setup the database migrations
25
44
  def copy_migrations
45
+ # Can't get this any more DRY, because we need this order.
26
46
  [
27
47
  "acts_as_follower_migration.rb",
28
48
  "add_social_to_users.rb",
@@ -94,13 +114,13 @@ This generator makes the following changes to your application:
94
114
  generate 'sufia:models:cached_stats'
95
115
  end
96
116
 
97
- # Adds orcid field to user model
98
- def orcid_field
99
- generate 'sufia:models:orcid_field'
100
- end
117
+ private
101
118
 
102
- # Adds user stats-related migration & methods
103
- def user_stats
104
- generate 'sufia:models:user_stats'
119
+ def better_migration_template(file)
120
+ begin
121
+ migration_template "migrations/#{file}", "db/migrate/#{file}"
122
+ rescue Rails::Generators::Error => e
123
+ say_status("warning", e.message, :yellow)
124
+ end
105
125
  end
106
126
  end
@@ -1,12 +1,30 @@
1
- require_relative 'abstract_migration_generator'
1
+ # -*- encoding : utf-8 -*-
2
+ require 'rails/generators'
3
+ require 'rails/generators/migration'
4
+
5
+ class Sufia::Models::ProxiesGenerator < Rails::Generators::Base
6
+ include Rails::Generators::Migration
2
7
 
3
- class Sufia::Models::ProxiesGenerator < Sufia::Models::AbstractMigrationGenerator
4
8
  source_root File.expand_path('../templates', __FILE__)
5
9
 
6
10
  desc """
7
11
  This generator adds proxies and transfers to your application:
8
12
  1. Creates several database migrations if they do not exist in /db/migrate
9
13
  """
14
+ # Implement the required interface for Rails::Generators::Migration.
15
+ # taken from http://github.com/rails/rails/blob/master/activerecord/lib/generators/active_record.rb
16
+ def self.next_migration_number(path)
17
+ if @prev_migration_nr
18
+ @prev_migration_nr += 1
19
+ else
20
+ if last_migration = Dir[File.join(path, '*.rb')].sort.last
21
+ @prev_migration_nr = last_migration.sub(File.join(path, '/'), '').to_i + 1
22
+ else
23
+ @prev_migration_nr = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i
24
+ end
25
+ end
26
+ @prev_migration_nr.to_s
27
+ end
10
28
 
11
29
  def banner
12
30
  say_status("warning", "ADDING PROXY/TRANSFER-RELATED SUFIA MODELS", :yellow)
@@ -14,6 +32,7 @@ This generator adds proxies and transfers to your application:
14
32
 
15
33
  # Setup the database migrations
16
34
  def copy_migrations
35
+ # Can't get this any more DRY, because we need this order.
17
36
  [
18
37
  'create_proxy_deposit_rights.rb',
19
38
  'create_proxy_deposit_requests.rb'
@@ -21,4 +40,14 @@ This generator adds proxies and transfers to your application:
21
40
  better_migration_template file
22
41
  end
23
42
  end
43
+
44
+ private
45
+
46
+ def better_migration_template(file)
47
+ begin
48
+ migration_template "migrations/#{file}", "db/migrate/#{file}"
49
+ rescue Rails::Generators::Error => e
50
+ say_status("warning", e.message, :yellow)
51
+ end
52
+ end
24
53
  end
@@ -93,9 +93,6 @@ Sufia.config do |config|
93
93
  # Specify a Google Analytics tracking ID to gather usage statistics
94
94
  # config.google_analytics_id = 'UA-99999999-1'
95
95
 
96
- # Specify a date you wish to start collecting Google Analytic statistics for.
97
- # config.analytic_start_date = DateTime.new(2014,9,10)
98
-
99
96
  # Where to store tempfiles, leave blank for the system temp directory (e.g. /tmp)
100
97
  # config.temp_file_base = '/home/developer1'
101
98
 
@@ -111,6 +108,16 @@ Sufia.config do |config|
111
108
  # Specify how many seconds back from the current time that we should show by default of the user's activity on the user's dashboard
112
109
  # config.activity_to_show_default_seconds_since_now = 24*60*60
113
110
 
111
+ # Specify a date you wish to start collecting Google Analytic statistics for.
112
+ # Leaving it blank will set the start date to when ever the file was uploaded by
113
+ # NOTE: if you have always sent analytics to GA for downloads and page views leave this commented out
114
+ # config.analytic_start_date = DateTime.new(2014,9,10)
115
+ #
116
+ # Method of converting pids into URIs for storage in Fedora
117
+ # config.translate_uri_to_id = lambda { |uri| uri.to_s.split('/')[-1] }
118
+ # config.translate_id_to_uri = lambda { |id|
119
+ # "#{ActiveFedora.fedora.host}#{ActiveFedora.fedora.base_path}/#{Sufia::Noid.treeify(id)}" }
120
+
114
121
  # If browse-everything has been configured, load the configs. Otherwise, set to nil.
115
122
  begin
116
123
  if defined? BrowseEverything
@@ -1,8 +1,13 @@
1
- require_relative 'abstract_migration_generator'
1
+ # -*- encoding : utf-8 -*-
2
+ require 'rails/generators'
3
+ require 'rails/generators/migration'
4
+
5
+ class Sufia::Models::Upgrade400Generator < Rails::Generators::Base
6
+ include Rails::Generators::Migration
2
7
 
3
- class Sufia::Models::Upgrade400Generator < Sufia::Models::AbstractMigrationGenerator
4
8
  source_root File.expand_path('../templates', __FILE__)
5
9
 
10
+ argument :model_name, type: :string , default: "user"
6
11
  desc """
7
12
  This generator for upgrading sufia-models from 3.7.2 to 4.0 makes the following changes to your application:
8
13
  1. Creates several database migrations if they do not exist in /db/migrate
@@ -11,12 +16,28 @@ This generator for upgrading sufia-models from 3.7.2 to 4.0 makes the following
11
16
  4. Runs full-text generator
12
17
  """
13
18
 
19
+ # Implement the required interface for Rails::Generators::Migration.
20
+ # taken from http://github.com/rails/rails/blob/master/activerecord/lib/generators/active_record.rb
21
+ def self.next_migration_number(path)
22
+ if @prev_migration_nr
23
+ @prev_migration_nr += 1
24
+ else
25
+ if last_migration = Dir[File.join(path, '*.rb')].sort.last
26
+ @prev_migration_nr = last_migration.sub(File.join(path, '/'), '').to_i + 1
27
+ else
28
+ @prev_migration_nr = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i
29
+ end
30
+ end
31
+ @prev_migration_nr.to_s
32
+ end
33
+
14
34
  def banner
15
35
  say_status("warning", "UPGRADING SUFIA MODELS", :yellow)
16
36
  end
17
37
 
18
38
  # Setup the database migrations
19
39
  def copy_migrations
40
+ # Can't get this any more DRY, because we need this order.
20
41
  [
21
42
  'create_tinymce_assets.rb',
22
43
  'create_content_blocks.rb',
@@ -51,4 +72,14 @@ This generator for upgrading sufia-models from 3.7.2 to 4.0 makes the following
51
72
  def full_text_indexing
52
73
  generate "sufia:models:fulltext"
53
74
  end
75
+
76
+ private
77
+
78
+ def better_migration_template(file)
79
+ begin
80
+ migration_template "migrations/#{file}", "db/migrate/#{file}"
81
+ rescue Rails::Generators::Error => e
82
+ say_status("warning", e.message, :yellow)
83
+ end
84
+ end
54
85
  end
@@ -31,6 +31,10 @@ module Sufia
31
31
  # Defaulting analytic start date to when ever the file was uploaded by leaving it blank
32
32
  config.analytic_start_date = nil
33
33
 
34
+ config.translate_uri_to_id = lambda { |uri| uri.to_s.split('/')[-1] }
35
+ config.translate_id_to_uri = lambda { |id|
36
+ "#{ActiveFedora.fedora.host}#{ActiveFedora.fedora.base_path}/#{Sufia::Noid.treeify(id)}" }
37
+
34
38
  config.autoload_paths += %W(
35
39
  #{config.root}/app/models/datastreams
36
40
  )
@@ -58,10 +62,15 @@ module Sufia
58
62
  end
59
63
 
60
64
  initializer 'configure' do
61
- Hydra::Derivatives.ffmpeg_path = Sufia.config.ffmpeg_path
62
- Hydra::Derivatives.temp_file_base = Sufia.config.temp_file_base
63
- Hydra::Derivatives.fits_path = Sufia.config.fits_path
64
- Hydra::Derivatives.enable_ffmpeg = Sufia.config.enable_ffmpeg
65
+ Sufia.config.tap do |c|
66
+ Hydra::Derivatives.ffmpeg_path = c.ffmpeg_path
67
+ Hydra::Derivatives.temp_file_base = c.temp_file_base
68
+ Hydra::Derivatives.fits_path = c.fits_path
69
+ Hydra::Derivatives.enable_ffmpeg = c.enable_ffmpeg
70
+
71
+ ActiveFedora::Base.translate_uri_to_id = c.translate_uri_to_id
72
+ ActiveFedora::Base.translate_id_to_uri = c.translate_id_to_uri
73
+ end
65
74
  end
66
75
  end
67
76
  end
@@ -1,23 +1,27 @@
1
1
  module Sufia
2
2
  module FileContent
3
3
  module Versions
4
- def get_version(version_id)
5
- self.versions.select { |v| v.versionID == version_id}.first
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ has_many_versions
6
8
  end
7
9
 
8
10
  def latest_version
9
- self.versions.first
11
+ versions.last.label unless versions.empty?
10
12
  end
11
13
 
12
14
  def version_committer(version)
13
- vc = VersionCommitter.where(obj_id: version.pid,
14
- datastream_id: version.dsid,
15
- version_id: version.versionID)
15
+ vc = VersionCommitter.where(version_id: version)
16
16
  return vc.empty? ? nil : vc.first.committer_login
17
17
  end
18
18
 
19
-
19
+ def save
20
+ super.tap do |passing|
21
+ create_version if passing
22
+ end
23
+ end
24
+
20
25
  end
21
26
  end
22
27
  end
23
-
@@ -1,5 +1,5 @@
1
1
  module Sufia
2
2
  module Models
3
- VERSION = "4.3.1"
3
+ VERSION = "5.0.0.beta1"
4
4
  end
5
5
  end
@@ -8,32 +8,50 @@ module Sufia
8
8
  include Hydra::AccessControls::Visibility
9
9
 
10
10
  included do
11
- has_metadata "rightsMetadata", type: ParanoidRightsDatastream
12
11
  validate :paranoid_permissions
13
12
  end
14
13
 
15
14
  def paranoid_permissions
16
- # let the rightsMetadata ds make this determination
17
- # - the object instance is passed in for easier access to the props ds
18
- rightsMetadata.validate(self)
15
+ valid = true
16
+ VALIDATIONS.each do |validation|
17
+ if validation[:condition].call(self)
18
+ errors[validation[:key]] ||= []
19
+ errors[validation[:key]] << validation[:message]
20
+ valid = false
21
+ end
22
+ end
23
+ return valid
19
24
  end
20
25
 
21
- ## Updates those permissions that are provided to it. Does not replace any permissions unless they are provided
22
- def permissions=(params)
23
- perm_hash = permission_hash
24
- params[:new_user_name].each { |name, access| perm_hash['person'][name] = access } if params[:new_user_name].present?
25
- params[:new_group_name].each { |name, access| perm_hash['group'][name] = access } if params[:new_group_name].present?
26
+ VALIDATIONS = [
27
+ {key: :edit_users, message: 'Depositor must have edit access', condition: lambda { |obj| !obj.edit_users.include?(obj.depositor) }},
28
+ {key: :edit_groups, message: 'Public cannot have edit access', condition: lambda { |obj| obj.edit_groups.include?('public') }},
29
+ {key: :edit_groups, message: 'Registered cannot have edit access', condition: lambda { |obj| obj.edit_groups.include?('registered') }}
30
+ ]
26
31
 
27
- params[:user].each { |name, access| perm_hash['person'][name] = access} if params[:user]
28
- params[:group].each { |name, access| perm_hash['group'][name] = access if ['read', 'edit'].include?(access)} if params[:group]
29
32
 
30
- rightsMetadata.update_permissions(perm_hash)
33
+ def clear_permissions!
34
+ self.permissions = []
31
35
  end
32
36
 
33
- def permissions
34
- perms = super
35
- perms.map {|p| { name: p.name, access: p.access, type:p.type } }
36
- end
37
+ ## Updates those permissions that are provided to it. Does not replace any permissions unless they are provided
38
+ # def permissions=(params)
39
+ # raise "Fixme #{params}"
40
+ # perm_hash = permission_hash
41
+ # params[:new_user_name].each { |name, access| perm_hash['person'][name] = access } if params[:new_user_name].present?
42
+ # params[:new_group_name].each { |name, access| perm_hash['group'][name] = access } if params[:new_group_name].present?
43
+
44
+ # params[:user].each { |name, access| perm_hash['person'][name] = access} if params[:user]
45
+ # params[:group].each { |name, access| perm_hash['group'][name] = access if ['read', 'edit'].include?(access)} if params[:group]
46
+
47
+ # # rightsMetadata.update_permissions(perm_hash)
48
+ # end
49
+
50
+ # def permissions
51
+ # raise "Fixme "
52
+ # perms = super
53
+ # perms.map {|p| { name: p.name, access: p.access, type:p.type } }
54
+ # end
37
55
 
38
56
  private
39
57