class SakaiInfo::AssignmentSubmission

Attributes

assignment_id[R]
dbrow[R]
submitter_id[R]

Public Class Methods

clear_cache() click to toggle source
# File lib/sakai-info/assignment.rb, line 102
def self.clear_cache
  @@cache = {}
end
count_by_assignment_id(assignment_id) click to toggle source
# File lib/sakai-info/assignment.rb, line 160
def self.count_by_assignment_id(assignment_id)
  AssignmentSubmission.query_by_assignment_id(assignment_id).count
end
count_by_user_id(user_id) click to toggle source
# File lib/sakai-info/assignment.rb, line 173
def self.count_by_user_id(user_id)
  AssignmentSubmission.query_by_user_id(user_id).count
end
find(id) click to toggle source
# File lib/sakai-info/assignment.rb, line 119
def self.find(id)
  if @@cache[id].nil?
    row = DB.connect[:assignment_submission].where(:submission_id => id).first
    if row.nil?
      raise ObjectNotFoundException.new(AssignmentSubmission, id)
    end

    @@cache[id] = AssignmentSubmission.new(row)
  end
  @@cache[id]
end
find_by_assignment_id(assignment_id) click to toggle source
# File lib/sakai-info/assignment.rb, line 155
def self.find_by_assignment_id(assignment_id)
  AssignmentSubmission.query_by_assignment_id(assignment_id).
    all.collect { |row| AssignmentSubmission.new(row) }
end
find_by_user_id(user_id) click to toggle source
# File lib/sakai-info/assignment.rb, line 168
def self.find_by_user_id(user_id)
  AssignmentSubmission.query_by_user_id(user_id).
    all.collect { |row| AssignmentSubmission.new(row) }
end
new(dbrow) click to toggle source
# File lib/sakai-info/assignment.rb, line 107
def initialize(dbrow)
  @dbrow = dbrow

  @id = dbrow[:submission_id]
  @assignment_id = dbrow[:context]
  @submitter_id = dbrow[:submitter_id]
  @is_submitted = (dbrow[:submitted] == "true")
  @is_graded = (dbrow[:graded] == "true")

  parse_xml
end
query_by_assignment_id(assignment_id) click to toggle source
# File lib/sakai-info/assignment.rb, line 151
def self.query_by_assignment_id(assignment_id)
  DB.connect[:assignment_submission].where(:context => assignment_id)
end
query_by_user_id(user_id) click to toggle source
# File lib/sakai-info/assignment.rb, line 164
def self.query_by_user_id(user_id)
  DB.connect[:assignment_submission].where(:submitter_id => user_id)
end

Public Instance Methods

assignment() click to toggle source
# File lib/sakai-info/assignment.rb, line 135
def assignment
  @assignment ||= Assignment.find(self.assignment_id)
end
assignment_summary_serialization() click to toggle source
# File lib/sakai-info/assignment.rb, line 203
def assignment_summary_serialization
  {
    "id" => self.id,
    "submitter" => User.get_eid(self.submitter_id),
    "is_submitted" => self.submitted?
  }
end
default_serialization() click to toggle source

yaml/json serialization

# File lib/sakai-info/assignment.rb, line 178
def default_serialization
  result = {
    "id" => self.id,
    "assignment" => self.assignment.serialize(:summary),
    "submitter" => self.submitter.serialize(:summary),
    "is_submitted" => self.submitted?,
    "submitted_at" => self.submitted_at,
    "is_graded" => self.graded?,
  }
  if not self.submitted?
    result.delete("submitted_at")
    result.delete("is_graded")
  end
  result
end
graded?() click to toggle source
# File lib/sakai-info/assignment.rb, line 143
def graded?
  @is_graded || false
end
submitted?() click to toggle source
# File lib/sakai-info/assignment.rb, line 139
def submitted?
  ( self.created_by_id == self.submitter_id && @is_submitted ) || false
end
submitted_at() click to toggle source
# File lib/sakai-info/assignment.rb, line 147
def submitted_at
  @submitted_at ||= Util.format_entity_date(@attributes["datesubmitted"])
end
submitter() click to toggle source
# File lib/sakai-info/assignment.rb, line 131
def submitter
  @submitter ||= User.find(self.submitter_id)
end
summary_serialization() click to toggle source
# File lib/sakai-info/assignment.rb, line 194
def summary_serialization
  {
    "id" => self.id,
    "assignment_id" => self.assignment_id,
    "submitter" => User.get_eid(self.submitter_id),
    "is_submitted" => self.submitted?
  }
end