Merge branch 'rpp-response-rate' to bring in changes to test files

This commit is contained in:
rebuilt 2023-03-15 15:00:25 -07:00
commit 4c4ccc01cc
47 changed files with 48818 additions and 1354 deletions

View file

@ -6,13 +6,18 @@ class Seeder
end
def seed_academic_years(*academic_year_ranges)
academic_years = []
academic_year_ranges.each do |range|
AcademicYear.find_or_create_by! range:
academic_year = AcademicYear.find_or_initialize_by(range:)
academic_years << academic_year
end
AcademicYear.import academic_years, on_duplicate_key_update: :all
end
def seed_districts_and_schools(csv_file)
dese_ids = []
schools = []
CSV.parse(File.read(csv_file), headers: true) do |row|
district_name = row['District'].strip
next if rules.any? do |rule|
@ -27,21 +32,26 @@ class Seeder
hs = row['HS?']
district = District.find_or_create_by! name: district_name
district.update! slug: district_name.parameterize, qualtrics_code: district_code
district.slug = district_name.parameterize
district.qualtrics_code = district_code
district.save
school = School.find_or_initialize_by(dese_id:, district:)
school.name = school_name
school.qualtrics_code = school_code
school.is_hs = marked? hs
school.save!
schools << school
end
School.import schools, on_duplicate_key_update: :all
Respondent.joins(:school).where.not("school.dese_id": dese_ids).destroy_all
Survey.joins(:school).where.not("school.dese_id": dese_ids).destroy_all
School.where.not(dese_id: dese_ids).destroy_all
end
def seed_surveys(csv_file)
surveys = []
CSV.parse(File.read(csv_file), headers: true) do |row|
district_name = row['District'].strip
next if rules.any? do |rule|
@ -57,41 +67,11 @@ class Seeder
survey = Survey.find_or_initialize_by(school:, academic_year:)
is_short_form_school = marked?(short_form)
survey.form = is_short_form_school ? Survey.forms[:short] : Survey.forms[:normal]
survey.save!
end
end
end
def seed_respondents(csv_file)
schools = []
CSV.parse(File.read(csv_file), headers: true) do |row|
dese_id = row['DESE School ID'].strip.to_i
district_name = row['District'].strip
next if rules.any? do |rule|
rule.new(row:).skip_row?
end
district = District.find_or_create_by! name: district_name
school = School.find_by(dese_id:, district:)
schools << school
academic_years = AcademicYear.all
academic_years.each do |academic_year|
total_students = row["Total Students for Response Rate (#{academic_year.range})"]
total_teachers = row["Total Teachers for Response Rate (#{academic_year.range})"]
total_students = remove_commas(total_students)
total_teachers = remove_commas(total_teachers)
respondent = Respondent.find_or_initialize_by(school:, academic_year:)
respondent.total_students = total_students
respondent.total_teachers = total_teachers
respondent.academic_year = academic_year
respondent.save
surveys << survey
end
end
Respondent.where.not(school: schools).destroy_all
Survey.import surveys, on_duplicate_key_update: :all
end
def seed_sqm_framework(csv_file)
@ -164,6 +144,18 @@ class Seeder
DemographicLoader.load_data(filepath: csv_file)
end
def seed_enrollment(csv_file)
EnrollmentLoader.load_data(filepath: csv_file)
end
def seed_staffing(csv_file)
StaffingLoader.load_data(filepath: csv_file)
missing_staffing_for_current_year = Respondent.where(academic_year: AcademicYear.order(:range).last).none? do |respondent|
respondent.total_teachers.present?
end
StaffingLoader.clone_previous_year_data if missing_staffing_for_current_year
end
private
def marked?(mark)