sqm-dashboards/lib/tasks/report.rake
Nelson Jovel 33da0859b9 Split academic year into seasons if the academic year's range is
initialized with a season, i.e. "2024-25 Fall".  Update scapers for
admin data, enrollment and staffing to use the new range standard
correctly.   Update the loaders for admin data, enrollment and staffing
so that it populates all seasons in a given year.  So admin data for
2024-25 gets loaded into "2024-25 Fall" and "2024-25 Spring".  Add tests
for the new range format.  Set the default cutoff for the start of Spring season will be the last Sunday in February
2024-04-25 09:21:04 -07:00

177 lines
4.4 KiB
Ruby

namespace :report do
desc "create a report of the scores for all subcategories"
task subcategory: :environment do
Report::Subcategory.create_report(filename: "ecp_subcategory_report.csv")
end
namespace :measure do
task :district, %i[district ay] => :environment do |_, args|
# measure_ids = %w[
# 1A-i
# 1A-ii
# 1A-iii
# 1B-i
# 1B-ii
# 2A-i
# 2A-ii
# 2B-i
# 2B-ii
# 2C-i
# 2C-ii
# 3A-i
# 3A-ii
# 3B-i
# 3B-ii
# 3B-iii
# 3C-i
# 3C-ii
# 4A-i
# 4A-ii
# 4B-i
# 4B-ii
# 4C-i
# 4D-i
# 4D-ii
# 5A-i
# 5A-ii
# 5B-i
# 5B-ii
# 5C-i
# 5C-ii
# 5D-i
# 5D-ii
# ]
# measures = measure_ids.map { |measure_id| Measure.find_by_measure_id(measure_id) }
district = District.find_by_name args[:district]
academic_years = AcademicYear.where(range: args[:ay])
if district.nil?
puts "Invalid district name"
bad = true
end
if academic_years.nil?
puts "Invalid academic year"
bad = true
end
next if bad
Report::Measure.create_report(
schools: School.where(district:),
academic_years:,
# measures:,
filename: "measure_report_" + district.slug + ".csv"
)
end
task sqm: :environment do
measure_ids = %w[
1A-i
1A-ii
1A-iii
1B-i
1B-ii
2A-i
2A-ii
2B-i
2B-ii
2C-i
2C-ii
3A-i
3A-ii
3B-i
3B-ii
3B-iii
3C-i
3C-ii
4A-i
4A-ii
4B-i
4B-ii
4C-i
4D-i
4D-ii
5A-i
5A-ii
5B-i
5B-ii
5C-i
5C-ii
5D-i
5D-ii
]
measures = measure_ids.map { |measure_id| Measure.find_by_measure_id(measure_id) }.reject(&:nil?)
Report::Measure.create_report(filename: "measure_report.csv", measures:)
end
end
namespace :scale do
task bll: :environment do
measure_ids = %w[
2A-i
2A-ii
2B-i
2B-ii
2C-i
2C-ii
4B-i
5B-i
5B-ii
5D-i
]
measures = measure_ids.map { |measure_id| Measure.find_by_measure_id(measure_id) }
scales = []
measures.each { |measure| scales << measure.scales }
scales = scales.flatten.compact
Report::BeyondLearningLoss.create_report(filename: "bll_report.csv", scales:)
end
end
namespace :survey_item do
task :create, %i[school academic_year] => :environment do |_, args|
school = School.find_by_name(args[:school])
academic_year = AcademicYear.find_by_range(args[:academic_year])
if school.nil?
puts "Invalid school name"
bad = 1
end
if academic_year.nil?
puts "Invalid academic year"
bad = 1
end
next if bad == 1
Report::SurveyItem.create_item_report(school:, academic_year:,
filename: "survey_item_report_" + school.slug + "_" + academic_year.range + "_by_item.csv")
Report::SurveyItem.create_grade_report(school:, academic_year:,
filename: "survey_item_report_" + school.slug + "_" + academic_year.range + "_by_grade.csv")
end
end
namespace :survey_item do
task :district, %i[district academic_year] => :environment do |_, args|
district = District.find_by_name(args[:district])
if district.nil?
puts "Invalid district name"
bad = 1
end
academic_year = AcademicYear.find_by_range(args[:academic_year])
if academic_year.nil?
puts "Invalid academic year"
bad = 1
end
next if bad == 1
schools = district.schools
schools.each do |school|
Report::SurveyItem.create_item_report(school:, academic_year:,
filename: "survey_item_report_" + school.slug + "_" + academic_year.range + "_by_item.csv")
Report::SurveyItem.create_grade_report(school:, academic_year:,
filename: "survey_item_report_" + school.slug + "_" + academic_year.range + "_by_grade.csv")
end
end
end
end