piggybak 0.6.7 → 0.6.8

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.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- piggybak (0.6.7)
4
+ piggybak (0.6.8)
5
5
  activemerchant
6
6
  countries
7
7
  devise
data/README.md CHANGED
@@ -65,8 +65,6 @@ TODO
65
65
 
66
66
  * Ensure that changes in nested addresses are recorded on order notes.
67
67
 
68
- * Add admin side validation to limit 1 payment at a time
69
-
70
68
  * Add/check validation to ensure sufficient inventory
71
69
 
72
70
  * Add copy from billing above shipping address section button in admin
@@ -18,6 +18,7 @@ module Piggybak
18
18
  validates_presence_of :status, :email, :phone, :total, :total_due, :created_at, :ip_address, :user_agent
19
19
 
20
20
  after_initialize :initialize_defaults
21
+ validate :number_payments
21
22
  before_save :postprocess_order, :update_status, :set_new_record
22
23
  after_save :record_order_note
23
24
 
@@ -43,6 +44,16 @@ module Piggybak
43
44
  self.disable_order_notes = false
44
45
  end
45
46
 
47
+ def number_payments
48
+ number_payments = self.line_items.select { |li| li.new_record? && li.line_item_type == "payment" }.size
49
+ if number_payments > 1
50
+ self.errors.add(:base, "Only one payment may be created at a time.")
51
+ self.line_items.select { |li| li.new_record? && li.line_item_type == "payment" }.each do |li|
52
+ li.errors.add(:line_item_type, "Only one payment may be created at a time.")
53
+ end
54
+ end
55
+ end
56
+
46
57
  def initialize_user(user, on_post)
47
58
  if user
48
59
  self.user = user
@@ -1,6 +1,10 @@
1
1
  class AddPriceToLineItem < ActiveRecord::Migration
2
2
  def up
3
3
  add_column :line_items, :price, :decimal, :null => false, :default => 0.0
4
+
5
+ change_table(:line_items) do |t|
6
+ t.timestamps
7
+ end
4
8
 
5
9
  Piggybak::LineItem.all.each do |line_item|
6
10
  line_item.update_attribute(:price, line_item.total/line_item.quantity)
@@ -5,9 +5,6 @@ class LineItemRearchitecture < ActiveRecord::Migration
5
5
  rename_column :line_items, :total, :price
6
6
  change_column :line_items, :sellable_id, :integer, :null => true
7
7
  add_column :line_items, :sort, :integer, :null => false, :default => 0
8
- change_table(:line_items) do |t|
9
- t.timestamps
10
- end
11
8
 
12
9
  add_column :shipments, :line_item_id, :integer
13
10
  add_column :payments, :line_item_id, :integer
@@ -6,19 +6,31 @@ module Piggybak
6
6
 
7
7
  desc "install", "install and configure piggybak"
8
8
  def install
9
- inject_devise
10
- inject_rails_admin
11
- run('bundle install')
9
+ if already_installed?
10
+ update
11
+ else
12
+ inject_devise
13
+ inject_rails_admin
14
+ run('bundle install')
15
+ run('rake piggybak_engine:install:migrations')
16
+ run('rake db:migrate')
17
+ run('rails generate devise:install')
18
+ run('rails generate devise User')
19
+ run('rake db:migrate')
20
+ run('rails g rails_admin:install')
21
+ run('rake db:migrate')
22
+ mount_piggybak_route
23
+ add_javascript_include_tag
24
+ say_welcome
25
+ end
26
+ end
27
+
28
+ desc "update", "update piggybak"
29
+ def update
30
+ say "Piggybak install detected"
31
+ say "Updating current Piggybak install"
12
32
  run('rake piggybak_engine:install:migrations')
13
- run('rake db:migrate')
14
- run('rails generate devise:install')
15
- run('rails generate devise User')
16
- run('rake db:migrate')
17
- run('rails g rails_admin:install')
18
- run('rake db:migrate')
19
- mount_piggybak_route
20
- add_javascript_include_tag
21
- welcome
33
+ say_upgraded
22
34
  end
23
35
 
24
36
  desc "inject_devise", "add devise"
@@ -34,9 +46,9 @@ module Piggybak
34
46
  insert_into_file "Gemfile", "gem 'rails_admin'\n", :after => "gem 'devise'\n"
35
47
  end
36
48
 
37
- desc "mount_piggybak_route", "mount piggbak route"
49
+ desc "mount_piggybak_route", "mount piggybak route"
38
50
  def mount_piggybak_route
39
- insert_into_file "config/routes.rb", "\n mount Piggybak::Engine => '/checkout', :as => 'piggybak'\n", :after => "Village::Application.routes.draw do\n"
51
+ insert_into_file "config/routes.rb", "\n mount Piggybak::Engine => '/checkout', :as => 'piggybak'\n", :after => "Application.routes.draw do\n"
40
52
  end
41
53
 
42
54
  desc "add_javascript_include_tag", "add javascript include tag to application layout"
@@ -71,5 +83,24 @@ module Piggybak
71
83
  say " acts_as_sellable"
72
84
  say "end"
73
85
  end
86
+
87
+ desc "say_upgraded", "piggybak upgraded"
88
+ def say_upgraded
89
+ say ""
90
+ say ""
91
+ say ""
92
+ say "******************************************************************"
93
+ say "******************************************************************"
94
+ say "Piggybak Successfully Upgraded!"
95
+ say "******************************************************************"
96
+ end
97
+
98
+ private
99
+
100
+ def already_installed?
101
+ open('config/routes.rb') { |f| f.grep(/Piggybak\:\:Engine/) }.any?
102
+ end
103
+
104
+
74
105
  end
75
106
  end
@@ -1,3 +1,3 @@
1
1
  module Piggybak
2
- VERSION = "0.6.7"
2
+ VERSION = "0.6.8"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: piggybak
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.7
4
+ version: 0.6.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-10-22 00:00:00.000000000 Z
14
+ date: 2012-10-25 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rails
@@ -96,7 +96,8 @@ dependencies:
96
96
  description: Mountable Ruby on Rails Ecommerce.
97
97
  email:
98
98
  - piggybak@endpoint.com
99
- executables: []
99
+ executables:
100
+ - piggybak
100
101
  extensions: []
101
102
  extra_rdoc_files: []
102
103
  files:
@@ -210,7 +211,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
210
211
  version: '0'
211
212
  segments:
212
213
  - 0
213
- hash: 849133339479137075
214
+ hash: 3697325078829363009
214
215
  required_rubygems_version: !ruby/object:Gem::Requirement
215
216
  none: false
216
217
  requirements:
@@ -219,7 +220,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
219
220
  version: '0'
220
221
  segments:
221
222
  - 0
222
- hash: 849133339479137075
223
+ hash: 3697325078829363009
223
224
  requirements: []
224
225
  rubyforge_project:
225
226
  rubygems_version: 1.8.23