piggybak 0.6.7 → 0.6.8

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