artfully_ose 1.2.0.pre.21 → 1.2.0.pre.23

Sign up to get free protection for your applications and to get access to all the features.
Files changed (124) hide show
  1. checksums.yaml +8 -8
  2. data/app/assets/javascripts/change-membership.js +8 -4
  3. data/app/assets/javascripts/custom/show.js +13 -8
  4. data/app/assets/javascripts/locationselector.js +1 -1
  5. data/app/assets/javascripts/store/store.js +7 -0
  6. data/app/assets/stylesheets/application.sass +21 -1
  7. data/app/assets/stylesheets/sass/_tags.sass +13 -2
  8. data/app/controllers/discounts_controller.rb +8 -1
  9. data/app/controllers/events_controller.rb +29 -13
  10. data/app/controllers/events_pass_types_controller.rb +75 -0
  11. data/app/controllers/imports_controller.rb +10 -3
  12. data/app/controllers/membership_types_controller.rb +1 -0
  13. data/app/controllers/pass_types_controller.rb +42 -0
  14. data/app/controllers/passes_controller.rb +13 -0
  15. data/app/controllers/passes_kits_controller.rb +25 -0
  16. data/app/controllers/passes_reports_controller.rb +5 -0
  17. data/app/controllers/sales_controller.rb +0 -2
  18. data/app/controllers/searches_controller.rb +10 -3
  19. data/app/controllers/sections_controller.rb +1 -1
  20. data/app/controllers/segments_controller.rb +4 -4
  21. data/app/controllers/shows_controller.rb +21 -47
  22. data/app/controllers/store/checkouts_controller.rb +6 -1
  23. data/app/controllers/store/orders_controller.rb +2 -0
  24. data/app/controllers/store/passes_controller.rb +9 -0
  25. data/app/controllers/store/store_controller.rb +7 -2
  26. data/app/helpers/link_helper.rb +10 -0
  27. data/app/mailers/reports_mailer.rb +5 -4
  28. data/app/models/cart.rb +21 -16
  29. data/app/models/checkout.rb +6 -1
  30. data/app/models/daily_membership_report.rb +1 -1
  31. data/app/models/daily_pass_report.rb +48 -0
  32. data/app/models/database_views/item_view.rb +69 -19
  33. data/app/models/event.rb +5 -0
  34. data/app/models/events_pass_type.rb +16 -0
  35. data/app/models/ext/integrations.rb +1 -1
  36. data/app/models/ext/preprocessor.rb +1 -0
  37. data/app/models/import.rb +18 -15
  38. data/app/models/imports/donations_import.rb +1 -1
  39. data/app/models/imports/events_import.rb +33 -28
  40. data/app/models/item.rb +13 -3
  41. data/app/models/job/daily_email_report_job.rb +8 -2
  42. data/app/models/job/order_processor.rb +10 -1
  43. data/app/models/job/show_creator.rb +2 -1
  44. data/app/models/kit.rb +1 -1
  45. data/app/models/kits/passes_kit.rb +62 -0
  46. data/app/models/membership.rb +19 -6
  47. data/app/models/membership_change.rb +18 -7
  48. data/app/models/membership_comp.rb +1 -0
  49. data/app/models/membership_type.rb +1 -1
  50. data/app/models/order.rb +18 -9
  51. data/app/models/order_handler.rb +22 -0
  52. data/app/models/organization.rb +7 -0
  53. data/app/models/pass.rb +45 -0
  54. data/app/models/pass_type.rb +19 -0
  55. data/app/models/person.rb +4 -0
  56. data/app/models/search.rb +170 -63
  57. data/app/models/section.rb +2 -0
  58. data/app/models/show.rb +26 -2
  59. data/app/models/show_touch.rb +12 -0
  60. data/app/models/ticket.rb +6 -0
  61. data/app/models/ticket/pricing.rb +1 -0
  62. data/app/models/ticket/reports.rb +16 -0
  63. data/app/models/ticket/sale_transitions.rb +4 -0
  64. data/app/models/ticket/transfers.rb +4 -1
  65. data/app/presenters/event_presenter.rb +1 -1
  66. data/app/views/discounts/_form.html.haml +1 -1
  67. data/app/views/events/_menu.html.haml +4 -13
  68. data/app/views/events/_share_and_sell.haml +2 -1
  69. data/app/views/events_pass_types/_form.html.haml +25 -0
  70. data/app/views/events_pass_types/edit.html.haml +22 -0
  71. data/app/views/events_pass_types/index.html.haml +43 -0
  72. data/app/views/events_pass_types/new.html.haml +22 -0
  73. data/app/views/imports/index.html.haml +2 -2
  74. data/app/views/layouts/_menu.html.haml +2 -1
  75. data/app/views/layouts/storefront.html.haml +3 -1
  76. data/app/views/membership_cancellations/_form.html.haml +1 -1
  77. data/app/views/membership_cancellations/_processing.html.haml +1 -3
  78. data/app/views/membership_types/index.html.haml +1 -1
  79. data/app/views/memberships/index.html.haml +16 -25
  80. data/app/views/orders/_item_table.haml +2 -2
  81. data/app/views/pass_types/_form.html.haml +70 -0
  82. data/app/views/pass_types/_pass_type_fees.html.haml +48 -0
  83. data/app/views/pass_types/edit.html.haml +4 -0
  84. data/app/views/pass_types/index.html.haml +32 -0
  85. data/app/views/pass_types/new.html.haml +4 -0
  86. data/app/views/passes/index.html.haml +40 -0
  87. data/app/views/passes_kits/edit.html.haml +30 -0
  88. data/app/views/passes_reports/index.html.haml +2 -0
  89. data/app/views/people/_header.html.haml +6 -1
  90. data/app/views/reports_mailer/daily.html.haml +19 -0
  91. data/app/views/searches/_form.html.haml +17 -1
  92. data/app/views/shared/_show_time_and_calendar.html.haml +21 -0
  93. data/app/views/shared/_tags.html.haml +2 -2
  94. data/app/views/shows/_controls.html.haml +4 -4
  95. data/app/views/shows/_glance.html.haml +0 -4
  96. data/app/views/shows/_sections_table.html.haml +6 -4
  97. data/app/views/shows/_work_with.html.haml +2 -2
  98. data/app/views/shows/index.html.haml +79 -20
  99. data/app/views/shows/new.html.haml +1 -21
  100. data/app/views/statements/_passes_table.html.haml +25 -0
  101. data/app/views/statements/show.html.haml +4 -1
  102. data/app/views/store/checkouts/thanks.html.haml +13 -5
  103. data/app/views/store/orders/show.html.haml +26 -1
  104. data/app/views/store/passes/index.html.haml +33 -0
  105. data/config/locales/en.yml +2 -0
  106. data/config/routes.rb +8 -2
  107. data/db/migrate/20140207135731_update_items_view.rb +38 -0
  108. data/db/migrate/20140210154723_add_cached_stats.rb +5 -0
  109. data/db/migrate/20140218202726_cache_stats.rb +7 -0
  110. data/db/migrate/20140304171625_passes_ahoy.rb +52 -0
  111. data/db/migrate/20140304174807_add_passes_kit.rb +5 -0
  112. data/db/migrate/20140307144454_add_events_pass_types.rb +9 -0
  113. data/db/migrate/20140307193350_add_pass_id_to_cart.rb +7 -0
  114. data/db/migrate/20140314162422_add_total_paid_to_membership.rb +13 -0
  115. data/db/migrate/20140319191237_add_show_dates_to_advanced_search.rb +6 -0
  116. data/db/migrate/20140328172333_add_cols_to_events_pass_types.rb +6 -0
  117. data/db/migrate/20140328174217_add_deleted_at_to_ept.rb +9 -0
  118. data/db/migrate/20140328185432_add_active_to_ept.rb +5 -0
  119. data/db/migrate/20140328192612_add_pass_type_id_to_search.rb +5 -0
  120. data/lib/artfully_ose.rb +3 -3
  121. data/lib/artfully_ose/version.rb +1 -1
  122. data/spec/factories/kit_factories.rb +5 -0
  123. data/spec/factories/membership_factories.rb +1 -0
  124. metadata +45 -6
