spree_core 3.0.3 → 3.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cf4b040c67cbc697e8ff23b19862515ad3ec40e5
4
- data.tar.gz: 4338ea645e72ff94a0a52ffa3531319f4e64824c
3
+ metadata.gz: 825167ffd3b796e7bd880c79751eeb2631f9762e
4
+ data.tar.gz: 3dfd8c5d5a0301435c90967be33a2befc3950087
5
5
  SHA512:
6
- metadata.gz: b68a89ef41087957b53b64bb1519040c52b9de295f6f4a0cee305f9e236bb2ecfdf474eb8f466eb0b6c80f525ebb76913db76bdddba44022e2d8732d48ba18a4
7
- data.tar.gz: f223ee12cd500420b4c590d66918da99d69c0f1c46eaac008d18fa5164889aa2eeea266ff15867873291c6c54a78377ae1ad5befcaf321c2e2625e66089dcf44
6
+ metadata.gz: 9935e7fc716719657036cfb862d4a6ac5a705303c0029ca2828948ababadb82b97ea92d3a8e2580fc3a8c2df0a962b7920035ef7aec47bc81bd3bbc3d65b206b
7
+ data.tar.gz: 65ef7e2171aecf3e4a62c863601959e550bfad2d8c0e80ac7314469a13adc2dbdb079b6dc48ba02acf8e412da7aed44124c06d073dcfeeec67f0b79d071e13ef
@@ -0,0 +1,19 @@
1
+ module Spree::RansackableAttributes
2
+ extend ActiveSupport::Concern
3
+ included do
4
+ class_attribute :whitelisted_ransackable_associations
5
+ class_attribute :whitelisted_ransackable_attributes
6
+
7
+ class_attribute :default_ransackable_attributes
8
+ self.default_ransackable_attributes = %w[id name]
9
+
10
+ def self.ransackable_associations(*args)
11
+ self.whitelisted_ransackable_associations || []
12
+ end
13
+
14
+ def self.ransackable_attributes(*args)
15
+ self.default_ransackable_attributes | (self.whitelisted_ransackable_attributes || [])
16
+ end
17
+ end
18
+
19
+ end
@@ -16,6 +16,9 @@ module Spree
16
16
  alias_attribute :first_name, :firstname
17
17
  alias_attribute :last_name, :lastname
18
18
 
19
+
20
+ self.whitelisted_ransackable_attributes = %w[firstname lastname company]
21
+
19
22
  def self.build_default
20
23
  country = Spree::Country.find(Spree::Config[:default_country_id]) rescue Spree::Country.first
21
24
  new(country: country)
@@ -31,7 +31,7 @@ module Spree
31
31
  preference :auto_capture, :boolean, default: false # automatically capture the credit card (as opposed to just authorize and capture later)
32
32
  preference :auto_capture_on_dispatch, :boolean, default: false # Captures payment for each shipment in Shipment#after_ship callback, and makes Shipment.ready when payment authorized.
33
33
  preference :binary_inventory_cache, :boolean, default: false # only invalidate product cache when a stock item changes whether it is in_stock
34
- preference :check_for_spree_alerts, :boolean, default: true
34
+ preference :check_for_spree_alerts, :boolean, default: false
35
35
  preference :checkout_zone, :string, default: nil # replace with the name of a zone if you would like to limit the countries
36
36
  preference :company, :boolean, default: false # Request company field for billing and shipping addr
37
37
  preference :currency, :string, default: "USD"
@@ -1,6 +1,9 @@
1
1
  class Spree::Base < ActiveRecord::Base
2
2
  include Spree::Preferences::Preferable
3
3
  serialize :preferences, Hash
4
+
5
+ include Spree::RansackableAttributes
6
+
4
7
  after_initialize do
5
8
  self.preferences = default_preferences.merge(preferences) if has_attribute?(:preferences)
6
9
  end
@@ -35,6 +35,9 @@ module Spree
35
35
 
36
36
  attr_accessor :target_shipment
37
37
 
38
+ self.whitelisted_ransackable_associations = ['variant']
39
+ self.whitelisted_ransackable_attributes = ['variant_id']
40
+
38
41
  def copy_price
39
42
  if variant
40
43
  self.price = variant.price if price.nil?
