MCPcopy Create free account
hub / github.com/PrairieLearn/PrairieLearn / processGradingResult

Function processGradingResult

lib/assessment.js:285–331  ·  view source on GitHub ↗

* Process the result of an external grading job. * * @param {Obect} content - The grading job data to process.

(content)

Source from the content-addressed store, hash-verified

283 * @param {Obect} content - The grading job data to process.
284 */
285 processGradingResult(content) {
286 async.series([
287 (callback) => {
288 if (!_(content.grading).isObject()) {
289 return callback(error.makeWithData('invalid grading', {content: content}));
290 }
291 if (!_(content.grading.score).isNumber()) {
292 return callback(error.makeWithData('invalid grading.score', {content: content}));
293 }
294 if (content.grading.score < 0 || content.grading.score > 1) {
295 return callback(error.makeWithData('grading.score out of range', {content: content}));
296 }
297 if (_(content.grading).has('feedback') && !_(content.grading.feedback).isObject()) {
298 return callback(error.makeWithData('invalid grading.feedback', {content: content}));
299 }
300 const params = [
301 content.gradingId,
302 content.grading.score,
303 content.grading.feedback,
304 content.grading.receivedTime,
305 content.grading.startTime,
306 content.grading.endTime,
307 ];
308 sqldb.call('grading_jobs_process_external', params, (err) => {
309 if (ERR(err, callback)) return;
310 callback(null);
311 });
312 },
313 (callback) => {
314 sqldb.queryOneRow(sql.select_assessment_for_grading_job, {grading_job_id: content.gradingId}, (err, result) => {
315 if (ERR(err, callback)) return;
316 let assessment_instance_id = result.rows[0].assessment_instance_id;
317 ltiOutcomes.updateScore(assessment_instance_id, null, (err) => {
318 if (ERR(err, callback)) return;
319 callback(null);
320 });
321 });
322 },
323 ], (err) => {
324 if (ERR(err, () => {})) {
325 // FIXME: call sprocs/errors_insert here
326 logger.error('processGradingResult: error',
327 {message: err.message, stack: err.stack, data: JSON.stringify(err.data)});
328 }
329 externalGradingSocket.gradingJobStatusUpdated(content.gradingId);
330 });
331 },
332};

Callers

nothing calls this directly

Calls 3

callbackFunction · 0.85
callMethod · 0.80
_Function · 0.50

Tested by

no test coverage detected