@@ -9,27 +9,7 @@
9
9
  .span9
10
10
  = render "shared/error_messages", :target => @event
11
11
  = form_for @show, :html => { :class => 'form-horizontal' }, :url => event_shows_path(@event, @show) do |show_form|
12
- .control-group
13
- .navbar.clean
14
- .navbar-inner
15
- .brand.brand-lite Show Time
16
- .controls
17
- =select_tag :hour, options_for_select(["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], "8"), :id => "show-time-hour", :class => "input-small"
18
- =":"
19
- =select_tag :minute, options_for_select(["00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59"]), :id => "show-time-minute", :class => "input-small"
20
- =select_tag :meridian, options_for_select([["AM", "a"], ["PM", "p"]], "p"), :id => "show-time-meridian", :class => "input-small"
21
- .bottom-room
22
- .navbar.clean
23
- .navbar-inner
24
- .brand.brand-lite Show Dates
25
- #new-show-calendar{'data-event-id' => @event.id}
26
- #calendar-help
27
- .pull-right
28
- %span{:style => 'background-color: #adadad'} &nbsp&nbsp&nbsp&nbsp
29
- Existing shows
30
- %span{:style => 'background-color: #3a87ad'} &nbsp&nbsp&nbsp&nbsp
31
- New shows
32
- %div{:style => "clear:both"}
12
+ =render :partial => "shared/show_time_and_calendar", :locals => {:event_type => "events"}
33
13
 
34
14
  .navbar.clean
35
15
  .navbar-inner
@@ -0,0 +1,25 @@
1
+ %table.standalone.table
2
+ %thead
3
+ %tr
4
+ %th Pass Type
5
+ %th.right{:style=>'width:100px'} Tickets
6
+ %th.right{:style=>'width:100px'}
7
+ %th.right{:style=>'width:100px'}
8
+ %th.right{:style=>'width:100px'}
9
+ %tbody
10
+ / - if statement.discount_rows.empty?
11
+ / %tr
12
+ / %td{:colspan => 6} No passes used for this show
13
+
14
+ %tr
15
+ %td="Summer Play Pass"
16
+ %td.right=rand(30)
17
+ %td.right
18
+ %td.right
19
+ %td.right
20
+ %tr
21
+ %td="Golden Ticket"
22
+ %td.right=19
23
+ %td.right
24
+ %td.right
25
+ %td.right
@@ -28,4 +28,7 @@
28
28
  #order_location
29
29
  = render :partial => 'order_location_table', :locals => { :statement => @statement }
30
30
  #discounts_table
31
- = render :partial => 'discounts_table', :locals => { :statement => @statement }
31
+ = render :partial => 'discounts_table', :locals => { :statement => @statement }
32
+ -with_kit(:passes) do
33
+ #passes_table
34
+ = render :partial => 'passes_table', :locals => { :statement => @statement }
@@ -32,6 +32,9 @@
32
32
  - if @fafs_success == true
33
33
  %p Thank you for your donation! You will receive a separate email confirmation for that donation.
34
34
 
35
+ %p{:style => "text-align:center"}
36
+ =link_to "Use Your Pass Now!", store_organization_events_path(@store_organization.cached_slug), :class => "btn btn-success btn-large"
37
+
35
38
  #shopping-cart-display
36
39
  .well
37
40
  -unless @order.tickets.empty?
@@ -62,6 +65,14 @@
62
65
  %td="Donation to #{@store_organization.name}"
63
66
  %td.right=number_as_cents item.total_price
64
67
 
68
+ -unless @order.passes.empty?
69
+ %h4 Passes
70
+ %table.table
71
+ -@order.passes.each do |item|
72
+ %tr
73
+ %td="#{item.product.pass_type.passerize}: #{item.product.pass_code}"
74
+ %td.right=number_as_cents item.total_price
75
+
65
76
  %table.table
66
77
  -@order.discount_codes.each do |discount|
67
78
  %tr#discount-display
@@ -69,11 +80,8 @@
69
80
  Discount code
70
81
  %span=discount.code
71
82
 
72
- -# Hiding this, because we display the sold price of the tickets in this view.
73
- -# also displaying the discount amount makes the math wrong
74
- %td.right.amount
75
- -#=number_as_cents @order.total_discount
76
-
83
+ %td.right.amount  
84
+
77
85
  %table.table
78
86
  -unless @order.service_fee == 0
79
87
  %tr
@@ -26,9 +26,17 @@
26
26
  %td=membership.membership_type.membershipize
27
27
  %td.right=number_as_cents membership.price
28
28
 
29
+ -unless current_cart.passes.empty?
30
+ %h4 Passes
31
+ %table.table#passes-table
32
+ -current_cart.passes.each do |pass|
33
+ %tr
34
+ %td=pass.pass_type.passerize
35
+ %td.right=number_as_cents pass.price
36
+
29
37
  -unless current_cart.donations.empty?
30
38
  %h4 Donations
31
- %table.table#memberships-table
39
+ %table.table#donations-table
32
40
  -current_cart.donations.each do |donation|
33
41
  %tr
34
42
  %td="Donation to #{@store_organization.name}"
@@ -51,6 +59,23 @@
51
59
  %td.right.amount
52
60
  =number_as_cents current_cart.discount_amount
53
61
 
62
+ -if @store_organization.can? :access, :passes
63
+ = form_tag store_order_path(@store_organization.cached_slug) do
64
+ %table.table
65
+ %tr#pass-code-input{:style => 'display:none'}
66
+ %td= text_field_tag 'pass_code', params[:pass_code], :placeholder => "Enter pass here, eg. COWBELL"
67
+ %td= button_tag "Apply", :class => 'btn btn-primary', :disable_with => "Applying..."
68
+ -if current_cart.applied_pass.nil?
69
+ %tr#pass-code-link
70
+ %td= link_to "Apply Pass Code", "#"
71
+ -else
72
+ %tr#discount-display
73
+ %td.details
74
+ Pass code
75
+ %span=current_cart.applied_pass.pass_code
76
+ #pass-code-link= link_to "Change", "#", :class => 'btn btn-primary'
77
+ %td.right.amount
78
+
54
79
  %table.table#totals-table
55
80
  -unless current_cart.fee_in_cents == 0
56
81
  %tr
@@ -0,0 +1,33 @@
1
+ - content_for :title do
2
+ Purchase a Pass
3
+
4
+ .container
5
+ %h1 Purchase a Pass
6
+
7
+ .row#membership-storefront
8
+ .span8
9
+ #salesy{:style => "margin-bottom: 20px"}
10
+ =@passes_kit.marketing_copy_heading.html_safe
11
+
12
+ - @pass_types.each do |pass_type|
13
+ .row-fluid{:id => "pass-type-#{pass_type.id}"}
14
+ .span12
15
+ %ul#memberships.unstyled
16
+ %li
17
+ .title.active
18
+ .price
19
+ =number_as_cents pass_type.price
20
+ .membership_type_name
21
+ =pass_type.name
22
+ =pass_type.description
23
+ %br
24
+ %br
25
+ .section
26
+ = form_for pass_type, :as => :pass_type, :url => store_order_path(@store_organization.cached_slug), :html => {:id => "edit_pass_type_#{pass_type.id}"}, :method => :post do |f|
27
+ = f.hidden_field :id
28
+ = select_tag :quantity, options_for_select((1..6).to_a.map {|i| [pluralize(i, "#{pass_type.name} Pass"), i]})
29
+ = f.submit 'Add to cart', :class => 'btn btn-primary', :style => 'margin-top: -10px'
30
+
31
+ .span4
32
+ .side-section
33
+ =@passes_kit.marketing_copy_sidebar.html_safe
@@ -182,6 +182,8 @@
182
182
  seasonal_membership_type:
183
183
  starts_at: "Membership begins"
184
184
  ends_at: "Membership ends"
185
+ pass_type:
186
+ tickets_allowed: "Number of Tickets"
185
187
  organization:
186
188
  # Blithering hack to get around Rails' miserable validation message handling
187
189
  cached_slug: "Sorry,"
data/config/routes.rb CHANGED
@@ -48,6 +48,7 @@ Rails.application.routes.draw do
48
48
  namespace :store do
49
49
  resources :events, :only => [:show, :index]
50
50
  resources :memberships, :only => [:show, :index]
51
+ resources :passes, :only => [:show, :index]
51
52
  resources :rolling_membership_types, :controller => :membership_types
52
53
  resources :seasonal_membership_types, :controller => :membership_types
53
54
  resources :shows, :only => :show
@@ -116,6 +117,8 @@ Rails.application.routes.draw do
116
117
  end
117
118
 
118
119
  resources :membership_kits, :only => [ :edit, :update ]
120
+ resources :passes_kits, :only => [ :edit, :update ]
121
+ resources :passes_reports, :only => [:index]
119
122
 
120
123
  resources :reports, :only => :index
121
124
  resources :statements, :only => [ :index, :show ] do
@@ -128,6 +131,7 @@ Rails.application.routes.draw do
128
131
 
129
132
  def people_actions
130
133
  resources :actions
134
+ resources :passes, :only => [:index]
131
135
  resources :memberships do
132
136
  collection do
133
137
  post :bulk_update
@@ -201,16 +205,17 @@ Rails.application.routes.draw do
201
205
  get :messages
202
206
  end
203
207
  resources :discounts
208
+ resources :events_pass_types
204
209
  resources :shows do
205
210
  resource :sales, :only => [:new, :create, :show, :update]
206
211
  member do
207
212
  get :door_list
208
213
  post :published
209
214
  post :unpublished
215
+ post :on_sale
216
+ post :off_sale
210
217
  end
211
218
  collection do
212
- post :built
213
- post :on_sale
214
219
  get :calendar
215
220
  get :upcoming
216
221
  get "/:year/:month", :as => :monthly, :action => :index
@@ -268,6 +273,7 @@ Rails.application.routes.draw do
268
273
  resources :returns, :only => :create
269
274
  resources :comps, :only => [ :new, :create ]
270
275
  resources :merges, :only => [ :new, :create ]
276
+ resources :pass_types
271
277
  resources :membership_types
272
278
  resources :rolling_membership_types, :controller => :membership_types
273
279
  resources :seasonal_membership_types, :controller => :membership_types
@@ -0,0 +1,38 @@
1
+ class UpdateItemsView < ActiveRecord::Migration
2
+ def up
3
+ execute "CREATE OR REPLACE VIEW items_view as " +
4
+ "select " +
5
+ "orders.id as order_id," +
6
+ "orders.type as order_type," +
7
+ "items.id as item_id," +
8
+ "items.product_type as product_type," +
9
+ "organizations.id as organization_id," +
10
+ "organizations.name as organization_name," +
11
+ "organizations.time_zone as time_zone," +
12
+ "orders.created_at," +
13
+ "orders.payment_method," +
14
+ # people and addresses got moved out into a relation
15
+ # since this export now runs in a background job, speed isn't the primary concern
16
+ "people.id as person_id," +
17
+ "shows.datetime," +
18
+ "shows.id as show_id," +
19
+ "events.id as event_id," +
20
+ "events.name as event_name," +
21
+ "items.price," +
22
+ "items.nongift_amount," +
23
+ "orders.special_instructions, " +
24
+ "orders.notes " +
25
+ "from items " +
26
+ "LEFT OUTER JOIN `orders` ON `orders`.`id` = `items`.`order_id`" +
27
+ "LEFT OUTER JOIN `people` ON `people`.`id` = `orders`.`person_id` " +
28
+ "LEFT OUTER JOIN `organizations` ON `organizations`.`id` = `orders`.`organization_id`" +
29
+ "LEFT OUTER JOIN `shows` ON `shows`.`id` = `items`.`show_id` " +
30
+ "LEFT OUTER JOIN `events` ON `events`.`id` = `shows`.`event_id` " +
31
+ "LEFT OUTER JOIN `venues` ON `venues`.`id` = `events`.`venue_id`" +
32
+ "WHERE `items`.`deleted_at` IS NULL "
33
+ end
34
+
35
+ def down
36
+ execute "drop view items_view"
37
+ end
38
+ end
@@ -0,0 +1,5 @@
1
+ class AddCachedStats < ActiveRecord::Migration
2
+ def change
3
+ add_column :shows, :cached_stats, :text
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ class CacheStats < ActiveRecord::Migration
2
+ def change
3
+ Show.find_in_batches do |shows|
4
+ shows.each {|s| s.delay.refresh_stats unless s.event.nil? }
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,52 @@
1
+ class PassesAhoy < ActiveRecord::Migration
2
+ def change
3
+ create_table :pass_types do |t|
4
+ t.belongs_to :organization
5
+ t.belongs_to :segment
6
+
7
+ t.string :name
8
+ t.integer :price
9
+
10
+ t.datetime :starts_at
11
+ t.datetime :ends_at
12
+ t.datetime :sales_start_at
13
+ t.datetime :sales_end_at
14
+ t.boolean :on_sale
15
+ t.integer :tickets_allowed
16
+
17
+ t.boolean :hide_fee
18
+
19
+ t.text :description
20
+ t.text :thanks_copy
21
+
22
+ end
23
+
24
+ add_index :pass_types, :organization_id
25
+
26
+ create_table :passes do |t|
27
+ t.belongs_to :organization
28
+ t.belongs_to :person
29
+ t.belongs_to :cart
30
+ t.belongs_to :pass_type
31
+
32
+ t.string :pass_code
33
+
34
+ t.integer :price
35
+ t.integer :sold_price
36
+
37
+ t.datetime :starts_at
38
+ t.datetime :ends_at
39
+
40
+ t.integer :service_fee
41
+ t.boolean :send_email
42
+
43
+ t.integer :tickets_allowed
44
+ t.integer :tickets_purchased
45
+
46
+ t.timestamps
47
+ end
48
+ add_index :passes, :organization_id
49
+ add_index :passes, :person_id
50
+ add_index :passes, :pass_type_id
51
+ end
52
+ end
@@ -0,0 +1,5 @@
1
+ class AddPassesKit < ActiveRecord::Migration
2
+ def change
3
+ PassesKit.create!({:state => "activated", :organization => Organization.first}, :without_protection => true)
4
+ end
5
+ end
@@ -0,0 +1,9 @@
1
+ class AddEventsPassTypes < ActiveRecord::Migration
2
+ def change
3
+ create_table :events_pass_types do |t|
4
+ t.belongs_to :organization
5
+ t.belongs_to :event
6
+ t.belongs_to :pass_type
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ class AddPassIdToCart < ActiveRecord::Migration
2
+ def change
3
+ add_column :carts, :applied_pass_id, :integer, :default => nil
4
+ add_column :tickets, :pass_id, :integer, :default => nil
5
+ add_column :items, :pass_id, :integer, :default => nil
6
+ end
7
+ end
@@ -0,0 +1,13 @@
1
+ class AddTotalPaidToMembership < ActiveRecord::Migration
2
+ def change
3
+ add_column :memberships, :cart_price, :integer
4
+ add_column :memberships, :total_paid, :integer
5
+ add_column :memberships, :changed_membership_id, :integer, :defult => nil
6
+
7
+ Membership.all.each do |membership|
8
+ membership.cart_price = membership.sold_price
9
+ membership.total_paid = membership.sold_price
10
+ membership.save
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,6 @@
1
+ class AddShowDatesToAdvancedSearch < ActiveRecord::Migration
2
+ def change
3
+ add_column :searches, :show_date_start, :datetime, :default => nil
4
+ add_column :searches, :show_date_end, :datetime, :default => nil
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ class AddColsToEventsPassTypes < ActiveRecord::Migration
2
+ def change
3
+ add_column :events_pass_types, :ticket_types, :text
4
+ add_column :events_pass_types, :excluded_shows, :text
5
+ end
6
+ end
@@ -0,0 +1,9 @@
1
+ class AddDeletedAtToEpt < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :events_pass_types, :deleted_at, :datetime
4
+ end
5
+
6
+ def self.down
7
+ remove_column :events_pass_types, :deleted_at
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ class AddActiveToEpt < ActiveRecord::Migration
2
+ def change
3
+ add_column :events_pass_types, :active, :boolean, :default => true
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddPassTypeIdToSearch < ActiveRecord::Migration
2
+ def change
3
+ add_column :searches, :pass_type_id, :integer, :default => nil
4
+ end
5
+ end
data/lib/artfully_ose.rb CHANGED
@@ -1,11 +1,11 @@
1
+ require "devise"
2
+ require "devise_invitable"
3
+ require "devise_suspendable"
1
4
  require "artfully_ose/engine"
2
5
  require "artfully_ose/common_abilities"
3
6
  require "artfully_ose/core_ext"
4
7
  require "transitions"
5
8
  require "active_record/transitions"
6
- require "devise"
7
- require "devise_invitable"
8
- require "devise_suspendable"
9
9
  require "slugged"
10
10
 
11
11
  require "active_merchant"