From 2717581b2f32e88d9ae3826e366270140988633b Mon Sep 17 00:00:00 2001 From: Shaun Hamilton Date: Wed, 11 May 2022 21:30:51 +0100 Subject: [PATCH] fix(api): add needsModeration flag to user document root (#45921) * fix(api): add needsModeration flag to user document root * fix prettiers complaints * Update api-server/src/common/models/user.json Co-authored-by: Naomi Carrigan Co-authored-by: Tom <20648924+moT01@users.noreply.github.com> Co-authored-by: Naomi Carrigan --- api-server/src/common/models/user.json | 11 +++++++++++ api-server/src/server/boot/challenge.js | 15 ++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/api-server/src/common/models/user.json b/api-server/src/common/models/user.json index cfa8b432a7d..9469518ada7 100644 --- a/api-server/src/common/models/user.json +++ b/api-server/src/common/models/user.json @@ -120,6 +120,17 @@ "description": "Camper has signed academic honesty policy", "default": false }, + "needsModeration": { + "type": "boolean", + "description": "Camper has challenges needing to be moderated", + "default": false, + "index": { + "mongodb": { + "unique": true, + "background": true + } + } + }, "isFrontEndCert": { "type": "boolean", "description": "Camper is front end certified", diff --git a/api-server/src/server/boot/challenge.js b/api-server/src/server/boot/challenge.js index 1c47b85718e..4367c0b188a 100644 --- a/api-server/src/server/boot/challenge.js +++ b/api-server/src/server/boot/challenge.js @@ -145,7 +145,11 @@ export function buildUserUpdate( } let finalChallenge; const updateData = {}; - const { timezone: userTimezone, completedChallenges = [] } = user; + const { + timezone: userTimezone, + completedChallenges = [], + needsModeration = false + } = user; const oldChallenge = find( completedChallenges, @@ -210,6 +214,14 @@ export function buildUserUpdate( timezone: userTimezone }; } + + if (needsModeration) { + updateData.$set = { + ...updateData.$set, + needsModeration: true + }; + } + return { alreadyCompleted, updateData, @@ -309,6 +321,7 @@ export function modernChallengeCompleted(req, res, next) { // if multifile cert project if (challengeType === 14) { completedChallenge.isManuallyApproved = false; + user.needsModeration = true; } // We only need to know the challenge type if it's a project. If it's a