diff --git a/api-server/common/models/user.json b/api-server/common/models/user.json index ac64bd32c1..6ac9b75ea5 100644 --- a/api-server/common/models/user.json +++ b/api-server/common/models/user.json @@ -167,12 +167,12 @@ "description": "Camper is information security and quality assurance certified", "default": false }, - "isQaCert": { + "is2020QaCert": { "type": "boolean", "description": "Camper is quality assurance certified", "default": false }, - "isInfosecCert": { + "is2020InfosecCert": { "type": "boolean", "description": "Camper is information security certified", "default": false @@ -182,17 +182,17 @@ "description": "Camper is full stack certified (2018)", "default": false }, - "isSciCompPyCert": { + "is2020SciCompPyCert": { "type": "boolean", "description": "Camper is scientific computing with Python certified", "default": false }, - "isDataAnalysisPyCert": { + "is2020DataAnalysisPyCert": { "type": "boolean", "description": "Camper is data analysis with Python certified", "default": false }, - "isMachineLearningPyCert": { + "is2020MachineLearningPyCert": { "type": "boolean", "description": "Camper is machine learning with Python certified", "default": false diff --git a/api-server/server/boot/certificate.js b/api-server/server/boot/certificate.js index af0965bd87..bd881eceec 100644 --- a/api-server/server/boot/certificate.js +++ b/api-server/server/boot/certificate.js @@ -202,11 +202,11 @@ function sendCertifiedEmail( isJsAlgoDataStructCert, isDataVisCert, isApisMicroservicesCert, - isQaCert, - isInfosecCert, - isSciCompPyCert, - isDataAnalysisPyCert, - isMachineLearningPyCert + is2020QaCert, + is2020InfosecCert, + is2020SciCompPyCert, + is2020DataAnalysisPyCert, + is2020MachineLearningPyCert }, send$ ) { @@ -217,11 +217,11 @@ function sendCertifiedEmail( !isJsAlgoDataStructCert || !isDataVisCert || !isApisMicroservicesCert || - !isQaCert || - !isInfosecCert || - !isSciCompPyCert || - !isDataAnalysisPyCert || - !isMachineLearningPyCert + !is2020QaCert || + !is2020InfosecCert || + !is2020SciCompPyCert || + !is2020DataAnalysisPyCert || + !is2020MachineLearningPyCert ) { return Observable.just(false); } @@ -249,15 +249,15 @@ function getUserIsCertMap(user) { is2018DataVisCert = false, isApisMicroservicesCert = false, isInfosecQaCert = false, - isQaCert = false, - isInfosecCert = false, + is2020QaCert = false, + is2020InfosecCert = false, isFrontEndCert = false, isBackEndCert = false, isDataVisCert = false, isFullStackCert = false, - isSciCompPyCert = false, - isDataAnalysisPyCert = false, - isMachineLearningPyCert = false + is2020SciCompPyCert = false, + is2020DataAnalysisPyCert = false, + is2020MachineLearningPyCert = false } = user; return { @@ -267,15 +267,15 @@ function getUserIsCertMap(user) { is2018DataVisCert, isApisMicroservicesCert, isInfosecQaCert, - isQaCert, - isInfosecCert, + is2020QaCert, + is2020InfosecCert, isFrontEndCert, isBackEndCert, isDataVisCert, isFullStackCert, - isSciCompPyCert, - isDataAnalysisPyCert, - isMachineLearningPyCert + is2020SciCompPyCert, + is2020DataAnalysisPyCert, + is2020MachineLearningPyCert }; } @@ -396,11 +396,11 @@ function createShowCert(app) { is2018DataVisCert: true, isApisMicroservicesCert: true, isInfosecQaCert: true, - isQaCert: true, - isInfosecCert: true, - isSciCompPyCert: true, - isDataAnalysisPyCert: true, - isMachineLearningPyCert: true, + is2020QaCert: true, + is2020InfosecCert: true, + is2020SciCompPyCert: true, + is2020DataAnalysisPyCert: true, + is2020MachineLearningPyCert: true, isHonest: true, username: true, name: true, diff --git a/api-server/server/boot/user.js b/api-server/server/boot/user.js index a0c39f5d02..8e241ed4c4 100644 --- a/api-server/server/boot/user.js +++ b/api-server/server/boot/user.js @@ -162,16 +162,16 @@ function postResetProgress(req, res, next) { isJsAlgoDataStructCert: false, isApisMicroservicesCert: false, isInfosecQaCert: false, - isQaCert: false, - isInfosecCert: false, + is2020QaCert: false, + is2020InfosecCert: false, is2018FullStackCert: false, isFrontEndCert: false, isBackEndCert: false, isDataVisCert: false, isFullStackCert: false, - isSciCompPyCert: false, - isDataAnalysisPyCert: false, - isMachineLearningPyCert: false, + is2020SciCompPyCert: false, + is2020DataAnalysisPyCert: false, + is2020MachineLearningPyCert: false, completedChallenges: [] }, function(err) { diff --git a/api-server/server/utils/certTypes.json b/api-server/server/utils/certTypes.json index 1c1ef50858..08bcc02366 100644 --- a/api-server/server/utils/certTypes.json +++ b/api-server/server/utils/certTypes.json @@ -8,10 +8,10 @@ "jsAlgoDataStruct": "isJsAlgoDataStructCert", "apisMicroservices": "isApisMicroservicesCert", "infosecQa": "isInfosecQaCert", - "qa": "isQaCert", - "infosec": "isInfosecCert", + "qa": "is2020QaCert", + "infosec": "is2020InfosecCert", "fullStack": "isFullStackCert", - "sciCompPy": "isSciCompPyCert", - "dataAnalysisPy": "isDataAnalysisPyCert", - "machineLearningPy": "isMachineLearningPyCert" + "sciCompPy": "is2020SciCompPyCert", + "dataAnalysisPy": "is2020DataAnalysisPyCert", + "machineLearningPy": "is2020MachineLearningPyCert" } diff --git a/api-server/server/utils/commit.js b/api-server/server/utils/commit.js index 8687a194ef..27b954c4ba 100644 --- a/api-server/server/utils/commit.js +++ b/api-server/server/utils/commit.js @@ -18,11 +18,11 @@ export function completeCommitment$(user) { isDataVisCert, isApisMicroservicesCert, isInfosecQaCert, - isQaCert, - isInfosecCert, - isSciCompPyCert, - isDataAnalysisPyCert, - isMachineLearningPyCert + is2020QaCert, + is2020InfosecCert, + is2020SciCompPyCert, + is2020DataAnalysisPyCert, + is2020MachineLearningPyCert } = user; return Observable.fromNodeCallback(user.pledge, user)().flatMap(pledge => { @@ -42,11 +42,12 @@ export function completeCommitment$(user) { (isDataVisCert && goal === commitGoals.dataVisCert) || (isApisMicroservicesCert && goal === commitGoals.apisMicroservicesCert) || (isInfosecQaCert && goal === commitGoals.infosecQaCert) || - (isQaCert && goal === commitGoals.QaCert) || - (isInfosecCert && goal === commitGoals.infosecCert) || - (isSciCompPyCert && goal === commitGoals.sciCompPyCert) || - (isDataAnalysisPyCert && goal === commitGoals.dataAnalysisPyCert) || - (isMachineLearningPyCert && goal === commitGoals.machineLearningPyCert) + (is2020QaCert && goal === commitGoals.QaCert) || + (is2020InfosecCert && goal === commitGoals.infosecCert) || + (is2020SciCompPyCert && goal === commitGoals.sciCompPyCert) || + (is2020DataAnalysisPyCert && goal === commitGoals.dataAnalysisPyCert) || + (is2020MachineLearningPyCert && + goal === commitGoals.machineLearningPyCert) ) { debug('marking goal complete'); pledge.isCompleted = true; diff --git a/api-server/server/utils/getDynamicPropsForUser.js b/api-server/server/utils/getDynamicPropsForUser.js index 262c5f535f..45bcfafed8 100644 --- a/api-server/server/utils/getDynamicPropsForUser.js +++ b/api-server/server/utils/getDynamicPropsForUser.js @@ -3,13 +3,13 @@ function getCompletedCertCount(user) { 'isApisMicroservicesCert', 'is2018DataVisCert', 'isFrontEndLibsCert', - 'isQaCert', - 'isInfosecCert', + 'is2020QaCert', + 'is2020InfosecCert', 'isJsAlgoDataStructCert', 'isRespWebDesignCert', - 'isSciCompPyCert', - 'isDataAnalysisPyCert', - 'isMachineLearningPyCert' + 'is2020SciCompPyCert', + 'is2020DataAnalysisPyCert', + 'is2020MachineLearningPyCert' ].reduce((sum, key) => (user[key] ? sum + 1 : sum), 0); } diff --git a/api-server/server/utils/publicUserProps.js b/api-server/server/utils/publicUserProps.js index 3df57d0638..5ff1c1ffff 100644 --- a/api-server/server/utils/publicUserProps.js +++ b/api-server/server/utils/publicUserProps.js @@ -23,13 +23,13 @@ export const publicUserProps = [ 'isFrontEndLibsCert', 'isHonest', 'isInfosecQaCert', - 'isQaCert', - 'isInfosecCert', + 'is2020QaCert', + 'is2020InfosecCert', 'isJsAlgoDataStructCert', 'isRespWebDesignCert', - 'isSciCompPyCert', - 'isDataAnalysisPyCert', - 'isMachineLearningPyCert', + 'is2020SciCompPyCert', + 'is2020DataAnalysisPyCert', + 'is2020MachineLearningPyCert', 'linkedin', 'location', 'name', diff --git a/api-server/server/utils/user-stats.js b/api-server/server/utils/user-stats.js index 3879aac6a1..787eaf13cf 100644 --- a/api-server/server/utils/user-stats.js +++ b/api-server/server/utils/user-stats.js @@ -142,13 +142,13 @@ function getCompletedCertCount(user) { 'isApisMicroservicesCert', 'is2018DataVisCert', 'isFrontEndLibsCert', - 'isQaCert', - 'isInfosecCert', + 'is2020QaCert', + 'is2020InfosecCert', 'isJsAlgoDataStructCert', 'isRespWebDesignCert', - 'isSciCompPyCert', - 'isDataAnalysisPyCert', - 'isMachineLearningPyCert' + 'is2020SciCompPyCert', + 'is2020DataAnalysisPyCert', + 'is2020MachineLearningPyCert' ].reduce((sum, key) => (user[key] ? sum + 1 : sum), 0); } diff --git a/client/src/client-only-routes/ShowSettings.js b/client/src/client-only-routes/ShowSettings.js index 02b3347f66..d0d681191b 100644 --- a/client/src/client-only-routes/ShowSettings.js +++ b/client/src/client-only-routes/ShowSettings.js @@ -60,13 +60,13 @@ const propTypes = { isFullStackCert: PropTypes.bool, isHonest: PropTypes.bool, isInfosecQaCert: PropTypes.bool, - isQaCert: PropTypes.bool, - isInfosecCert: PropTypes.bool, + is2020QaCert: PropTypes.bool, + is2020InfosecCert: PropTypes.bool, isJsAlgoDataStructCert: PropTypes.bool, isRespWebDesignCert: PropTypes.bool, - isSciCompPyCert: PropTypes.bool, - isDataAnalysisPyCert: PropTypes.bool, - isMachineLearningPyCert: PropTypes.bool, + is2020SciCompPyCert: PropTypes.bool, + is2020DataAnalysisPyCert: PropTypes.bool, + is2020MachineLearningPyCert: PropTypes.bool, linkedin: PropTypes.string, location: PropTypes.string, name: PropTypes.string, @@ -134,14 +134,14 @@ export function ShowSettings(props) { isDataVisCert, isFrontEndCert, isInfosecQaCert, - isQaCert, - isInfosecCert, + is2020QaCert, + is2020InfosecCert, isFrontEndLibsCert, isFullStackCert, isRespWebDesignCert, - isSciCompPyCert, - isDataAnalysisPyCert, - isMachineLearningPyCert, + is2020SciCompPyCert, + is2020DataAnalysisPyCert, + is2020MachineLearningPyCert, isEmailVerified, isHonest, sendQuincyEmail, @@ -241,21 +241,21 @@ export function ShowSettings(props) { completedChallenges={completedChallenges} createFlashMessage={createFlashMessage} is2018DataVisCert={is2018DataVisCert} + is2020DataAnalysisPyCert={is2020DataAnalysisPyCert} + is2020InfosecCert={is2020InfosecCert} + is2020MachineLearningPyCert={is2020MachineLearningPyCert} + is2020QaCert={is2020QaCert} + is2020SciCompPyCert={is2020SciCompPyCert} isApisMicroservicesCert={isApisMicroservicesCert} isBackEndCert={isBackEndCert} - isDataAnalysisPyCert={isDataAnalysisPyCert} isDataVisCert={isDataVisCert} isFrontEndCert={isFrontEndCert} isFrontEndLibsCert={isFrontEndLibsCert} isFullStackCert={isFullStackCert} isHonest={isHonest} - isInfosecCert={isInfosecCert} isInfosecQaCert={isInfosecQaCert} isJsAlgoDataStructCert={isJsAlgoDataStructCert} - isMachineLearningPyCert={isMachineLearningPyCert} - isQaCert={isQaCert} isRespWebDesignCert={isRespWebDesignCert} - isSciCompPyCert={isSciCompPyCert} username={username} verifyCert={verifyCert} /> diff --git a/client/src/components/settings/Certification.js b/client/src/components/settings/Certification.js index 03c988fd6e..58cebd10e1 100644 --- a/client/src/components/settings/Certification.js +++ b/client/src/components/settings/Certification.js @@ -42,21 +42,21 @@ const propTypes = { ), createFlashMessage: PropTypes.func.isRequired, is2018DataVisCert: PropTypes.bool, + is2020DataAnalysisPyCert: PropTypes.bool, + is2020InfosecCert: PropTypes.bool, + is2020MachineLearningPyCert: PropTypes.bool, + is2020QaCert: PropTypes.bool, + is2020SciCompPyCert: PropTypes.bool, isApisMicroservicesCert: PropTypes.bool, isBackEndCert: PropTypes.bool, - isDataAnalysisPyCert: PropTypes.bool, isDataVisCert: PropTypes.bool, isFrontEndCert: PropTypes.bool, isFrontEndLibsCert: PropTypes.bool, isFullStackCert: PropTypes.bool, isHonest: PropTypes.bool, - isInfosecCert: PropTypes.bool, isInfosecQaCert: PropTypes.bool, isJsAlgoDataStructCert: PropTypes.bool, - isMachineLearningPyCert: PropTypes.bool, - isQaCert: PropTypes.bool, isRespWebDesignCert: PropTypes.bool, - isSciCompPyCert: PropTypes.bool, updateLegacyCert: PropTypes.func.isRequired, username: PropTypes.string, verifyCert: PropTypes.func.isRequired @@ -72,14 +72,14 @@ const isCertSelector = ({ isDataVisCert, isFrontEndCert, isInfosecQaCert, - isQaCert, - isInfosecCert, + is2020QaCert, + is2020InfosecCert, isFrontEndLibsCert, isFullStackCert, isRespWebDesignCert, - isSciCompPyCert, - isDataAnalysisPyCert, - isMachineLearningPyCert + is2020SciCompPyCert, + is2020DataAnalysisPyCert, + is2020MachineLearningPyCert }) => ({ is2018DataVisCert, isApisMicroservicesCert, @@ -88,14 +88,14 @@ const isCertSelector = ({ isDataVisCert, isFrontEndCert, isInfosecQaCert, - isQaCert, - isInfosecCert, + is2020QaCert, + is2020InfosecCert, isFrontEndLibsCert, isFullStackCert, isRespWebDesignCert, - isSciCompPyCert, - isDataAnalysisPyCert, - isMachineLearningPyCert + is2020SciCompPyCert, + is2020DataAnalysisPyCert, + is2020MachineLearningPyCert }); const isCertMapSelector = createSelector( @@ -105,27 +105,27 @@ const isCertMapSelector = createSelector( isApisMicroservicesCert, isJsAlgoDataStructCert, isInfosecQaCert, - isQaCert, - isInfosecCert, + is2020QaCert, + is2020InfosecCert, isFrontEndLibsCert, isRespWebDesignCert, isDataVisCert, isFrontEndCert, isBackEndCert, - isSciCompPyCert, - isDataAnalysisPyCert, - isMachineLearningPyCert + is2020SciCompPyCert, + is2020DataAnalysisPyCert, + is2020MachineLearningPyCert }) => ({ 'Responsive Web Design': isRespWebDesignCert, 'JavaScript Algorithms and Data Structures': isJsAlgoDataStructCert, 'Front End Libraries': isFrontEndLibsCert, 'Data Visualization': is2018DataVisCert, "API's and Microservices": isApisMicroservicesCert, - 'Quality Assurance': isQaCert, - 'Information Security': isInfosecCert, - 'Scientific Computing with Python': isSciCompPyCert, - 'Data Analysis with Python': isDataAnalysisPyCert, - 'Machine Learning with Python': isMachineLearningPyCert, + 'Quality Assurance': is2020QaCert, + 'Information Security': is2020InfosecCert, + 'Scientific Computing with Python': is2020SciCompPyCert, + 'Data Analysis with Python': is2020DataAnalysisPyCert, + 'Machine Learning with Python': is2020MachineLearningPyCert, 'Legacy Front End': isFrontEndCert, 'Legacy Data Visualization': isDataVisCert, 'Legacy Back End': isBackEndCert, @@ -472,8 +472,8 @@ export class CertificationSettings extends Component { is2018DataVisCert, isApisMicroservicesCert, isFrontEndLibsCert, - isQaCert, - isInfosecCert, + is2020QaCert, + is2020InfosecCert, isJsAlgoDataStructCert, isRespWebDesignCert } = this.props; @@ -482,8 +482,8 @@ export class CertificationSettings extends Component { is2018DataVisCert && isApisMicroservicesCert && isFrontEndLibsCert && - isQaCert && - isInfosecCert && + is2020QaCert && + is2020InfosecCert && isJsAlgoDataStructCert && isRespWebDesignCert; diff --git a/client/src/components/settings/Certification.test.js b/client/src/components/settings/Certification.test.js index 35970bf43c..18c3e43ce3 100644 --- a/client/src/components/settings/Certification.test.js +++ b/client/src/components/settings/Certification.test.js @@ -189,13 +189,13 @@ const defaultTestProps = { isFullStackCert: false, isHonest: false, isInfosecQaCert: false, - isQaCert: false, - isInfosecCert: false, + is2020QaCert: false, + is2020InfosecCert: false, isJsAlgoDataStructCert: false, isRespWebDesignCert: false, - isSciCompPyCert: false, - isDataAnalysisPyCert: false, - isMachineLearningPyCert: false, + is2020SciCompPyCert: false, + is2020DataAnalysisPyCert: false, + is2020MachineLearningPyCert: false, updateLegacyCert: () => {}, username: 'developmentuser', verifyCert: () => {}, diff --git a/client/src/redux/index.js b/client/src/redux/index.js index ed8c065cbd..031fb50a5e 100644 --- a/client/src/redux/index.js +++ b/client/src/redux/index.js @@ -213,15 +213,15 @@ export const certificatesByNameSelector = username => state => { isJsAlgoDataStructCert, isApisMicroservicesCert, isInfosecQaCert, - isQaCert, - isInfosecCert, + is2020QaCert, + is2020InfosecCert, isFrontEndCert, isBackEndCert, isDataVisCert, isFullStackCert, - isSciCompPyCert, - isDataAnalysisPyCert, - isMachineLearningPyCert + is2020SciCompPyCert, + is2020DataAnalysisPyCert, + is2020MachineLearningPyCert } = userByNameSelector(username)(state); return { hasModernCert: @@ -230,12 +230,12 @@ export const certificatesByNameSelector = username => state => { isFrontEndLibsCert || isJsAlgoDataStructCert || isApisMicroservicesCert || - isQaCert || - isInfosecCert || + is2020QaCert || + is2020InfosecCert || isFullStackCert || - isSciCompPyCert || - isDataAnalysisPyCert || - isMachineLearningPyCert, + is2020SciCompPyCert || + is2020DataAnalysisPyCert || + is2020MachineLearningPyCert, hasLegacyCert: isFrontEndCert || isBackEndCert || isDataVisCert || isInfosecQaCert, currentCerts: [ @@ -270,27 +270,27 @@ export const certificatesByNameSelector = username => state => { showURL: 'apis-and-microservices' }, { - show: isQaCert, + show: is2020QaCert, title: ' Quality Assurance Certification', showURL: 'quality-assurance' }, { - show: isInfosecCert, + show: is2020InfosecCert, title: 'Information Security Certification', showURL: 'information-security' }, { - show: isSciCompPyCert, + show: is2020SciCompPyCert, title: 'Scientific Computing with Python Certification', showURL: 'scientific-computing-with-python' }, { - show: isDataAnalysisPyCert, + show: is2020DataAnalysisPyCert, title: 'Data Analysis with Python Certification', showURL: 'data-analysis-with-python' }, { - show: isMachineLearningPyCert, + show: is2020MachineLearningPyCert, title: 'Machine Learning with Python Certification', showURL: 'machine-learning-with-python' } diff --git a/tools/scripts/seed/seedAuthUser.js b/tools/scripts/seed/seedAuthUser.js index adb75b7d9b..243e7302f0 100644 --- a/tools/scripts/seed/seedAuthUser.js +++ b/tools/scripts/seed/seedAuthUser.js @@ -63,12 +63,12 @@ MongoClient.connect(MONGOHQ_URL, { useNewUrlParser: true }, function( isJsAlgoDataStructCert: false, isApisMicroservicesCert: false, isInfosecQaCert: false, - isQaCert: false, - isInfosecCert: false, + is2020QaCert: false, + is2020InfosecCert: false, is2018FullStackCert: false, - isSciCompPyCert: false, - isDataAnalysisPyCert: false, - isMachineLearningPyCert: false, + is2020SciCompPyCert: false, + is2020DataAnalysisPyCert: false, + is2020MachineLearningPyCert: false, completedChallenges: [], portfolio: [], yearsTopContributor: [],