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