diff --git a/app/views/districts/show.html.haml b/app/views/districts/show.html.haml
index 22c77430..adfbc2b9 100644
--- a/app/views/districts/show.html.haml
+++ b/app/views/districts/show.html.haml
@@ -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.
diff --git a/app/views/layouts/_header.html.haml b/app/views/layouts/_header.html.haml
index fb47c550..6645a373 100644
--- a/app/views/layouts/_header.html.haml
+++ b/app/views/layouts/_header.html.haml
@@ -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
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index 3121debf..17517ace 100644
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -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'
diff --git a/app/views/welcome/index.html.haml b/app/views/welcome/index.html.haml
index 4ddfcb9f..83dbe9b3 100644
--- a/app/views/welcome/index.html.haml
+++ b/app/views/welcome/index.html.haml
@@ -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.
diff --git a/lib/tasks/data.rake b/lib/tasks/data.rake
index 18e3550a..5517f847 100644
--- a/lib/tasks/data.rake
+++ b/lib/tasks/data.rake
@@ -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