sufia-models 5.0.0.beta1 → 5.0.0.rc1
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.
- checksums.yaml +4 -4
- data/app/actors/sufia/generic_file/actor.rb +10 -7
- data/app/jobs/active_fedora_pid_based_job.rb +3 -2
- data/app/jobs/audit_job.rb +31 -28
- data/app/jobs/batch_update_job.rb +8 -9
- data/app/jobs/import_url_job.rb +2 -2
- data/app/models/batch.rb +12 -11
- data/app/models/checksum_audit_log.rb +8 -7
- data/app/models/concerns/sufia/ability.rb +6 -4
- data/app/models/concerns/sufia/collection.rb +5 -4
- data/app/models/concerns/sufia/file_stat_utils.rb +3 -3
- data/app/models/concerns/sufia/generic_file.rb +14 -16
- data/app/models/concerns/sufia/generic_file/audit.rb +31 -50
- data/app/models/concerns/sufia/generic_file/characterization.rb +3 -3
- data/app/models/concerns/sufia/generic_file/derivatives.rb +5 -5
- data/app/models/concerns/sufia/generic_file/full_text_indexing.rb +2 -2
- data/app/models/concerns/sufia/generic_file/metadata.rb +11 -82
- data/app/models/concerns/sufia/generic_file/proxy_deposit.rb +3 -12
- data/app/models/concerns/sufia/generic_file/reload_on_save.rb +18 -0
- data/app/models/concerns/sufia/generic_file/versions.rb +4 -1
- data/app/models/concerns/sufia/generic_file/web_form.rb +6 -13
- data/app/models/concerns/sufia/model_methods.rb +9 -11
- data/app/models/concerns/sufia/properties_datastream_behavior.rb +32 -0
- data/app/models/concerns/sufia/user.rb +33 -11
- data/app/models/concerns/sufia/user_usage_stats.rb +15 -0
- data/app/models/datastreams/batch_rdf_datastream.rb +6 -0
- data/app/models/datastreams/file_content_datastream.rb +1 -1
- data/app/models/datastreams/fits_datastream.rb +1 -1
- data/app/models/datastreams/generic_file_rdf_datastream.rb +69 -0
- data/app/models/datastreams/paranoid_rights_datastream.rb +22 -0
- data/app/models/datastreams/properties_datastream.rb +4 -0
- data/app/models/file_download_stat.rb +2 -2
- data/app/models/file_usage.rb +9 -5
- data/app/models/file_view_stat.rb +2 -2
- data/app/models/local_authority.rb +2 -2
- data/app/models/proxy_deposit_request.rb +1 -1
- data/app/models/sufia/orcid_validator.rb +8 -0
- data/app/models/user_stat.rb +2 -0
- data/app/services/sufia/id_service.rb +5 -5
- data/app/services/sufia/noid.rb +7 -10
- data/lib/generators/sufia/models/abstract_migration_generator.rb +30 -0
- data/lib/generators/sufia/models/cached_stats_generator.rb +2 -31
- data/lib/generators/sufia/models/install_generator.rb +11 -31
- data/lib/generators/sufia/models/orcid_field_generator.rb +19 -0
- data/lib/generators/sufia/models/proxies_generator.rb +2 -31
- data/lib/generators/sufia/models/templates/config/sufia.rb +3 -10
- data/lib/generators/sufia/models/templates/migrations/add_orcid_to_users.rb +5 -0
- data/lib/generators/sufia/models/templates/migrations/create_user_stats.rb +19 -0
- data/lib/generators/sufia/models/upgrade400_generator.rb +2 -33
- data/lib/generators/sufia/models/user_stats_generator.rb +31 -0
- data/lib/sufia/models/engine.rb +4 -13
- data/lib/sufia/models/file_content/versions.rb +8 -12
- data/lib/sufia/models/stats/user_stat_importer.rb +89 -0
- data/lib/sufia/models/version.rb +1 -1
- data/lib/sufia/permissions/writable.rb +16 -34
- data/lib/tasks/stats_tasks.rake +12 -0
- data/sufia-models.gemspec +2 -4
- metadata +78 -90
@@ -0,0 +1,19 @@
|
|
1
|
+
require_relative 'abstract_migration_generator'
|
2
|
+
|
3
|
+
class Sufia::Models::OrcidFieldGenerator < Sufia::Models::AbstractMigrationGenerator
|
4
|
+
source_root File.expand_path('../templates', __FILE__)
|
5
|
+
|
6
|
+
desc """
|
7
|
+
This generator adds a field to hold users' ORCIDs to your application:
|
8
|
+
1. Creates a database migration if they do not exist in /db/migrate
|
9
|
+
"""
|
10
|
+
|
11
|
+
def banner
|
12
|
+
say_status("warning", "ADDING ORCID FIELD TO USER MODEL", :yellow)
|
13
|
+
end
|
14
|
+
|
15
|
+
# Setup the database migration
|
16
|
+
def copy_migrations
|
17
|
+
better_migration_template 'add_orcid_to_users.rb'
|
18
|
+
end
|
19
|
+
end
|
@@ -1,30 +1,12 @@
|
|
1
|
-
|
2
|
-
require 'rails/generators'
|
3
|
-
require 'rails/generators/migration'
|
4
|
-
|
5
|
-
class Sufia::Models::ProxiesGenerator < Rails::Generators::Base
|
6
|
-
include Rails::Generators::Migration
|
1
|
+
require_relative 'abstract_migration_generator'
|
7
2
|
|
3
|
+
class Sufia::Models::ProxiesGenerator < Sufia::Models::AbstractMigrationGenerator
|
8
4
|
source_root File.expand_path('../templates', __FILE__)
|
9
5
|
|
10
6
|
desc """
|
11
7
|
This generator adds proxies and transfers to your application:
|
12
8
|
1. Creates several database migrations if they do not exist in /db/migrate
|
13
9
|
"""
|
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
|
28
10
|
|
29
11
|
def banner
|
30
12
|
say_status("warning", "ADDING PROXY/TRANSFER-RELATED SUFIA MODELS", :yellow)
|
@@ -32,7 +14,6 @@ This generator adds proxies and transfers to your application:
|
|
32
14
|
|
33
15
|
# Setup the database migrations
|
34
16
|
def copy_migrations
|
35
|
-
# Can't get this any more DRY, because we need this order.
|
36
17
|
[
|
37
18
|
'create_proxy_deposit_rights.rb',
|
38
19
|
'create_proxy_deposit_requests.rb'
|
@@ -40,14 +21,4 @@ This generator adds proxies and transfers to your application:
|
|
40
21
|
better_migration_template file
|
41
22
|
end
|
42
23
|
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
|
53
24
|
end
|
@@ -93,6 +93,9 @@ 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
|
+
|
96
99
|
# Where to store tempfiles, leave blank for the system temp directory (e.g. /tmp)
|
97
100
|
# config.temp_file_base = '/home/developer1'
|
98
101
|
|
@@ -108,16 +111,6 @@ Sufia.config do |config|
|
|
108
111
|
# 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
|
109
112
|
# config.activity_to_show_default_seconds_since_now = 24*60*60
|
110
113
|
|
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
|
-
|
121
114
|
# If browse-everything has been configured, load the configs. Otherwise, set to nil.
|
122
115
|
begin
|
123
116
|
if defined? BrowseEverything
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class CreateUserStats < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :user_stats do |t|
|
4
|
+
t.integer :user_id
|
5
|
+
t.datetime :date
|
6
|
+
t.integer :file_views
|
7
|
+
t.integer :file_downloads
|
8
|
+
|
9
|
+
t.timestamps
|
10
|
+
end
|
11
|
+
|
12
|
+
add_column :file_view_stats, :user_id, :integer
|
13
|
+
add_column :file_download_stats, :user_id, :integer
|
14
|
+
|
15
|
+
add_index :user_stats, :user_id
|
16
|
+
add_index :file_view_stats, :user_id
|
17
|
+
add_index :file_download_stats, :user_id
|
18
|
+
end
|
19
|
+
end
|
@@ -1,13 +1,8 @@
|
|
1
|
-
|
2
|
-
require 'rails/generators'
|
3
|
-
require 'rails/generators/migration'
|
4
|
-
|
5
|
-
class Sufia::Models::Upgrade400Generator < Rails::Generators::Base
|
6
|
-
include Rails::Generators::Migration
|
1
|
+
require_relative 'abstract_migration_generator'
|
7
2
|
|
3
|
+
class Sufia::Models::Upgrade400Generator < Sufia::Models::AbstractMigrationGenerator
|
8
4
|
source_root File.expand_path('../templates', __FILE__)
|
9
5
|
|
10
|
-
argument :model_name, type: :string , default: "user"
|
11
6
|
desc """
|
12
7
|
This generator for upgrading sufia-models from 3.7.2 to 4.0 makes the following changes to your application:
|
13
8
|
1. Creates several database migrations if they do not exist in /db/migrate
|
@@ -16,28 +11,12 @@ This generator for upgrading sufia-models from 3.7.2 to 4.0 makes the following
|
|
16
11
|
4. Runs full-text generator
|
17
12
|
"""
|
18
13
|
|
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
|
-
|
34
14
|
def banner
|
35
15
|
say_status("warning", "UPGRADING SUFIA MODELS", :yellow)
|
36
16
|
end
|
37
17
|
|
38
18
|
# Setup the database migrations
|
39
19
|
def copy_migrations
|
40
|
-
# Can't get this any more DRY, because we need this order.
|
41
20
|
[
|
42
21
|
'create_tinymce_assets.rb',
|
43
22
|
'create_content_blocks.rb',
|
@@ -72,14 +51,4 @@ This generator for upgrading sufia-models from 3.7.2 to 4.0 makes the following
|
|
72
51
|
def full_text_indexing
|
73
52
|
generate "sufia:models:fulltext"
|
74
53
|
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
|
85
54
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require_relative 'abstract_migration_generator'
|
2
|
+
|
3
|
+
class Sufia::Models::UserStatsGenerator < Sufia::Models::AbstractMigrationGenerator
|
4
|
+
source_root File.expand_path('../templates', __FILE__)
|
5
|
+
argument :model_name, type: :string , default: "user"
|
6
|
+
|
7
|
+
desc """
|
8
|
+
This generator adds usage stats methods to the user model in your application:
|
9
|
+
"""
|
10
|
+
|
11
|
+
def banner
|
12
|
+
say_status("warning", "ADDING USER STATS-RELATED ABILITIES TO SUFIA MODELS", :yellow)
|
13
|
+
end
|
14
|
+
|
15
|
+
# Setup the database migrations
|
16
|
+
def copy_migrations
|
17
|
+
better_migration_template 'create_user_stats.rb'
|
18
|
+
end
|
19
|
+
|
20
|
+
def add_stats_mixin_to_user_model
|
21
|
+
file_path = "app/models/#{model_name.underscore}.rb"
|
22
|
+
|
23
|
+
if File.exists?(file_path)
|
24
|
+
inject_into_file file_path, after: /include Sufia\:\:User.*$/ do
|
25
|
+
"\n include Sufia::UserUsageStats"
|
26
|
+
end
|
27
|
+
else
|
28
|
+
puts " \e[31mFailure\e[0m Sufia requires a user object. This generator assumes that the model is defined in the file #{file_path}, which does not exist. If you used a different name, please re-run the generator and provide that name as an argument. Such as \b rails g sufia:models:user_stats client"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/sufia/models/engine.rb
CHANGED
@@ -31,10 +31,6 @@ 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
|
-
|
38
34
|
config.autoload_paths += %W(
|
39
35
|
#{config.root}/app/models/datastreams
|
40
36
|
)
|
@@ -62,15 +58,10 @@ module Sufia
|
|
62
58
|
end
|
63
59
|
|
64
60
|
initializer 'configure' do
|
65
|
-
Sufia.config.
|
66
|
-
|
67
|
-
|
68
|
-
|
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
|
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
|
74
65
|
end
|
75
66
|
end
|
76
67
|
end
|
@@ -1,27 +1,23 @@
|
|
1
1
|
module Sufia
|
2
2
|
module FileContent
|
3
3
|
module Versions
|
4
|
-
|
5
|
-
|
6
|
-
included do
|
7
|
-
has_many_versions
|
4
|
+
def get_version(version_id)
|
5
|
+
self.versions.select { |v| v.versionID == version_id}.first
|
8
6
|
end
|
9
7
|
|
10
8
|
def latest_version
|
11
|
-
|
9
|
+
self.versions.first
|
12
10
|
end
|
13
11
|
|
14
12
|
def version_committer(version)
|
15
|
-
vc = VersionCommitter.where(
|
13
|
+
vc = VersionCommitter.where(obj_id: version.pid,
|
14
|
+
datastream_id: version.dsid,
|
15
|
+
version_id: version.versionID)
|
16
16
|
return vc.empty? ? nil : vc.first.committer_login
|
17
17
|
end
|
18
18
|
|
19
|
-
|
20
|
-
super.tap do |passing|
|
21
|
-
create_version if passing
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
19
|
+
|
25
20
|
end
|
26
21
|
end
|
27
22
|
end
|
23
|
+
|
@@ -0,0 +1,89 @@
|
|
1
|
+
module Sufia
|
2
|
+
class UserStatImporter
|
3
|
+
|
4
|
+
def initialize(options={})
|
5
|
+
@verbose = options[:verbose]
|
6
|
+
@logging = options[:logging]
|
7
|
+
end
|
8
|
+
|
9
|
+
def import
|
10
|
+
log_message('Begin import of User stats.')
|
11
|
+
::User.find_each do |user|
|
12
|
+
start_date = date_since_last_cache(user)
|
13
|
+
|
14
|
+
stats = {}
|
15
|
+
file_ids_for_user(user).each do |file_id|
|
16
|
+
view_stats = FileViewStat.statistics(file_id, start_date, user.id)
|
17
|
+
stats = tally_results(view_stats, :views, stats)
|
18
|
+
|
19
|
+
dl_stats = FileDownloadStat.statistics(file_id, start_date, user.id)
|
20
|
+
stats = tally_results(dl_stats, :downloads, stats)
|
21
|
+
end
|
22
|
+
|
23
|
+
create_or_update_user_stats(stats, user)
|
24
|
+
end
|
25
|
+
log_message('User stats import complete.')
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def date_since_last_cache(user)
|
32
|
+
last_cached_stat = UserStat.where(user_id: user.id).order(date: :asc).last
|
33
|
+
|
34
|
+
if last_cached_stat
|
35
|
+
last_cached_stat.date + 1.day
|
36
|
+
else
|
37
|
+
Sufia.config.analytic_start_date
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def file_ids_for_user(user)
|
42
|
+
ids = []
|
43
|
+
::GenericFile.find_in_batches("#{Solrizer.solr_name('depositor', :symbol)}:\"#{user.user_key}\"", fl:"id") do |group|
|
44
|
+
ids.concat group.map { |doc| doc["id"] }
|
45
|
+
end
|
46
|
+
ids
|
47
|
+
end
|
48
|
+
|
49
|
+
# For each date, add the view and download counts for this
|
50
|
+
# file to the view & download sub-totals for that day.
|
51
|
+
# The resulting hash will look something like this:
|
52
|
+
# {"2014-11-30 00:00:00 UTC" => {:views=>2, :downloads=>5},
|
53
|
+
# "2014-12-01 00:00:00 UTC" => {:views=>4, :downloads=>4}}
|
54
|
+
def tally_results(file_stats, stat_name, total_stats)
|
55
|
+
file_stats.each do |stats|
|
56
|
+
# Exclude the stats from today since it will only be a partial day's worth of data
|
57
|
+
break if stats.date == Date.today
|
58
|
+
|
59
|
+
date_key = stats.date.to_s
|
60
|
+
old_count = total_stats[date_key] ? total_stats[date_key].fetch(stat_name) { 0 } : 0
|
61
|
+
new_count = old_count + stats.method(stat_name).call
|
62
|
+
|
63
|
+
old_values = total_stats[date_key] || {}
|
64
|
+
total_stats.store(date_key, old_values)
|
65
|
+
total_stats[date_key].store(stat_name, new_count)
|
66
|
+
end
|
67
|
+
total_stats
|
68
|
+
end
|
69
|
+
|
70
|
+
def create_or_update_user_stats(stats, user)
|
71
|
+
stats.each do |date_string, data|
|
72
|
+
date = Time.zone.parse(date_string)
|
73
|
+
|
74
|
+
user_stat = UserStat.where(user_id: user.id).where(date: date).first
|
75
|
+
user_stat ||= UserStat.new(user_id: user.id, date: date)
|
76
|
+
|
77
|
+
user_stat.file_views = data[:views] || 0
|
78
|
+
user_stat.file_downloads = data[:downloads] || 0
|
79
|
+
user_stat.save!
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def log_message(message)
|
84
|
+
puts message if @verbose
|
85
|
+
Rails.logger.info "#{self.class}: #{message}" if @logging
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
end
|
data/lib/sufia/models/version.rb
CHANGED
@@ -8,50 +8,32 @@ module Sufia
|
|
8
8
|
include Hydra::AccessControls::Visibility
|
9
9
|
|
10
10
|
included do
|
11
|
+
has_metadata "rightsMetadata", type: ParanoidRightsDatastream
|
11
12
|
validate :paranoid_permissions
|
12
13
|
end
|
13
14
|
|
14
15
|
def paranoid_permissions
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
errors[validation[:key]] ||= []
|
19
|
-
errors[validation[:key]] << validation[:message]
|
20
|
-
valid = false
|
21
|
-
end
|
22
|
-
end
|
23
|
-
return valid
|
24
|
-
end
|
25
|
-
|
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
|
-
]
|
31
|
-
|
32
|
-
|
33
|
-
def clear_permissions!
|
34
|
-
self.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)
|
35
19
|
end
|
36
20
|
|
37
21
|
## Updates those permissions that are provided to it. Does not replace any permissions unless they are provided
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
# params[:new_group_name].each { |name, access| perm_hash['group'][name] = access } if params[:new_group_name].present?
|
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?
|
43
26
|
|
44
|
-
|
45
|
-
|
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]
|
46
29
|
|
47
|
-
|
48
|
-
|
30
|
+
rightsMetadata.update_permissions(perm_hash)
|
31
|
+
end
|
49
32
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
# end
|
33
|
+
def permissions
|
34
|
+
perms = super
|
35
|
+
perms.map {|p| { name: p.name, access: p.access, type:p.type } }
|
36
|
+
end
|
55
37
|
|
56
38
|
private
|
57
39
|
|