class Grades

Public Class Methods

create(data) click to toggle source
Calls superclass method
# File Entities/Grade.rb, line 91
def self.create(data)
  grade = super(data)
  data._means and grade.means = data._means
  grade
end
grade_to_mean(g) click to toggle source
# File Entities/Grade.rb, line 58
def self.grade_to_mean(g)
  case g
    when /P/ then
      10
    when /AB/ then
      13
    when /B/ then
      15
    when /TB/ then
      17
    when /E/ then
      19
    else
      9
  end
end

Public Instance Methods

match_by_course_person(course, student) click to toggle source
# File Entities/Grade.rb, line 14
def match_by_course_person(course, student)
  # dputs_func
  if course.class != Course
    course = Courses.match_by_course_id(course)
  end
  if student.class != Person
    student = Persons.match_by_login_name(student)
  end
  if course && student
    dputs(4) { "Found #{course.name} - #{student.login_name}" }
    grades = Grades.matches_by_course(course.course_id)
    grades.each { |g|
      dputs(4) { "Checking grade #{g.student}-#{g}-#{student}" }
      if g.student == student
        dputs(4) { "Found grade #{g} for #{student.login_name} in #{course.name}" }
        return g
      end
    }
  end
  return nil
end
migration_1_raw(g) click to toggle source
# File Entities/Grade.rb, line 75
def migration_1_raw(g)
  course = Courses.match_by_course_id(g._course_id)
  if course and course.ctype
    g._means = [g._mean || 0] * course.ctype.tests_nbr.to_i
    dputs(4) { "means is #{g._means.inspect} - tests are #{course.ctype.tests_nbr.inspect}" }
  else
    dputs(0) { "Error: Migrating without ctype for #{g.inspect}..." }
    exit
  end
end
migration_2_raw(g) click to toggle source
# File Entities/Grade.rb, line 86
def migration_2_raw(g)
  g._course = g._course_id
  g._student = g._person_id
end
save_data(d) click to toggle source
Calls superclass method
# File Entities/Grade.rb, line 36
def save_data(d)
  #dputs_func
  if not d.has_key? :grade_id
    id = matches_by_course(d[:course].course_id).select { |g|
      g.student == d[:student]
    }
    if id.length > 0
      dputs(2) { "Saving grade with existing id of #{id}" }
      d[:grade_id] = id[0].grade_id
    end
  end
  dputs(4) { "data is #{d.inspect}" }
  if d._means.count > 0
    d[:mean] = d[:means].reduce(:+) / d[:means].count
    dputs(4) { "data is #{d.inspect}" }
  else
    d._mean = 0
  end
  dputs(4) { "data before storing is #{d.inspect}" }
  super(d)
end
setup_data() click to toggle source
# File Entities/Grade.rb, line 3
def setup_data
  value_entity_course :course
  value_entity_person :student
  value_int :random

  value_block :info
  value_list_int :means
  value_int :mean
  value_str :remark
end