namespace :db do desc "Populate database with default data" def generate_report(user) report_dir = Rails.root.join("public", "reports") filename = user.id.to_s + ".pdf" report = GradeReport.new(user, Grade.where(:student => user)) report.render_file report_dir.join(filename) end task :populate => :environment do Rake::Task['db:reset'].invoke u1 = User.create!(:login => "peter", :role => "student", :password => Digest::MD5.hexdigest("football")) u2 = User.create!(:login => "alice", :role => "student", :password => Digest::MD5.hexdigest("wonderland3")) u3 = User.create!(:login => "stacy", :role => "student", :password => Digest::MD5.hexdigest("ijv88234ji")) u4 = User.create!(:login => "ben", :role => "student", :password => Digest::MD5.hexdigest("passw0rd")) u5 = User.create!(:login => "kim", :role => "student", :password => Digest::MD5.hexdigest("12321")) u6 = User.create!(:login => "jack", :role => "student", :password => Digest::MD5.hexdigest("s3cret")) u7 = User.create!(:login => "kate", :role => "student", :password => Digest::MD5.hexdigest("geheim!")) u8 = User.create!(:login => "sophie", :role => "student", :password => Digest::MD5.hexdigest("flowerpot")) l1 = User.create!(:login => "achim", :role => "lecturer", :password => Digest::MD5.hexdigest("dvgmisinsecure"), :secret_question => "From the university in which city did I get my Master's degree?", :secret_answer => "Freiburg") l2 = User.create!(:login => "greg", :role => "lecturer", :password => Digest::MD5.hexdigest("supersecure321")) l3 = User.create!(:login => "david", :role => "lecturer", :password => Digest::MD5.hexdigest("david3")) l4 = User.create!(:login => "john", :role => "lecturer", :password => Digest::MD5.hexdigest("johnjohnson")) lec1 = Lecture.create(:name => "Security", :lecturer_id => l1.id) lec2 = Lecture.create(:name => "Algorithms", :lecturer_id => l2.id) lec3 = Lecture.create(:name => "Java Programming", :lecturer_id => l3.id) lec4 = Lecture.create(:name => "Algebra", :lecturer_id => l4.id) lec5 = Lecture.create(:name => "Probability Theory", :lecturer_id => l2.id) lec6 = Lecture.create(:name => "Software Hut", :lecturer_id => l1.id) Grade.create(:lecture_id => lec1.id, :student_id => u1.id, :grade => 45, :comment => "Seems like I should have studied more...") Grade.create(:lecture_id => lec2.id, :student_id => u1.id, :grade => 90, :comment => "Sweet! All that studying paid off!") Grade.create(:lecture_id => lec5.id, :student_id => u1.id, :grade => 30, :comment => "I thought this is computer science!?") Grade.create(:lecture_id => lec4.id, :student_id => u2.id, :grade => 80) Grade.create(:lecture_id => lec5.id, :student_id => u2.id, :grade => 73) Grade.create(:lecture_id => lec1.id, :student_id => u2.id, :grade => 44) Grade.create(:lecture_id => lec3.id, :student_id => u3.id, :grade => 59, :comment => "Could you bump me to a 60 at least, please?") Grade.create(:lecture_id => lec5.id, :student_id => u3.id, :grade => 47) Grade.create(:lecture_id => lec2.id, :student_id => u4.id, :grade => 83) Grade.create(:lecture_id => lec3.id, :student_id => u4.id, :grade => 66) Grade.create(:lecture_id => lec5.id, :student_id => u4.id, :grade => 73) Grade.create(:lecture_id => lec6.id, :student_id => u4.id, :grade => 63) Grade.create(:lecture_id => lec6.id, :student_id => u4.id, :grade => 23, :comment => "We did not have enough time in the final!") Grade.create(:lecture_id => lec1.id, :student_id => u5.id, :grade => 0, :comment => "The upload was broken!") Grade.create(:lecture_id => lec3.id, :student_id => u5.id, :grade => 94, :comment => "Nice!") Grade.create(:lecture_id => lec5.id, :student_id => u5.id, :grade => 66) Grade.create(:lecture_id => lec6.id, :student_id => u5.id, :grade => 7, :comment => "Oh boy...") generate_report(u1) generate_report(u2) generate_report(u3) generate_report(u4) generate_report(u5) generate_report(u6) generate_report(u7) generate_report(u8) end end