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.
- checksums.yaml +8 -8
- data/app/assets/javascripts/change-membership.js +8 -4
- data/app/assets/javascripts/custom/show.js +13 -8
- data/app/assets/javascripts/locationselector.js +1 -1
- data/app/assets/javascripts/store/store.js +7 -0
- data/app/assets/stylesheets/application.sass +21 -1
- data/app/assets/stylesheets/sass/_tags.sass +13 -2
- data/app/controllers/discounts_controller.rb +8 -1
- data/app/controllers/events_controller.rb +29 -13
- data/app/controllers/events_pass_types_controller.rb +75 -0
- data/app/controllers/imports_controller.rb +10 -3
- data/app/controllers/membership_types_controller.rb +1 -0
- data/app/controllers/pass_types_controller.rb +42 -0
- data/app/controllers/passes_controller.rb +13 -0
- data/app/controllers/passes_kits_controller.rb +25 -0
- data/app/controllers/passes_reports_controller.rb +5 -0
- data/app/controllers/sales_controller.rb +0 -2
- data/app/controllers/searches_controller.rb +10 -3
- data/app/controllers/sections_controller.rb +1 -1
- data/app/controllers/segments_controller.rb +4 -4
- data/app/controllers/shows_controller.rb +21 -47
- data/app/controllers/store/checkouts_controller.rb +6 -1
- data/app/controllers/store/orders_controller.rb +2 -0
- data/app/controllers/store/passes_controller.rb +9 -0
- data/app/controllers/store/store_controller.rb +7 -2
- data/app/helpers/link_helper.rb +10 -0
- data/app/mailers/reports_mailer.rb +5 -4
- data/app/models/cart.rb +21 -16
- data/app/models/checkout.rb +6 -1
- data/app/models/daily_membership_report.rb +1 -1
- data/app/models/daily_pass_report.rb +48 -0
- data/app/models/database_views/item_view.rb +69 -19
- data/app/models/event.rb +5 -0
- data/app/models/events_pass_type.rb +16 -0
- data/app/models/ext/integrations.rb +1 -1
- data/app/models/ext/preprocessor.rb +1 -0
- data/app/models/import.rb +18 -15
- data/app/models/imports/donations_import.rb +1 -1
- data/app/models/imports/events_import.rb +33 -28
- data/app/models/item.rb +13 -3
- data/app/models/job/daily_email_report_job.rb +8 -2
- data/app/models/job/order_processor.rb +10 -1
- data/app/models/job/show_creator.rb +2 -1
- data/app/models/kit.rb +1 -1
- data/app/models/kits/passes_kit.rb +62 -0
- data/app/models/membership.rb +19 -6
- data/app/models/membership_change.rb +18 -7
- data/app/models/membership_comp.rb +1 -0
- data/app/models/membership_type.rb +1 -1
- data/app/models/order.rb +18 -9
- data/app/models/order_handler.rb +22 -0
- data/app/models/organization.rb +7 -0
- data/app/models/pass.rb +45 -0
- data/app/models/pass_type.rb +19 -0
- data/app/models/person.rb +4 -0
- data/app/models/search.rb +170 -63
- data/app/models/section.rb +2 -0
- data/app/models/show.rb +26 -2
- data/app/models/show_touch.rb +12 -0
- data/app/models/ticket.rb +6 -0
- data/app/models/ticket/pricing.rb +1 -0
- data/app/models/ticket/reports.rb +16 -0
- data/app/models/ticket/sale_transitions.rb +4 -0
- data/app/models/ticket/transfers.rb +4 -1
- data/app/presenters/event_presenter.rb +1 -1
- data/app/views/discounts/_form.html.haml +1 -1
- data/app/views/events/_menu.html.haml +4 -13
- data/app/views/events/_share_and_sell.haml +2 -1
- data/app/views/events_pass_types/_form.html.haml +25 -0
- data/app/views/events_pass_types/edit.html.haml +22 -0
- data/app/views/events_pass_types/index.html.haml +43 -0
- data/app/views/events_pass_types/new.html.haml +22 -0
- data/app/views/imports/index.html.haml +2 -2
- data/app/views/layouts/_menu.html.haml +2 -1
- data/app/views/layouts/storefront.html.haml +3 -1
- data/app/views/membership_cancellations/_form.html.haml +1 -1
- data/app/views/membership_cancellations/_processing.html.haml +1 -3
- data/app/views/membership_types/index.html.haml +1 -1
- data/app/views/memberships/index.html.haml +16 -25
- data/app/views/orders/_item_table.haml +2 -2
- data/app/views/pass_types/_form.html.haml +70 -0
- data/app/views/pass_types/_pass_type_fees.html.haml +48 -0
- data/app/views/pass_types/edit.html.haml +4 -0
- data/app/views/pass_types/index.html.haml +32 -0
- data/app/views/pass_types/new.html.haml +4 -0
- data/app/views/passes/index.html.haml +40 -0
- data/app/views/passes_kits/edit.html.haml +30 -0
- data/app/views/passes_reports/index.html.haml +2 -0
- data/app/views/people/_header.html.haml +6 -1
- data/app/views/reports_mailer/daily.html.haml +19 -0
- data/app/views/searches/_form.html.haml +17 -1
- data/app/views/shared/_show_time_and_calendar.html.haml +21 -0
- data/app/views/shared/_tags.html.haml +2 -2
- data/app/views/shows/_controls.html.haml +4 -4
- data/app/views/shows/_glance.html.haml +0 -4
- data/app/views/shows/_sections_table.html.haml +6 -4
- data/app/views/shows/_work_with.html.haml +2 -2
- data/app/views/shows/index.html.haml +79 -20
- data/app/views/shows/new.html.haml +1 -21
- data/app/views/statements/_passes_table.html.haml +25 -0
- data/app/views/statements/show.html.haml +4 -1
- data/app/views/store/checkouts/thanks.html.haml +13 -5
- data/app/views/store/orders/show.html.haml +26 -1
- data/app/views/store/passes/index.html.haml +33 -0
- data/config/locales/en.yml +2 -0
- data/config/routes.rb +8 -2
- data/db/migrate/20140207135731_update_items_view.rb +38 -0
- data/db/migrate/20140210154723_add_cached_stats.rb +5 -0
- data/db/migrate/20140218202726_cache_stats.rb +7 -0
- data/db/migrate/20140304171625_passes_ahoy.rb +52 -0
- data/db/migrate/20140304174807_add_passes_kit.rb +5 -0
- data/db/migrate/20140307144454_add_events_pass_types.rb +9 -0
- data/db/migrate/20140307193350_add_pass_id_to_cart.rb +7 -0
- data/db/migrate/20140314162422_add_total_paid_to_membership.rb +13 -0
- data/db/migrate/20140319191237_add_show_dates_to_advanced_search.rb +6 -0
- data/db/migrate/20140328172333_add_cols_to_events_pass_types.rb +6 -0
- data/db/migrate/20140328174217_add_deleted_at_to_ept.rb +9 -0
- data/db/migrate/20140328185432_add_active_to_ept.rb +5 -0
- data/db/migrate/20140328192612_add_pass_type_id_to_search.rb +5 -0
- data/lib/artfully_ose.rb +3 -3
- data/lib/artfully_ose/version.rb +1 -1
- data/spec/factories/kit_factories.rb +5 -0
- data/spec/factories/membership_factories.rb +1 -0
- 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
|
-
|
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'}     
|
29
|
-
Existing shows
|
30
|
-
%span{:style => 'background-color: #3a87ad'}     
|
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
|
-
|
73
|
-
|
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#
|
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
|
data/config/locales/en.yml
CHANGED
@@ -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,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,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
|
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"
|