@@ -9,6 +9,8 @@ module Spree
9
9
 
10
10
  after_touch :touch_all_variants
11
11
 
12
+ self.whitelisted_ransackable_attributes = ['presentation']
13
+
12
14
  def touch_all_variants
13
15
  variants.update_all(updated_at: Time.current)
14
16
  end
@@ -36,6 +36,9 @@ module Spree
36
36
  remove_transition from: :delivery, to: :confirm
37
37
  end
38
38
 
39
+ self.whitelisted_ransackable_associations = %w[shipments user promotions bill_address ship_address line_items]
40
+ self.whitelisted_ransackable_attributes = %w[completed_at created_at email number state payment_state shipment_state total considered_risky]
41
+
39
42
  attr_reader :coupon_code
40
43
  attr_accessor :temporary_address, :temporary_credit_card
41
44
 
@@ -10,6 +10,8 @@ module Spree
10
10
  extend DisplayMoney
11
11
  money_methods :amount, :price
12
12
 
13
+ self.whitelisted_ransackable_attributes = ['amount']
14
+
13
15
  def money
14
16
  Spree::Money.new(amount || 0, { currency: currency })
15
17
  end
@@ -99,6 +99,9 @@ module Spree
99
99
 
100
100
  alias :options :product_option_types
101
101
 
102
+ self.whitelisted_ransackable_associations = %w[stores variants_including_master master variants]
103
+ self.whitelisted_ransackable_attributes = %w[slug]
104
+
102
105
  # the master variant is not a member of the variants array
103
106
  def has_variants?
104
107
  variants.any?
@@ -11,6 +11,8 @@ module Spree
11
11
 
12
12
  default_scope { order("#{self.table_name}.position") }
13
13
 
14
+ self.whitelisted_ransackable_attributes = ['value']
15
+
14
16
  # virtual attributes for use with AJAX completion stuff
15
17
  def property_name
16
18
  property.name if property
@@ -32,6 +32,8 @@ module Spree
32
32
 
33
33
  scope :applied, -> { joins("INNER JOIN #{order_join_table} ON #{order_join_table}.promotion_id = #{table_name}.id").uniq }
34
34
 
35
+ self.whitelisted_ransackable_attributes = ['code', 'path', 'promotion_category_id']
36
+
35
37
  def self.advertised
36
38
  where(advertise: true)
37
39
  end
@@ -11,6 +11,8 @@ module Spree
11
11
 
12
12
  after_touch :touch_all_products
13
13
 
14
+ self.whitelisted_ransackable_attributes = ['presentation']
15
+
14
16
  private
15
17
 
16
18
  def touch_all_products
@@ -83,9 +83,9 @@ module Spree
83
83
  end
84
84
 
85
85
  def calculated_total
86
- # rounding down to handle edge cases for consecutive partial returns where rounding
87
- # might cause us to try to reimburse more than was originally billed
88
- return_items.to_a.sum(&:total).to_d.round(2, :down)
86
+ # rounding every return item individually to handle edge cases for consecutive partial
87
+ # returns where rounding might cause us to try to reimburse more than was originally billed
88
+ return_items.map { |ri| ri.total.to_d.round(2) }.sum
89
89
  end
90
90
 
91
91
  def paid_amount
@@ -4,7 +4,7 @@ module Spree
4
4
 
5
5
  class << self
6
6
  def reimburse(reimbursement, return_items, simulate)
7
- unpaid_amount = return_items.sum(&:total).round(2, :down)
7
+ unpaid_amount = return_items.map { |ri| ri.total.to_d.round(2) }.sum
8
8
  reimbursement_list, unpaid_amount = create_credits(reimbursement, unpaid_amount, simulate)
9
9
  reimbursement_list
10
10
  end
@@ -3,7 +3,7 @@ class Spree::ReimbursementType::OriginalPayment < Spree::ReimbursementType
3
3
 
4
4
  class << self
5
5
  def reimburse(reimbursement, return_items, simulate)
6
- unpaid_amount = return_items.sum(&:total).round(2, :down)
6
+ unpaid_amount = return_items.map { |ri| ri.total.to_d.round(2) }.sum
7
7
  payments = reimbursement.order.payments.completed
8
8
 
9
9
  refund_list, unpaid_amount = create_refunds(reimbursement, payments, unpaid_amount, simulate)
