mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-24 05:38:52 +00:00
Adapt enterprise_relationship permitting and permitted_by scopes to rails 4
This commit is contained in:
@@ -25,8 +25,8 @@ class EnterpriseRelationship < ActiveRecord::Base
|
||||
where('parent_id IN (?) OR child_id IN (?)', enterprises, enterprises)
|
||||
}
|
||||
|
||||
scope :permitting, ->(enterprises) { where('child_id IN (?)', enterprises) }
|
||||
scope :permitted_by, ->(enterprises) { where('parent_id IN (?)', enterprises) }
|
||||
scope :permitting, ->(enterprise_ids) { where('child_id IN (?)', enterprise_ids) }
|
||||
scope :permitted_by, ->(enterprise_ids) { where('parent_id IN (?)', enterprise_ids) }
|
||||
|
||||
scope :with_permission, ->(permission) {
|
||||
joins(:permissions).
|
||||
|
||||
@@ -118,7 +118,7 @@ Spree::Product.class_eval do
|
||||
|
||||
scope :stockable_by, lambda { |enterprise|
|
||||
return where('1=0') if enterprise.blank?
|
||||
permitted_producer_ids = EnterpriseRelationship.joins(:parent).permitting(enterprise)
|
||||
permitted_producer_ids = EnterpriseRelationship.joins(:parent).permitting(enterprise.id)
|
||||
.with_permission(:add_to_order_cycle).where(enterprises: { is_primary_producer: true }).pluck(:parent_id)
|
||||
return where('spree_products.supplier_id IN (?)', [enterprise.id] | permitted_producer_ids)
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ class SubscriptionVariantsService
|
||||
|
||||
def self.permitted_producer_ids(distributor)
|
||||
other_permitted_producer_ids = EnterpriseRelationship.joins(:parent)
|
||||
.permitting(distributor).with_permission(:add_to_order_cycle)
|
||||
.permitting(distributor.id).with_permission(:add_to_order_cycle)
|
||||
.merge(Enterprise.is_primary_producer)
|
||||
.pluck(:parent_id)
|
||||
|
||||
|
||||
@@ -90,8 +90,8 @@ module OpenFoodNetwork
|
||||
Spree::Variant.joins(:product).where('spree_products.supplier_id = (?)', producer)
|
||||
else
|
||||
# All variants of the producer if it has granted P-OC to any of my managed hubs that are in this order cycle
|
||||
permitted = EnterpriseRelationship.permitting(managed_participating_hubs).
|
||||
permitted_by(producer).with_permission(:add_to_order_cycle).present?
|
||||
permitted = EnterpriseRelationship.permitting(managed_participating_hubs.select(:id)).
|
||||
permitted_by(producer.id).with_permission(:add_to_order_cycle).present?
|
||||
if permitted
|
||||
Spree::Variant.joins(:product).where('spree_products.supplier_id = (?)', producer)
|
||||
else
|
||||
|
||||
@@ -43,7 +43,7 @@ module OpenFoodNetwork
|
||||
# Permissions granted by create_variant_overrides relationship from producer to hub
|
||||
permissions = Hash[
|
||||
EnterpriseRelationship.
|
||||
permitting(hubs).
|
||||
permitting(hubs.select(:id)).
|
||||
with_permission(:create_variant_overrides).
|
||||
group_by(&:child_id).
|
||||
map { |child_id, ers| [child_id, ers.map(&:parent_id)] }
|
||||
@@ -183,7 +183,8 @@ module OpenFoodNetwork
|
||||
|
||||
def related_enterprises_granting(permission, options = {})
|
||||
parent_ids = EnterpriseRelationship.
|
||||
permitting(options[:to] || managed_enterprises).
|
||||
# this options[:to].id needs to be verified/tested
|
||||
permitting(options[:to].select(:id) || managed_enterprises.select(:id)).
|
||||
with_permission(permission).
|
||||
pluck(:parent_id)
|
||||
|
||||
@@ -192,7 +193,7 @@ module OpenFoodNetwork
|
||||
|
||||
def related_enterprises_granted(permission, options = {})
|
||||
child_ids = EnterpriseRelationship.
|
||||
permitted_by(options[:by] || managed_enterprises).
|
||||
permitted_by(options[:by].select(:id) || managed_enterprises.select(:id)).
|
||||
with_permission(permission).
|
||||
pluck(:child_id)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user