Attempt to resurrect qomet code - need some rewrite
[qomet.git] / routes / pages.js
index 37b84cf..2acefc0 100644 (file)
@@ -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", {
@@ -28,14 +27,20 @@ router.get("/login", access.unlogged, (req,res) => {
 
 // Redirection screens when possible cheating attempt detected in exam
 router.get("/enablejs", (req,res) => {
-       res.render("enable-js", {
+       res.render("enablejs", {
                title: "JS disabled",
        });
 });
 
-router.get("/nodevtools", (req,res) => {
-       res.render("no-devtools", {
-               title: "Devtools enabled",
+router.get("/fullscreen", (req,res) => {
+       res.render("fullscreen", {
+               title: "Not in fullscreen",
+       });
+});
+
+router.get("/noblur", (req,res) => {
+       res.render("noblur", {
+               title: "Lost focus",
        });
 });
 
@@ -70,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) => {
@@ -81,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,
                                        });
@@ -91,45 +96,57 @@ 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"];
+       // 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["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")
+       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 password hash with requests
-router.get("/:initials([a-z0-9]+)/:courseCode([a-z0-9._-]+)/:assessmentName([a-z0-9._-]+)/monitor", (req,res) => {
+// Monitor: --> after identification (password), always send secret with requests
+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,
-               code: code,
-               name: name,
+               courseCode: code,
+               examName: name,
        });
 });