spree_core 3.0.3 → 3.0.4

Sign up to get free protection for your applications and to get access to all the features.
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