X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=routes%2Fpages.js;h=2acefc0a18ee77e5495adc1075c17ee2a543b7a8;hb=a3080c337cfaca9d600911396cae5a9233d43554;hp=f6c77a25d104066c3010954fdc326a783fa89be1;hpb=71d1ca9c594b64d959c608a2abbff926480abad5;p=qomet.git diff --git a/routes/pages.js b/routes/pages.js index f6c77a2..2acefc0 100644 --- a/routes/pages.js +++ b/routes/pages.js @@ -1,15 +1,14 @@ let router = require("express").Router(); const access = require("../utils/access"); -const UserEntity = require("../entities/user"); -const AssessmentEntity = require("../entities/assessment"); +const UserModel = require("../models/user"); +const EvaluationModel = require("../models/evaluation"); const CourseModel = require("../models/course"); -const AssessmentModel = require("../models/assessment"); // Actual pages (least specific last) -// List initials and count assessments +// List initials and count evaluations router.get("/", (req,res) => { - UserEntity.getAll( (err,userArray) => { + UserModel.getAll( (err,userArray) => { if (!!err) return res.json(err); res.render("index", { @@ -76,7 +75,7 @@ router.get("/:initials([a-z0-9]+)/:courseCode([a-z0-9._-]+)", (req,res) => { let code = req.params["courseCode"]; CourseModel.getByRefs(initials, code, (err,course) => { access.checkRequest(res, err, course, "Course not found", () => { - AssessmentEntity.getByCourse(course._id, (err2,assessmentArray) => { + EvaluationModel.getByCourse(course._id, (err2,evaluationArray) => { if (!!err) return res.json(err); access.getUser(req, res, (err2,user) => { @@ -87,7 +86,7 @@ router.get("/:initials([a-z0-9]+)/:courseCode([a-z0-9._-]+)", (req,res) => { res.render("course", { title: "course " + initials + "/" + code, course: course, - assessmentArray: assessmentArray, + evaluationArray: evaluationArray, teacher: isTeacher, initials: initials, }); @@ -97,43 +96,54 @@ router.get("/:initials([a-z0-9]+)/:courseCode([a-z0-9._-]+)", (req,res) => { }); }); -// Display assessment (exam or open status) -router.get("/:initials([a-z0-9]+)/:courseCode([a-z0-9._-]+)/:assessmentName([a-z0-9._-]+)", (req,res) => { +// Grading students answers: --> after identification (password), always send secret with requests +router.get("/:initials([a-z0-9]+)/:courseCode([a-z0-9._-]+)/grade", (req,res) => { let initials = req.params["initials"]; let code = req.params["courseCode"]; - let name = req.params["assessmentName"]; - AssessmentModel.getByRefs(initials, code, name, (err,assessment) => { - access.checkRequest(res, err, assessment, "Assessment not found", () => { - if (!assessment.active) - return res.json({errmsg: "Assessment is idle"}); - delete assessment["papers"]; //always remove recorded students answers - if (assessment.mode == "exam") + // TODO: if (main) teacher, also send secret, saving one request + res.render("grade", { + title: "grade exams " + code + "/" + name, + initials: initials, + courseCode: code, + }); +}); + +// Display evaluation (exam or open status) +router.get("/:initials([a-z0-9]+)/:courseCode([a-z0-9._-]+)/:evaluationName([a-z0-9._-]+)", (req,res) => { + let initials = req.params["initials"]; + let code = req.params["courseCode"]; + let name = req.params["evaluationName"]; + EvaluationModel.getByRefs(initials, code, name, (err,evaluation) => { + access.checkRequest(res, err, evaluation, "Evaluation not found", () => { + if (!evaluation.active) + return res.json({errmsg: "Evaluation is idle"}); + delete evaluation["papers"]; //always remove recorded students answers + if (evaluation.mode == "exam") { if (!!req.headers['user-agent'].match(/(SpecialAgent|HeadlessChrome|PhantomJS)/)) { // Basic headless browser detection return res.json({errmsg: "Headless browser detected"}); } - // Strip conclusion + questions if exam mode (stepwise process) - delete assessment["conclusion"]; - delete assessment["questions"]; + // Strip questions if exam mode (stepwise process) + delete evaluation["questions"]; } - res.render("assessment", { - title: "assessment " + initials + "/" + code + "/" + name, - assessment: assessment, + res.render("evaluation", { + title: "evaluation " + initials + "/" + code + "/" + name, + evaluation: evaluation, }); }); }); }); // Monitor: --> after identification (password), always send secret with requests -router.get("/:initials([a-z0-9]+)/:courseCode([a-z0-9._-]+)/:assessmentName([a-z0-9._-]+)/monitor", (req,res) => { +router.get("/:initials([a-z0-9]+)/:courseCode([a-z0-9._-]+)/:evaluationName([a-z0-9._-]+)/monitor", (req,res) => { let initials = req.params["initials"]; let code = req.params["courseCode"]; - let name = req.params["assessmentName"]; + let name = req.params["evaluationName"]; // TODO: if (main) teacher, also send secret, saving one request res.render("monitor", { - title: "monitor assessment " + code + "/" + name, + title: "monitor evaluation " + code + "/" + name, initials: initials, courseCode: code, examName: name,