Do not create response rate entries in the database when loading survey item responses

mciea-main
rebuilt 3 years ago
parent 0ed6cbe6b4
commit 03efd88284

@ -1,11 +1,11 @@
require 'csv' require "csv"
namespace :data do namespace :data do
desc 'load survey responses' desc "load survey responses"
task load_survey_responses: :environment do task load_survey_responses: :environment do
survey_item_response_count = SurveyItemResponse.count survey_item_response_count = SurveyItemResponse.count
student_count = Student.count student_count = Student.count
path = '/data/survey_responses/clean/' path = "/data/survey_responses/clean/"
Sftp::Directory.open(path:) do |file| Sftp::Directory.open(path:) do |file|
SurveyResponsesDataLoader.from_file(file:) SurveyResponsesDataLoader.from_file(file:)
end end
@ -16,34 +16,30 @@ namespace :data do
end end
puts "=====================> Completed loading #{Student.count - student_count} students. #{Student.count} total students" puts "=====================> Completed loading #{Student.count - student_count} students. #{Student.count} total students"
puts 'Resetting response rates' puts "Resetting race scores"
ResponseRateLoader.reset
puts "=====================> Completed loading #{ResponseRate.count} response rates"
puts 'Resetting race scores'
RaceScoreLoader.reset(fast_processing: false) RaceScoreLoader.reset(fast_processing: false)
puts "=====================> Completed loading #{RaceScore.count} race scores" puts "=====================> Completed loading #{RaceScore.count} race scores"
Rails.cache.clear Rails.cache.clear
end end
desc 'seed only lowell' desc "seed only lowell"
task seed_only_lowell: :environment do task seed_only_lowell: :environment do
seeder = Seeder.new rules: [Rule::SeedOnlyLowell] seeder = Seeder.new rules: [Rule::SeedOnlyLowell]
seeder.seed_academic_years '2016-17', '2017-18', '2018-19', '2019-20', '2020-21', '2021-22', '2022-23' seeder.seed_academic_years "2016-17", "2017-18", "2018-19", "2019-20", "2020-21", "2021-22", "2022-23"
seeder.seed_districts_and_schools Rails.root.join('data', 'master_list_of_schools_and_districts.csv') seeder.seed_districts_and_schools Rails.root.join("data", "master_list_of_schools_and_districts.csv")
seeder.seed_surveys Rails.root.join('data', 'master_list_of_schools_and_districts.csv') seeder.seed_surveys Rails.root.join("data", "master_list_of_schools_and_districts.csv")
seeder.seed_respondents Rails.root.join('data', 'master_list_of_schools_and_districts.csv') seeder.seed_respondents Rails.root.join("data", "master_list_of_schools_and_districts.csv")
seeder.seed_sqm_framework Rails.root.join('data', 'sqm_framework.csv') seeder.seed_sqm_framework Rails.root.join("data", "sqm_framework.csv")
seeder.seed_demographics Rails.root.join('data', 'demographics.csv') seeder.seed_demographics Rails.root.join("data", "demographics.csv")
end end
desc 'load survey responses for lowell schools' desc "load survey responses for lowell schools"
task load_survey_responses_for_lowell: :environment do task load_survey_responses_for_lowell: :environment do
survey_item_response_count = SurveyItemResponse.count survey_item_response_count = SurveyItemResponse.count
student_count = Student.count student_count = Student.count
path = '/data/survey_responses/clean/' path = "/data/survey_responses/clean/"
Sftp::Directory.open(path:) do |file| Sftp::Directory.open(path:) do |file|
SurveyResponsesDataLoader.from_file(file:) SurveyResponsesDataLoader.from_file(file:)
end end
@ -54,48 +50,44 @@ namespace :data do
end end
puts "=====================> Completed loading #{Student.count - student_count} students. #{Student.count} total students" puts "=====================> Completed loading #{Student.count - student_count} students. #{Student.count} total students"
puts 'Resetting response rates' puts "Resetting race scores"
ResponseRateLoader.reset
puts "=====================> Completed loading #{ResponseRate.count} response rates"
puts 'Resetting race scores'
RaceScoreLoader.reset(fast_processing: false) RaceScoreLoader.reset(fast_processing: false)
puts "=====================> Completed loading #{RaceScore.count} race scores" puts "=====================> Completed loading #{RaceScore.count} race scores"
Rails.cache.clear Rails.cache.clear
end end
desc 'load students for lowell' desc "load students for lowell"
task load_students_for_lowell: :environment do task load_students_for_lowell: :environment do
SurveyItemResponse.update_all(student_id: nil) SurveyItemResponse.update_all(student_id: nil)
StudentRace.delete_all StudentRace.delete_all
Student.delete_all Student.delete_all
Sftp::Directory.open(path: '/data/survey_responses/clean/') do |file| Sftp::Directory.open(path: "/data/survey_responses/clean/") do |file|
StudentLoader.from_file(file:, rules: [Rule::SkipNonLowellSchools]) StudentLoader.from_file(file:, rules: [Rule::SkipNonLowellSchools])
end end
puts "=====================> Completed loading #{Student.count - student_count} students. #{Student.count} total students" puts "=====================> Completed loading #{Student.count - student_count} students. #{Student.count} total students"
puts 'Resetting race scores' puts "Resetting race scores"
RaceScoreLoader.reset(fast_processing: false) RaceScoreLoader.reset(fast_processing: false)
puts "=====================> Completed loading #{RaceScore.count} survey responses" puts "=====================> Completed loading #{RaceScore.count} survey responses"
Rails.cache.clear Rails.cache.clear
end end
desc 'delete non-lowell schools and districts' desc "delete non-lowell schools and districts"
task delete_non_lowell: :environment do task delete_non_lowell: :environment do
schools = School.all.reject { |s| s.district.name == 'Lowell' } schools = School.all.reject { |s| s.district.name == "Lowell" }
ResponseRate.where(school: schools).delete_all ResponseRate.where(school: schools).delete_all
Respondent.where(school: schools).delete_all Respondent.where(school: schools).delete_all
Survey.where(school: schools).delete_all Survey.where(school: schools).delete_all
schools.each { |school| school.delete } schools.each { |school| school.delete }
districts = District.all.reject { |district| district.name == 'Lowell' } districts = District.all.reject { |district| district.name == "Lowell" }
districts.each { |district| district.delete } districts.each { |district| district.delete }
end end
task load_survey_responses_21_22: :environment do task load_survey_responses_21_22: :environment do
Dir.glob(Rails.root.join('data', 'survey_responses', '*2021-22*.csv')).each do |filepath| Dir.glob(Rails.root.join("data", "survey_responses", "*2021-22*.csv")).each do |filepath|
puts "=====================> Loading data from csv at path: #{filepath}" puts "=====================> Loading data from csv at path: #{filepath}"
SurveyResponsesDataLoader.load_data filepath: SurveyResponsesDataLoader.load_data filepath:
end end
@ -103,7 +95,7 @@ namespace :data do
end end
task load_survey_responses_20_21: :environment do task load_survey_responses_20_21: :environment do
Dir.glob(Rails.root.join('data', 'survey_responses', '*2020-21*.csv')).each do |filepath| Dir.glob(Rails.root.join("data", "survey_responses", "*2020-21*.csv")).each do |filepath|
puts "=====================> Loading data from csv at path: #{filepath}" puts "=====================> Loading data from csv at path: #{filepath}"
SurveyResponsesDataLoader.load_data filepath: SurveyResponsesDataLoader.load_data filepath:
end end
@ -111,7 +103,7 @@ namespace :data do
end end
task load_survey_responses_19_20: :environment do task load_survey_responses_19_20: :environment do
Dir.glob(Rails.root.join('data', 'survey_responses', '*2019-20*.csv')).each do |filepath| Dir.glob(Rails.root.join("data", "survey_responses", "*2019-20*.csv")).each do |filepath|
puts "=====================> Loading data from csv at path: #{filepath}" puts "=====================> Loading data from csv at path: #{filepath}"
SurveyResponsesDataLoader.load_data filepath: SurveyResponsesDataLoader.load_data filepath:
end end
@ -119,7 +111,7 @@ namespace :data do
end end
task load_survey_responses_18_19: :environment do task load_survey_responses_18_19: :environment do
Dir.glob(Rails.root.join('data', 'survey_responses', '*2018-19*.csv')).each do |filepath| Dir.glob(Rails.root.join("data", "survey_responses", "*2018-19*.csv")).each do |filepath|
puts "=====================> Loading data from csv at path: #{filepath}" puts "=====================> Loading data from csv at path: #{filepath}"
SurveyResponsesDataLoader.load_data filepath: SurveyResponsesDataLoader.load_data filepath:
end end
@ -127,7 +119,7 @@ namespace :data do
end end
task load_survey_responses_17_18: :environment do task load_survey_responses_17_18: :environment do
Dir.glob(Rails.root.join('data', 'survey_responses', '*2017-18*.csv')).each do |filepath| Dir.glob(Rails.root.join("data", "survey_responses", "*2017-18*.csv")).each do |filepath|
puts "=====================> Loading data from csv at path: #{filepath}" puts "=====================> Loading data from csv at path: #{filepath}"
SurveyResponsesDataLoader.load_data filepath: SurveyResponsesDataLoader.load_data filepath:
end end
@ -135,86 +127,86 @@ namespace :data do
end end
task load_survey_responses_16_17: :environment do task load_survey_responses_16_17: :environment do
Dir.glob(Rails.root.join('data', 'survey_responses', '*2016-17*.csv')).each do |filepath| Dir.glob(Rails.root.join("data", "survey_responses", "*2016-17*.csv")).each do |filepath|
puts "=====================> Loading data from csv at path: #{filepath}" puts "=====================> Loading data from csv at path: #{filepath}"
SurveyResponsesDataLoader.load_data filepath: SurveyResponsesDataLoader.load_data filepath:
end end
puts "=====================> Completed loading #{SurveyItemResponse.count} survey responses" puts "=====================> Completed loading #{SurveyItemResponse.count} survey responses"
end end
desc 'reset response rate values' desc "reset response rate values"
task reset_response_rates: :environment do task reset_response_rates: :environment do
puts 'Resetting response rates' puts "Resetting response rates"
ResponseRateLoader.reset ResponseRateLoader.reset
Rails.cache.clear Rails.cache.clear
puts "=====================> Completed loading #{ResponseRate.count} survey responses" puts "=====================> Completed loading #{ResponseRate.count} survey responses"
end end
desc 'reset race score calculations' desc "reset race score calculations"
task reset_race_scores: :environment do task reset_race_scores: :environment do
puts 'Resetting race scores' puts "Resetting race scores"
RaceScoreLoader.reset(fast_processing: false) RaceScoreLoader.reset(fast_processing: false)
Rails.cache.clear Rails.cache.clear
puts "=====================> Completed loading #{RaceScore.count} survey responses" puts "=====================> Completed loading #{RaceScore.count} survey responses"
end end
desc 'load admin_data' desc "load admin_data"
task load_admin_data: :environment do task load_admin_data: :environment do
AdminDataValue.delete_all AdminDataValue.delete_all
Dir.glob(Rails.root.join('data', 'admin_data', 'dese', '*.csv')).each do |filepath| Dir.glob(Rails.root.join("data", "admin_data", "dese", "*.csv")).each do |filepath|
puts "=====================> Loading data from csv at path: #{filepath}" puts "=====================> Loading data from csv at path: #{filepath}"
Dese::Loader.load_data filepath: Dese::Loader.load_data filepath:
end end
puts "=====================> Completed loading #{AdminDataValue.count} survey responses" puts "=====================> Completed loading #{AdminDataValue.count} survey responses"
end end
desc 'load students' desc "load students"
task load_students: :environment do task load_students: :environment do
SurveyItemResponse.update_all(student_id: nil) SurveyItemResponse.update_all(student_id: nil)
StudentRace.delete_all StudentRace.delete_all
Student.delete_all Student.delete_all
Dir.glob(Rails.root.join('data', 'survey_responses', '*student*.csv')).each do |file| Dir.glob(Rails.root.join("data", "survey_responses", "*student*.csv")).each do |file|
puts "=====================> Loading student data from csv at path: #{file}" puts "=====================> Loading student data from csv at path: #{file}"
StudentLoader.load_data filepath: file StudentLoader.load_data filepath: file
end end
puts "=====================> Completed loading #{Student.count} students" puts "=====================> Completed loading #{Student.count} students"
puts 'Resetting race scores' puts "Resetting race scores"
RaceScoreLoader.reset(fast_processing: false) RaceScoreLoader.reset(fast_processing: false)
puts "=====================> Completed loading #{RaceScore.count} survey responses" puts "=====================> Completed loading #{RaceScore.count} survey responses"
Rails.cache.clear Rails.cache.clear
end end
desc 'reset all cache counters' desc "reset all cache counters"
task reset_cache_counters: :environment do task reset_cache_counters: :environment do
puts '=====================> Resetting Category counters' puts "=====================> Resetting Category counters"
Category.all.each do |category| Category.all.each do |category|
Category.reset_counters(category.id, :subcategories) Category.reset_counters(category.id, :subcategories)
end end
puts '=====================> Resetting Subcategory counters' puts "=====================> Resetting Subcategory counters"
Subcategory.all.each do |subcategory| Subcategory.all.each do |subcategory|
Subcategory.reset_counters(subcategory.id, :measures) Subcategory.reset_counters(subcategory.id, :measures)
end end
puts '=====================> Resetting Measure counters' puts "=====================> Resetting Measure counters"
Measure.all.each do |measure| Measure.all.each do |measure|
Measure.reset_counters(measure.id, :scales) Measure.reset_counters(measure.id, :scales)
end end
puts '=====================> Resetting Scale counters' puts "=====================> Resetting Scale counters"
Scale.all.each do |scale| Scale.all.each do |scale|
Scale.reset_counters(scale.id, :survey_items) Scale.reset_counters(scale.id, :survey_items)
end end
puts '=====================> Resetting SurveyItem counters' puts "=====================> Resetting SurveyItem counters"
SurveyItem.all.each do |survey_item| SurveyItem.all.each do |survey_item|
SurveyItem.reset_counters(survey_item.id, :survey_item_responses) SurveyItem.reset_counters(survey_item.id, :survey_item_responses)
end end
end end
desc 'scrape dese site for admin data' desc "scrape dese site for admin data"
task scrape_all: :environment do task scrape_all: :environment do
puts 'scraping data from dese' puts "scraping data from dese"
scrapers = [Dese::OneAOne, Dese::OneAThree, Dese::TwoAOne, Dese::TwoCOne, Dese::ThreeAOne, Dese::ThreeATwo, scrapers = [Dese::OneAOne, Dese::OneAThree, Dese::TwoAOne, Dese::TwoCOne, Dese::ThreeAOne, Dese::ThreeATwo,
Dese::ThreeBOne, Dese::ThreeBTwo, Dese::FourAOne, Dese::FourBTwo, Dese::FourDOne, Dese::FiveCOne, Dese::FiveDTwo] Dese::ThreeBOne, Dese::ThreeBTwo, Dese::FourAOne, Dese::FourBTwo, Dese::FourDOne, Dese::FiveCOne, Dese::FiveDTwo]
scrapers.each do |scraper| scrapers.each do |scraper|
scraper.new.run_all scraper.new.run_all
end end

Loading…
Cancel
Save