aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZog2018-03-26 11:12:25 +0200
committerZog2018-03-26 11:12:25 +0200
commitdeea16664b122b9db9c615980944a63f510c39f7 (patch)
tree60adeaef608b58fdc40a12101f54d66fc1b83cda
parent1a64e4cb265a320005247e54b880287d3308d28b (diff)
downloadchouette-core-deea16664b122b9db9c615980944a63f510c39f7.tar.bz2
Refs #6218; Limit accessible exports for workgroups
-rw-r--r--app/controllers/development_toolbar_controller.rb7
-rw-r--r--app/helpers/exports_helper.rb3
-rw-r--r--app/models/workgroup.rb4
-rw-r--r--app/views/exports/_form.html.slim2
-rw-r--r--app/views/shared/_development_toolbar.html.slim14
-rw-r--r--db/migrate/20180326085804_bind_exports_and_imports_types_to_workgroups.rb6
6 files changed, 35 insertions, 1 deletions
diff --git a/app/controllers/development_toolbar_controller.rb b/app/controllers/development_toolbar_controller.rb
index 20349f7b8..be9a37eba 100644
--- a/app/controllers/development_toolbar_controller.rb
+++ b/app/controllers/development_toolbar_controller.rb
@@ -6,6 +6,13 @@ class DevelopmentToolbarController < ApplicationController
organisation.save
current_user.permissions = params[:permissions].keys.select{|k| params[:permissions][k] == "true"}
current_user.save
+ if params[:export_types].present?
+ params[:export_types].each do |workgroup_id, export_types|
+ workgroup = Workgroup.find workgroup_id
+ workgroup.export_types = export_types.keys.select{|k| export_types[k] == "true"}
+ workgroup.save!
+ end
+ end
redirect_to request.referrer || "/"
end
end
diff --git a/app/helpers/exports_helper.rb b/app/helpers/exports_helper.rb
index dc0720c40..2e784ad35 100644
--- a/app/helpers/exports_helper.rb
+++ b/app/helpers/exports_helper.rb
@@ -53,4 +53,7 @@ module ExportsHelper
end
end
+ def workgroup_exports workgroup
+ Export::Base.user_visible_descendants.select{|e| workgroup.has_export? e.name}
+ end
end
diff --git a/app/models/workgroup.rb b/app/models/workgroup.rb
index 708225a2a..7e3e857ec 100644
--- a/app/models/workgroup.rb
+++ b/app/models/workgroup.rb
@@ -19,4 +19,8 @@ class Workgroup < ActiveRecord::Base
def custom_fields_definitions
Hash[*custom_fields.map{|cf| [cf.code, cf]}.flatten]
end
+
+ def has_export? export_name
+ export_types.include? export_name
+ end
end
diff --git a/app/views/exports/_form.html.slim b/app/views/exports/_form.html.slim
index 44b4e447c..999e33e34 100644
--- a/app/views/exports/_form.html.slim
+++ b/app/views/exports/_form.html.slim
@@ -4,7 +4,7 @@
.col-lg-12
= form.input :name
.col-lg-12
- = form.input :type, as: :select, collection: Export::Base.user_visible_descendants, label_method: :human_name
+ = form.input :type, as: :select, collection: workgroup_exports(workbench.workgroup), label_method: :human_name
= form.input :referential_id, as: :select, collection: workbench.referentials, label_method: :name
- Export::Base.user_visible_descendants.each do |child|
diff --git a/app/views/shared/_development_toolbar.html.slim b/app/views/shared/_development_toolbar.html.slim
index aafd37885..836066b3d 100644
--- a/app/views/shared/_development_toolbar.html.slim
+++ b/app/views/shared/_development_toolbar.html.slim
@@ -20,6 +20,20 @@
- if Rails.application.config.development_toolbar.features_doc_url
= link_to "#{Rails.application.config.development_toolbar.features_doc_url}##{feature}", target: :blank do
.fa.fa-question-circle
+
+ - if @workbench
+ h4
+ = "Exports"
+ .toggles
+ = link_to 'all', '#', data: {mask: 'export_types', val: true}
+ = link_to 'none', '#', data: {mask: 'export_types', val: false}
+ ul
+ - Export::Base.user_visible_descendants.each do |export|
+ li
+ = hidden_field_tag "export_types[#{@workbench.workgroup_id}][#{export.name}]", false, id: ""
+ = check_box_tag "export_types[#{@workbench.workgroup_id}][#{export.name}]", true, @workbench.workgroup.has_export?(export.name)
+ = label :export_types, export.human_name
+
.col.permissions
h4
= "Permissions"
diff --git a/db/migrate/20180326085804_bind_exports_and_imports_types_to_workgroups.rb b/db/migrate/20180326085804_bind_exports_and_imports_types_to_workgroups.rb
new file mode 100644
index 000000000..d75336673
--- /dev/null
+++ b/db/migrate/20180326085804_bind_exports_and_imports_types_to_workgroups.rb
@@ -0,0 +1,6 @@
+class BindExportsAndImportsTypesToWorkgroups < ActiveRecord::Migration
+ def change
+ add_column :workgroups, "import_types", :string, default: [], array: true
+ add_column :workgroups, "export_types", :string, default: [], array: true
+ end
+end