From 36b41794924d0e3581dd9144fc8a03d367b5b944 Mon Sep 17 00:00:00 2001 From: Seth Call Date: Fri, 20 Mar 2015 17:26:56 -0500 Subject: [PATCH] * VRFS-2972 - adding test purchase feature to jam-admin for buying all JamTracks (admin users only) --- admin/app/admin/cohorts.rb | 2 +- admin/app/admin/cohorts_monthly.rb | 2 +- admin/app/admin/crash_dumps.rb | 2 +- admin/app/admin/email_batch.rb | 2 +- .../admin/email_daily_scheduled_session.rb | 2 +- admin/app/admin/event.rb | 2 +- admin/app/admin/event_session.rb | 2 +- admin/app/admin/fake_purchaser.rb | 54 +++++++++++++++++++ admin/app/admin/isp_scoring_data.rb | 2 +- admin/app/admin/jam_ruby_artifact_updates.rb | 2 +- admin/app/admin/jam_ruby_users.rb | 1 + admin/app/admin/promo_buzz.rb | 2 +- admin/app/admin/promo_latest.rb | 2 +- admin/app/admin/score_export.rb | 8 +-- admin/app/admin/score_history.rb | 2 + admin/app/admin/scoring_load.rb | 2 +- admin/spec/factories.rb | 1 + db/manifest | 1 + db/up/jam_track_right_admin_purchase.sql | 1 + ruby/lib/jam_ruby/models/jam_track_right.rb | 2 + web/app/controllers/api_recurly_controller.rb | 1 - 21 files changed, 79 insertions(+), 16 deletions(-) create mode 100644 admin/app/admin/fake_purchaser.rb create mode 100644 db/up/jam_track_right_admin_purchase.sql diff --git a/admin/app/admin/cohorts.rb b/admin/app/admin/cohorts.rb index e9bd73fea..c39ec8048 100644 --- a/admin/app/admin/cohorts.rb +++ b/admin/app/admin/cohorts.rb @@ -1,6 +1,6 @@ ActiveAdmin.register Cohort, :as => 'Cohorts' do - menu :label => 'Cohorts All-time', :parent => 'Analytics' + menu :label => 'Cohorts All-time', :parent => 'Reports' config.sort_order = 'group_start_desc' config.batch_actions = false diff --git a/admin/app/admin/cohorts_monthly.rb b/admin/app/admin/cohorts_monthly.rb index d062a8317..5c24179c7 100644 --- a/admin/app/admin/cohorts_monthly.rb +++ b/admin/app/admin/cohorts_monthly.rb @@ -1,6 +1,6 @@ ActiveAdmin.register Cohort, :as => 'Cohorts Monthly' do - menu :label => 'Cohorts Monthly', :parent => 'Analytics' + menu :label => 'Cohorts Monthly', :parent => 'Reports' config.sort_order = 'group_start_desc' config.batch_actions = false diff --git a/admin/app/admin/crash_dumps.rb b/admin/app/admin/crash_dumps.rb index 759f3e656..bcfcd9106 100644 --- a/admin/app/admin/crash_dumps.rb +++ b/admin/app/admin/crash_dumps.rb @@ -3,7 +3,7 @@ ActiveAdmin.register JamRuby::CrashDump, :as => 'Crash Dump' do filter :timestamp filter :user_email, :as => :string filter :client_id - menu :parent => 'Debug' + menu :parent => 'Misc' index do column "Timestamp" do |post| diff --git a/admin/app/admin/email_batch.rb b/admin/app/admin/email_batch.rb index e31ec5cce..0ceecec4a 100644 --- a/admin/app/admin/email_batch.rb +++ b/admin/app/admin/email_batch.rb @@ -1,6 +1,6 @@ ActiveAdmin.register JamRuby::EmailBatch, :as => 'Batch Emails' do - menu :label => 'Batch Emails', :parent => 'Email' + menu :label => 'Batch Emails', :parent => 'Misc' config.sort_order = 'updated_at DESC' config.batch_actions = false diff --git a/admin/app/admin/email_daily_scheduled_session.rb b/admin/app/admin/email_daily_scheduled_session.rb index 94bdfa16c..32e997bb6 100644 --- a/admin/app/admin/email_daily_scheduled_session.rb +++ b/admin/app/admin/email_daily_scheduled_session.rb @@ -1,6 +1,6 @@ ActiveAdmin.register JamRuby::EmailBatchScheduledSessions, :as => 'Daily Sessions' do - menu :label => 'Daily Sessions', :parent => 'Email' + menu :label => 'Daily Sessions', :parent => 'Misc' config.sort_order = 'updated_at DESC' config.filters = false diff --git a/admin/app/admin/event.rb b/admin/app/admin/event.rb index 186592d30..48981a4d7 100644 --- a/admin/app/admin/event.rb +++ b/admin/app/admin/event.rb @@ -1,3 +1,3 @@ ActiveAdmin.register JamRuby::Event, :as => 'Event' do - menu :parent => 'Events' + menu :parent => 'Misc' end diff --git a/admin/app/admin/event_session.rb b/admin/app/admin/event_session.rb index df540716d..560f7351f 100644 --- a/admin/app/admin/event_session.rb +++ b/admin/app/admin/event_session.rb @@ -1,3 +1,3 @@ ActiveAdmin.register JamRuby::EventSession, :as => 'Event Session' do - menu :parent => 'Events' + menu :parent => 'Misc' end diff --git a/admin/app/admin/fake_purchaser.rb b/admin/app/admin/fake_purchaser.rb new file mode 100644 index 000000000..75be6c653 --- /dev/null +++ b/admin/app/admin/fake_purchaser.rb @@ -0,0 +1,54 @@ +ActiveAdmin.register_page "Fake Purchaser" do + menu :parent => 'Misc' + + + page_action :bulk_jamtrack_purchase, :method => :post do + + puts params.inspect + + user_field = params[:jam_ruby_jam_track_right][:user] + + if user_field.blank? + redirect_to admin_fake_purchaser_path, :notice => "user not specified" + return + end + + bits = user_field.strip.split(' ') + + user = User.find_by_email(bits[0]) + if user.nil? + redirect_to admin_fake_purchaser_path, :notice =>"no user with email #{bits[0]}" + return + end + + if !user.admin + redirect_to admin_fake_purchaser_path, :notice =>"user is not admin" + return + end + + count = 0 + JamTrack.all.each do |jam_track| + unless jam_track.right_for_user(user) + + jam_track_right=JamTrackRight.new + jam_track_right.user = user + jam_track_right.jam_track = jam_track + jam_track_right.is_test_purchase = true + jam_track_right.save! + count = count + 1 + end + end + + redirect_to admin_fake_purchaser_path, :notice => "Bought #{count} jamtracks for #{user.email}" + end + + content do + + semantic_form_for JamTrackRight.new, :url => admin_fake_purchaser_bulk_jamtrack_purchase_path, :builder => ActiveAdmin::FormBuilder do |f| + f.inputs "Admin User to Fake JamTrack Purchases" do + f.input :user, :as => :autocomplete, :url => autocomplete_user_email_admin_users_path, :input_html => { :id_element => "#jam_trak_right_user_id" }, hint: 'All JamTracks in the system will be \'bought\' for this user. No Recurly interaction occurs with this feature.' + end + f.actions + end + end +end diff --git a/admin/app/admin/isp_scoring_data.rb b/admin/app/admin/isp_scoring_data.rb index 02756ffc0..ad93fed9a 100644 --- a/admin/app/admin/isp_scoring_data.rb +++ b/admin/app/admin/isp_scoring_data.rb @@ -2,6 +2,6 @@ ActiveAdmin.register JamRuby::IspScoreBatch, :as => 'Isp Score Data' do config.sort_order = 'created_at_desc' - menu :parent => 'Debug' + menu :parent => 'Misc' end diff --git a/admin/app/admin/jam_ruby_artifact_updates.rb b/admin/app/admin/jam_ruby_artifact_updates.rb index 62185042c..01c0379e1 100644 --- a/admin/app/admin/jam_ruby_artifact_updates.rb +++ b/admin/app/admin/jam_ruby_artifact_updates.rb @@ -1,5 +1,5 @@ ActiveAdmin.register JamRuby::ArtifactUpdate, :as => 'Artifacts' do - menu :label => 'Artifacts' + menu :label => 'Artifacts', :parent => 'Operations' config.sort_order = 'product,environment' #config.batch_actions = false diff --git a/admin/app/admin/jam_ruby_users.rb b/admin/app/admin/jam_ruby_users.rb index 3e8c1dd6b..0fe3c29d9 100644 --- a/admin/app/admin/jam_ruby_users.rb +++ b/admin/app/admin/jam_ruby_users.rb @@ -80,6 +80,7 @@ ActiveAdmin.register JamRuby::User, :as => 'Users' do User.select("email, first_name, last_name, id").where(["email ILIKE ? OR first_name ILIKE ? OR last_name ILIKE ?", "%#{parameters[:term]}%", "%#{parameters[:term]}%", "%#{parameters[:term]}%"]) end + def create @jam_ruby_user = JamRuby::User.new(params[:jam_ruby_user]) @jam_ruby_user.administratively_created = true diff --git a/admin/app/admin/promo_buzz.rb b/admin/app/admin/promo_buzz.rb index b3fc90514..98c76429c 100644 --- a/admin/app/admin/promo_buzz.rb +++ b/admin/app/admin/promo_buzz.rb @@ -1,6 +1,6 @@ ActiveAdmin.register JamRuby::PromoBuzz, :as => 'Buzz' do - menu :label => 'Buzz', :parent => 'Home Page' + menu :label => 'Promo Buzz', :parent => 'Misc' config.sort_order = 'position ASC aasm_state DESC updated_at DESC' config.batch_actions = false diff --git a/admin/app/admin/promo_latest.rb b/admin/app/admin/promo_latest.rb index ec0c593ba..9177bdda9 100644 --- a/admin/app/admin/promo_latest.rb +++ b/admin/app/admin/promo_latest.rb @@ -1,6 +1,6 @@ ActiveAdmin.register JamRuby::PromoLatest, :as => 'Latest' do - menu :label => 'Latest', :parent => 'Home Page' + menu :label => 'Promo Latest', :parent => 'Misc' config.batch_actions = false config.sort_order = '' diff --git a/admin/app/admin/score_export.rb b/admin/app/admin/score_export.rb index 1387cc17d..076928140 100644 --- a/admin/app/admin/score_export.rb +++ b/admin/app/admin/score_export.rb @@ -1,5 +1,6 @@ -ActiveAdmin.register_page "Download CSV" do - menu :parent => 'Score' +=begin +ActiveAdmin.register_page "Download Score CSV" do + menu :parent => 'Misc' page_action :create_csv, :method => :post do @@ -95,4 +96,5 @@ ActiveAdmin.register_page "Download CSV" do #end end -end \ No newline at end of file +end +=end diff --git a/admin/app/admin/score_history.rb b/admin/app/admin/score_history.rb index 85ed34393..7786b4c29 100644 --- a/admin/app/admin/score_history.rb +++ b/admin/app/admin/score_history.rb @@ -1,3 +1,4 @@ +=begin ActiveAdmin.register JamRuby::ScoreHistory, :as => 'Score History' do menu :parent => 'Score' @@ -80,3 +81,4 @@ ActiveAdmin.register JamRuby::ScoreHistory, :as => 'Score History' do column "To Client", :to_client_id end end +=end diff --git a/admin/app/admin/scoring_load.rb b/admin/app/admin/scoring_load.rb index f6f3e3b2c..3afcc7219 100644 --- a/admin/app/admin/scoring_load.rb +++ b/admin/app/admin/scoring_load.rb @@ -1,5 +1,5 @@ ActiveAdmin.register_page "Current Scoring Load" do - menu :parent => 'Score' + menu :parent => 'Misc' content :title => "Current Scoring Load" do table_for GetWork.summary do diff --git a/admin/spec/factories.rb b/admin/spec/factories.rb index 156fb1a6f..a1e906a48 100644 --- a/admin/spec/factories.rb +++ b/admin/spec/factories.rb @@ -40,6 +40,7 @@ FactoryGirl.define do scoring_timeout Time.now sequence(:channel_id) { |n| "Channel#{n}"} association :user, factory: :user + metronome_open false end factory :artifact_update, :class => JamRuby::ArtifactUpdate do diff --git a/db/manifest b/db/manifest index 791afb9d9..f33ec0e15 100755 --- a/db/manifest +++ b/db/manifest @@ -264,3 +264,4 @@ jam_track_redeemed.sql connection_metronome.sql preview_jam_track_tracks.sql cohorts.sql +jam_track_right_admin_purchase.sql \ No newline at end of file diff --git a/db/up/jam_track_right_admin_purchase.sql b/db/up/jam_track_right_admin_purchase.sql new file mode 100644 index 000000000..aec1d5cfa --- /dev/null +++ b/db/up/jam_track_right_admin_purchase.sql @@ -0,0 +1 @@ +ALTER TABLE jam_track_rights ADD COLUMN is_test_purchase BOOLEAN DEFAULT FALSE NOT NULL; \ No newline at end of file diff --git a/ruby/lib/jam_ruby/models/jam_track_right.rb b/ruby/lib/jam_ruby/models/jam_track_right.rb index a12347f70..4f8852341 100644 --- a/ruby/lib/jam_ruby/models/jam_track_right.rb +++ b/ruby/lib/jam_ruby/models/jam_track_right.rb @@ -11,6 +11,8 @@ module JamRuby validates :user, presence:true validates :jam_track, presence:true + validates :is_test_purchase, inclusion: {in: [true, false]} + validate :verify_download_count after_save :after_save diff --git a/web/app/controllers/api_recurly_controller.rb b/web/app/controllers/api_recurly_controller.rb index a7fedb452..50f4f703d 100644 --- a/web/app/controllers/api_recurly_controller.rb +++ b/web/app/controllers/api_recurly_controller.rb @@ -56,7 +56,6 @@ class ApiRecurlyController < ApiController def place_order error=nil - puts "PLACING ORDER #{params.inspect}" response = {jam_tracks:[]} # 1st confirm that all specified JamTracks exist