switching header to MCIEA

pull/1/head
Jared Cosulich 8 years ago
parent 4cee53ac03
commit 36329235d0

@ -16,6 +16,6 @@
- else
.text-center.my-3.py-3
%h3.my-3.py-3
EdContext is currently in beta testing.
MCIEA is currently in beta testing.
%p.py-3
If you have an account, please sign in.

@ -1,6 +1,6 @@
%header.row
.title.col-8
%h2= link_to('EdContext'.html_safe, root_path)
%h2= link_to('MCIEA'.html_safe, root_path)
.navigation.col-4.text-right
- if current_user

@ -4,7 +4,7 @@
%meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/
%meta{:charset => "utf-8"}/
%meta{:content => "width=device-width, initial-scale=1, shrink-to-fit=no", :name => "viewport"}/
%title EdContext
%title MCIEA
= csrf_meta_tags
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload'
= stylesheet_link_tag 'https://fonts.googleapis.com/css?family=Roboto:300,700'

@ -23,6 +23,6 @@
.text-center.my-3.py-3
%h3.my-3.py-3
EdContext is currently in beta testing.
MCIEA is currently in beta testing.
%p.py-3
If you have an account, please sign in.

@ -123,146 +123,146 @@ namespace :data do
desc 'Load in student and teacher responses'
task load_responses: :environment do
# ENV['BULK_PROCESS'] = 'true'
# answer_dictionary = {
# 'Slightly': 'Somewhat',
# 'an incredible': 'a tremendous',
# 'a little': 'a little bit',
# 'slightly': 'somewhat',
# 'a little well': 'slightly well',
# 'quite': 'very',
# 'a tremendous': 'a very great',
# 'somewhat clearly': 'somewhat',
# 'almost never': 'once in a while',
# 'always': 'all the time',
# 'not at all strong': 'not strong at all',
# 'each': 'every'
# }
# respondent_map = {}
#
# unknown_schools = {}
# missing_questions = {}
# bad_answers = {}
# year = '2017'
#
# timeToRun = 100 * 60 * 60
# startIndex = 0
# stopIndex = 100000
# startTime = Time.new
#
# ['student_responses', 'teacher_responses'].each do |file|
# recipients = file.split('_')[0]
# target_group = Question.target_groups["for_#{recipients}s"]
# csv_string = File.read(File.expand_path("../../../data/#{file}_#{year}.csv", __FILE__))
# csv = CSV.parse(csv_string, :headers => true)
# puts("LOADING CSV: #{csv.length} ROWS")
#
# t = Time.new
# csv.each_with_index do |row, index|
# next if index < startIndex
#
# if Time.new - startTime >= timeToRun || index > stopIndex
# puts("ENDING #{timeToRun} SECONDS: #{Time.new - startTime} = #{startIndex} -> #{index} = #{index - startIndex} or #{(Time.new - t) / (index - startIndex)} per second")
# break
# end
#
# if index % 10 == 0
# puts("DATAMSG: PROCESSING ROW: #{index} OUT OF #{csv.length} ROWS: #{Time.new - t} - Total: #{Time.new - startTime} - #{timeToRun - (Time.new - startTime)} TO GO / #{stopIndex - startIndex} ROWS TO GO")
# t = Time.new
# end
#
# district_name = row['What district is your school in?']
# district_name = row['To begin, please select your district.'] if district_name.nil?
# district = District.find_or_create_by(name: district_name, state_id: 1)
#
# school_name = row["Please select your school in #{district_name}."]
#
# if school_name.blank?
# # puts "BLANK SCHOOL NAME: #{district.name} - #{index}"
# next
# end
#
# school = district.schools.find_or_create_by(name: school_name)
#
# if school.nil?
# next if unknown_schools[school_name]
# puts "DATAERROR: Unable to find school: #{school_name} - #{index}"
# unknown_schools[school_name] = true
# next
# end
#
# respondent_id = row['Response ID']
# recipient_id = respondent_map[respondent_id]
# if recipient_id.present?
# recipient = school.recipients.where(id: recipient_id).first
# else
# begin
# recipient = school.recipients.create(
# name: "Survey Respondent Id: #{respondent_id}"
# )
# rescue
# puts "DATAERROR: INDEX: #{index} ERROR AT #{index} - #{district.name} - #{school_name} #{school}: #{respondent_id}"
# end
# respondent_map[respondent_id] = recipient.id
# end
#
# recipient_list = school.recipient_lists.find_by_name("#{recipients.titleize} List")
# if recipient_list.nil?
# recipient_list = school.recipient_lists.create(name: "#{recipients.titleize} List")
# end
# recipient_list.recipient_id_array << recipient.id
# recipient_list.save!
#
# row.each do |key, value|
# t1 = Time.new
# next if value.nil? or key.nil? or value.to_s == "-99"
# key = key.gsub(/[[:space:]]/, ' ').strip.gsub(/\s+/, ' ')
# value = value.gsub(/[[:space:]]/, ' ').strip.downcase
#
# begin
# question = Question.find_by_text(key)
# rescue Exception => e
# puts "DATAERROR: INDEX: #{index} Failed finding question: #{key} -> #{e}"
# end
#
# if question.nil?
# next if missing_questions[key]
# puts "DATAERROR: Unable to find question: #{key}"
# missing_questions[key] = true
# next
# else
# question.update_attributes(target_group: target_group) if question.unknown?
# end
#
# if (value.to_i.blank?)
# answer_index = question.option_index(value)
# answer_dictionary.each do |k, v|
# break if answer_index.present?
# answer_index = question.option_index(value.gsub(k.to_s, v.to_s))
# answer_index = question.option_index(value.gsub(v.to_s, k.to_s)) if answer_index.nil?
# end
#
# if answer_index.nil?
# next if bad_answers[key]
# puts "DATAERROR: Unable to find answer: #{key} = #{value.downcase.strip} - #{question.options.inspect}"
# bad_answers[key] = true
# next
# end
# else
# answer_index = value.to_i
# end
#
# responded_at = Date.strptime(row['End Date'], '%m/%d/%Y %H:%M')
# begin
# recipient.attempts.create(question: question, answer_index: answer_index, responded_at: responded_at)
# rescue Exception => e
# puts "DATAERROR: INDEX: #{index} Attempt failed for #{recipient.inspect} -> QUESTION: #{question.inspect}, ANSWER_INDEX: #{answer_index}, RESPONDED_AT: #{responded_at}, ERROR: #{e}"
# next
# end
# end
# end
# end
# ENV.delete('BULK_PROCESS')
ENV['BULK_PROCESS'] = 'true'
answer_dictionary = {
'Slightly': 'Somewhat',
'an incredible': 'a tremendous',
'a little': 'a little bit',
'slightly': 'somewhat',
'a little well': 'slightly well',
'quite': 'very',
'a tremendous': 'a very great',
'somewhat clearly': 'somewhat',
'almost never': 'once in a while',
'always': 'all the time',
'not at all strong': 'not strong at all',
'each': 'every'
}
respondent_map = {}
unknown_schools = {}
missing_questions = {}
bad_answers = {}
year = '2017'
timeToRun = 100 * 60 * 60
startIndex = 0
stopIndex = 100000
startTime = Time.new
['student_responses', 'teacher_responses'].each do |file|
recipients = file.split('_')[0]
target_group = Question.target_groups["for_#{recipients}s"]
csv_string = File.read(File.expand_path("../../../data/#{file}_#{year}.csv", __FILE__))
csv = CSV.parse(csv_string, :headers => true)
puts("LOADING CSV: #{csv.length} ROWS")
t = Time.new
csv.each_with_index do |row, index|
next if index < startIndex
if Time.new - startTime >= timeToRun || index > stopIndex
puts("ENDING #{timeToRun} SECONDS: #{Time.new - startTime} = #{startIndex} -> #{index} = #{index - startIndex} or #{(Time.new - t) / (index - startIndex)} per second")
break
end
if index % 10 == 0
puts("DATAMSG: PROCESSING ROW: #{index} OUT OF #{csv.length} ROWS: #{Time.new - t} - Total: #{Time.new - startTime} - #{timeToRun - (Time.new - startTime)} TO GO / #{stopIndex - startIndex} ROWS TO GO")
t = Time.new
end
district_name = row['What district is your school in?']
district_name = row['To begin, please select your district.'] if district_name.nil?
district = District.find_or_create_by(name: district_name, state_id: 1)
school_name = row["Please select your school in #{district_name}."]
if school_name.blank?
# puts "BLANK SCHOOL NAME: #{district.name} - #{index}"
next
end
school = district.schools.find_or_create_by(name: school_name)
if school.nil?
next if unknown_schools[school_name]
puts "DATAERROR: Unable to find school: #{school_name} - #{index}"
unknown_schools[school_name] = true
next
end
respondent_id = row['Response ID']
recipient_id = respondent_map[respondent_id]
if recipient_id.present?
recipient = school.recipients.where(id: recipient_id).first
else
begin
recipient = school.recipients.create(
name: "Survey Respondent Id: #{respondent_id}"
)
rescue
puts "DATAERROR: INDEX: #{index} ERROR AT #{index} - #{district.name} - #{school_name} #{school}: #{respondent_id}"
end
respondent_map[respondent_id] = recipient.id
end
recipient_list = school.recipient_lists.find_by_name("#{recipients.titleize} List")
if recipient_list.nil?
recipient_list = school.recipient_lists.create(name: "#{recipients.titleize} List")
end
recipient_list.recipient_id_array << recipient.id
recipient_list.save!
row.each do |key, value|
t1 = Time.new
next if value.nil? or key.nil? or value.to_s == "-99"
key = key.gsub(/[[:space:]]/, ' ').strip.gsub(/\s+/, ' ')
value = value.gsub(/[[:space:]]/, ' ').strip.downcase
begin
question = Question.find_by_text(key)
rescue Exception => e
puts "DATAERROR: INDEX: #{index} Failed finding question: #{key} -> #{e}"
end
if question.nil?
next if missing_questions[key]
puts "DATAERROR: Unable to find question: #{key}"
missing_questions[key] = true
next
else
question.update_attributes(target_group: target_group) if question.unknown?
end
if (value.to_i.blank?)
answer_index = question.option_index(value)
answer_dictionary.each do |k, v|
break if answer_index.present?
answer_index = question.option_index(value.gsub(k.to_s, v.to_s))
answer_index = question.option_index(value.gsub(v.to_s, k.to_s)) if answer_index.nil?
end
if answer_index.nil?
next if bad_answers[key]
puts "DATAERROR: Unable to find answer: #{key} = #{value.downcase.strip} - #{question.options.inspect}"
bad_answers[key] = true
next
end
else
answer_index = value.to_i
end
responded_at = Date.strptime(row['End Date'], '%m/%d/%Y %H:%M')
begin
recipient.attempts.create(question: question, answer_index: answer_index, responded_at: responded_at)
rescue Exception => e
puts "DATAERROR: INDEX: #{index} Attempt failed for #{recipient.inspect} -> QUESTION: #{question.inspect}, ANSWER_INDEX: #{answer_index}, RESPONDED_AT: #{responded_at}, ERROR: #{e}"
next
end
end
end
end
ENV.delete('BULK_PROCESS')
School.all.each do |school|
Category.all.each do |category|
school_category = SchoolCategory.for(school, category).first
@ -273,6 +273,6 @@ namespace :data do
end
end
# Recipient.all.each { |r| r.update_counts }
Recipient.all.each { |r| r.update_counts }
end
end

Loading…
Cancel
Save