module WithFailedSubmissionReprocess

Public Instance Methods

reprocess!(uid, destination) click to toggle source
# File lib/mumuki/classroom/models/concerns/with_failed_submission_reprocess.rb, line 3
def reprocess!(uid, destination)
  reprocess_from_organization uid, destination, destination
end

Private Instance Methods

delete_failed_submission(it, source) click to toggle source
# File lib/mumuki/classroom/models/concerns/with_failed_submission_reprocess.rb, line 35
def delete_failed_submission(it, source)
  Mumuki::Classroom::FailedSubmission.for(source).where(_id: it._id).destroy_all
end
exercise_from(exercise) click to toggle source
# File lib/mumuki/classroom/models/concerns/with_failed_submission_reprocess.rb, line 67
def exercise_from(exercise)
  {
    eid: exercise[:eid],
    name: exercise[:name],
    number: exercise[:number]
  }.compact
end
guide_from(guide) click to toggle source
# File lib/mumuki/classroom/models/concerns/with_failed_submission_reprocess.rb, line 57
def guide_from(guide)
  {
    name: guide[:name],
    slug: guide[:slug],
    parent: guide[:parent],
    lesson: guide[:lesson],
    language: guide[:language]
  }.compact
end
insert_failed_submission(failed_submission, source) click to toggle source
# File lib/mumuki/classroom/models/concerns/with_failed_submission_reprocess.rb, line 25
def insert_failed_submission(failed_submission, source)
  Mumuki::Classroom::FailedSubmission.create! failed_submission.as_json.merge(organization: source)
end
new_failed_submission(progress, submission) click to toggle source
# File lib/mumuki/classroom/models/concerns/with_failed_submission_reprocess.rb, line 39
def new_failed_submission(progress, submission)
  submission.merge({
                     exercise: exercise_from(progress[:exercise]),
                     guide: guide_from(progress[:guide]),
                     submitter: submitter_from(progress[:student])
                   })
end
reprocess_failed_submission(destination, it) click to toggle source
# File lib/mumuki/classroom/models/concerns/with_failed_submission_reprocess.rb, line 29
def reprocess_failed_submission(destination, it)
  json = it.as_json
  json['organization'] = destination
  Mumuki::Classroom::Submission.process! json
end
reprocess_from_organization(uid, source, destination) click to toggle source
# File lib/mumuki/classroom/models/concerns/with_failed_submission_reprocess.rb, line 9
def reprocess_from_organization(uid, source, destination)
  Mumuki::Classroom::FailedSubmission.for(source).find_by_uid(uid).each do |failed_submission|
    delete_failed_submission failed_submission, source
    try_reprocess failed_submission, source, destination
  end
end
submitter_from(student) click to toggle source
# File lib/mumuki/classroom/models/concerns/with_failed_submission_reprocess.rb, line 47
def submitter_from(student)
  {
    uid: student[:uid],
    name: student[:name],
    email: student[:email],
    social_id: student[:social_id],
    image_url: student[:image_url]
  }.compact
end
try_reprocess(failed_submission, source, destination) click to toggle source
# File lib/mumuki/classroom/models/concerns/with_failed_submission_reprocess.rb, line 16
def try_reprocess(failed_submission, source, destination)
  begin
    reprocess_failed_submission destination, failed_submission
  rescue => e
    Mumukit::Nuntius::Logger.warn "Resubmission failed #{e}. it was: #{failed_submission.as_json}"
    insert_failed_submission failed_submission, source
  end
end