aboutsummaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
authorZog2018-03-29 14:38:45 +0200
committerZog2018-03-29 14:38:45 +0200
commitef01bea2bef74358e3df3e74cc613d664a9a554d (patch)
tree19b375858b37645754198c048841458621d23737 /app/models
parent1019debe93d776f0d38ae69099e6492a7dd4a87c (diff)
downloadchouette-core-ef01bea2bef74358e3df3e74cc613d664a9a554d.tar.bz2
Refs #4658; Remove `current_functional_scope`
Diffstat (limited to 'app/models')
-rw-r--r--app/models/chouette/line.rb8
-rw-r--r--app/models/organisation.rb4
-rw-r--r--app/models/referential.rb4
-rw-r--r--app/models/referential_metadata.rb4
4 files changed, 16 insertions, 4 deletions
diff --git a/app/models/chouette/line.rb b/app/models/chouette/line.rb
index ae7c25377..c8a02da1f 100644
--- a/app/models/chouette/line.rb
+++ b/app/models/chouette/line.rb
@@ -51,6 +51,14 @@ module Chouette
)
}
+ scope :for_organisation, ->(organisation){
+ if objectids = organisation&.lines_scope
+ where(objectid: objectids)
+ else
+ all
+ end
+ }
+
def self.nullable_attributes
[:published_name, :number, :comment, :url, :color, :text_color, :stable_id]
end
diff --git a/app/models/organisation.rb b/app/models/organisation.rb
index 745bc0d22..5bef67941 100644
--- a/app/models/organisation.rb
+++ b/app/models/organisation.rb
@@ -86,4 +86,8 @@ class Organisation < ActiveRecord::Base
workbenches.default
end
+ def lines_scope
+ functional_scope = sso_attributes.try(:[], "functional_scope")
+ JSON.parse(functional_scope) if functional_scope
+ end
end
diff --git a/app/models/referential.rb b/app/models/referential.rb
index 91a88d02d..0e48be43f 100644
--- a/app/models/referential.rb
+++ b/app/models/referential.rb
@@ -233,7 +233,7 @@ class Referential < ActiveRecord::Base
end
end
- def self.new_from(from, functional_scope)
+ def self.new_from(from, organisation)
Referential.new(
name: I18n.t("activerecord.copy", name: from.name),
slug: "#{from.slug}_clone",
@@ -244,7 +244,7 @@ class Referential < ActiveRecord::Base
stop_area_referential: from.stop_area_referential,
created_from: from,
objectid_format: from.objectid_format,
- metadatas: from.metadatas.map { |m| ReferentialMetadata.new_from(m, functional_scope) }
+ metadatas: from.metadatas.map { |m| ReferentialMetadata.new_from(m, organisation) }
)
end
diff --git a/app/models/referential_metadata.rb b/app/models/referential_metadata.rb
index 393dc70d3..017eb1449 100644
--- a/app/models/referential_metadata.rb
+++ b/app/models/referential_metadata.rb
@@ -155,10 +155,10 @@ class ReferentialMetadata < ActiveRecord::Base
end
private :clear_periods
- def self.new_from(from, functional_scope)
+ def self.new_from(from, organisation)
from.dup.tap do |metadata|
metadata.referential_source_id = from.referential_id
- metadata.line_ids = from.referential.lines.where(id: metadata.line_ids, objectid: functional_scope).collect(&:id)
+ metadata.line_ids = from.referential.lines.where(id: metadata.line_ids).for_organisation(organisation).pluck(:id)
metadata.referential_id = nil
end
end