@@ -37,6 +37,8 @@ module Spree
37
37
  extend DisplayMoney
38
38
  money_methods :pre_tax_total
39
39
 
40
+ self.whitelisted_ransackable_attributes = ['memo']
41
+
40
42
  def pre_tax_total
41
43
  return_items.sum(:pre_tax_amount)
42
44
  end
@@ -85,6 +85,8 @@ module Spree
85
85
  end
86
86
  end
87
87
 
88
+ self.whitelisted_ransackable_attributes = ['number']
89
+
88
90
  extend DisplayMoney
89
91
  money_methods :cost, :discounted_cost, :final_price, :item_cost
90
92
  alias display_amount display_cost
@@ -19,6 +19,8 @@ module Spree
19
19
  after_save :conditional_variant_touch, if: :changed?
20
20
  after_touch { variant.touch }
21
21
 
22
+ self.whitelisted_ransackable_attributes = ['count_on_hand', 'stock_location_id']
23
+
22
24
  def backordered_inventory_units
23
25
  Spree::InventoryUnit.backordered_for_stock_item(self)
24
26
  end
@@ -15,6 +15,8 @@ module Spree
15
15
 
16
16
  scope :recent, -> { order('created_at DESC') }
17
17
 
18
+ self.whitelisted_ransackable_attributes = ['quantity']
19
+
18
20
  def readonly?
19
21
  !new_record?
20
22
  end
@@ -15,6 +15,8 @@ module Spree
15
15
  belongs_to :source_location, class_name: 'StockLocation'
16
16
  belongs_to :destination_location, class_name: 'StockLocation'
17
17
 
18
+ self.whitelisted_ransackable_attributes = %w[reference source_location_id destination_location_id closed_at created_at number]
19
+
18
20
  def to_param
19
21
  number
20
22
  end
@@ -51,6 +51,9 @@ module Spree
51
51
  end
52
52
  end
53
53
 
54
+ self.whitelisted_ransackable_associations = %w[option_values product prices default_price]
55
+ self.whitelisted_ransackable_attributes = %w[weight sku]
56
+
54
57
  def self.active(currency = nil)
55
58
  joins(:prices).where(deleted_at: nil).where('spree_prices.currency' => currency || Spree::Config[:currency]).where('spree_prices.amount IS NOT NULL')
56
59
  end
@@ -15,6 +15,8 @@ module Spree
15
15
  alias :members :zone_members
16
16
  accepts_nested_attributes_for :zone_members, allow_destroy: true, reject_if: proc { |a| a['zoneable_id'].blank? }
17
17
 
18
+ self.whitelisted_ransackable_attributes = ['description']
19
+
18
20
  def self.default_tax
19
21
  where(default_tax: true).first
20
22
  end
@@ -16,6 +16,14 @@ Spree::Core::Engine.config.to_prepare do
16
16
  belongs_to :ship_address, class_name: 'Spree::Address'
17
17
  belongs_to :bill_address, class_name: 'Spree::Address'
18
18
 
19
+ def self.ransackable_associations(auth_object=nil)
20
+ %w[bill_address ship_address]
21
+ end
22
+
23
+ def self.ransackable_attributes(auth_object=nil)
24
+ %w[id email]
25
+ end
26
+
19
27
  # has_spree_role? simply needs to return true or false whether a user has a role or not.
20
28
  def has_spree_role?(role_in_question)
21
29
  spree_roles.where(name: role_in_question.to_s).any?
@@ -1,5 +1,5 @@
1
1
  module Spree
2
2
  def self.version
3
- '3.0.3'
3
+ '3.0.4'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.3
4
+ version: 3.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Schofield
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-28 00:00:00.000000000 Z
11
+ date: 2015-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemerchant
@@ -393,6 +393,7 @@ files:
393
393
  - app/models/concerns/spree/display_money.rb
394
394
  - app/models/concerns/spree/named_type.rb
395
395
  - app/models/concerns/spree/number_generator.rb
396
+ - app/models/concerns/spree/ransackable_attributes.rb
396
397
  - app/models/concerns/spree/user_address.rb
397
398
  - app/models/concerns/spree/user_api_authentication.rb
398
399
  - app/models/concerns/spree/user_payment_source.rb