fix(learn): versioning for new certificate slugs (#39087)

This commit is contained in:
Kristofer Koishigawa
2020-06-18 00:00:31 +09:00
committed by GitHub
parent b3d5cde75e
commit 6e5988da4e
24 changed files with 223 additions and 227 deletions

View File

@ -167,12 +167,12 @@
"description": "Camper is information security and quality assurance certified",
"default": false
},
"is2020QaCert": {
"isQaCertV7": {
"type": "boolean",
"description": "Camper is quality assurance certified",
"default": false
},
"is2020InfosecCert": {
"isInfosecCertV7": {
"type": "boolean",
"description": "Camper is information security certified",
"default": false
@ -182,17 +182,17 @@
"description": "Camper is full stack certified (2018)",
"default": false
},
"is2020SciCompPyCert": {
"isSciCompPyCertV7": {
"type": "boolean",
"description": "Camper is scientific computing with Python certified",
"default": false
},
"is2020DataAnalysisPyCert": {
"isDataAnalysisPyCertV7": {
"type": "boolean",
"description": "Camper is data analysis with Python certified",
"default": false
},
"is2020MachineLearningPyCert": {
"isMachineLearningPyCertV7": {
"type": "boolean",
"description": "Camper is machine learning with Python certified",
"default": false

View File

@ -21,11 +21,11 @@ import {
jsAlgoDataStructId,
dataVis2018Id,
apisMicroservicesId,
qa2020Id,
infosec2020Id,
sciCompPy2020Id,
dataAnalysisPy2020Id,
machineLearningPy2020Id
qaV7Id,
infosecV7Id,
sciCompPyV7Id,
dataAnalysisPyV7Id,
machineLearningPyV7Id
} from '../utils/constantStrings.json';
import { oldDataVizId } from '../../../config/misc';
import certTypes from '../utils/certTypes.json';
@ -117,15 +117,12 @@ function createCertTypeIds(app) {
apisMicroservicesId,
Challenge
),
[certTypes.qa2020]: getIdsForCert$(qa2020Id, Challenge),
[certTypes.infosec2020]: getIdsForCert$(infosec2020Id, Challenge),
[certTypes.sciCompPy2020]: getIdsForCert$(sciCompPy2020Id, Challenge),
[certTypes.dataAnalysisPy2020]: getIdsForCert$(
dataAnalysisPy2020Id,
Challenge
),
[certTypes.machineLearningPy2020]: getIdsForCert$(
machineLearningPy2020Id,
[certTypes.qaV7]: getIdsForCert$(qaV7Id, Challenge),
[certTypes.infosecV7]: getIdsForCert$(infosecV7Id, Challenge),
[certTypes.sciCompPyV7]: getIdsForCert$(sciCompPyV7Id, Challenge),
[certTypes.dataAnalysisPyV7]: getIdsForCert$(dataAnalysisPyV7Id, Challenge),
[certTypes.machineLearningPyV7]: getIdsForCert$(
machineLearningPyV7Id,
Challenge
)
};
@ -148,11 +145,11 @@ const certIds = {
[certTypes.jsAlgoDataStruct]: jsAlgoDataStructId,
[certTypes.dataVis2018]: dataVis2018Id,
[certTypes.apisMicroservices]: apisMicroservicesId,
[certTypes.qa2020]: qa2020Id,
[certTypes.infosec2020]: infosec2020Id,
[certTypes.sciCompPy2020]: sciCompPy2020Id,
[certTypes.dataAnalysisPy2020]: dataAnalysisPy2020Id,
[certTypes.machineLearningPy2020]: machineLearningPy2020Id
[certTypes.qaV7]: qaV7Id,
[certTypes.infosecV7]: infosecV7Id,
[certTypes.sciCompPyV7]: sciCompPyV7Id,
[certTypes.dataAnalysisPyV7]: dataAnalysisPyV7Id,
[certTypes.machineLearningPyV7]: machineLearningPyV7Id
};
const certText = {
@ -166,11 +163,11 @@ const certText = {
[certTypes.jsAlgoDataStruct]: 'JavaScript Algorithms and Data Structures',
[certTypes.dataVis2018]: 'Data Visualization',
[certTypes.apisMicroservices]: 'APIs and Microservices',
[certTypes.qa2020]: 'Quality Assurance',
[certTypes.infosec2020]: 'Information Security',
[certTypes.sciCompPy2020]: 'Scientific Computing with Python',
[certTypes.dataAnalysisPy2020]: 'Data Analysis with Python',
[certTypes.machineLearningPy2020]: 'Machine Learning with Python'
[certTypes.qaV7]: 'Quality Assurance',
[certTypes.infosecV7]: 'Information Security',
[certTypes.sciCompPyV7]: 'Scientific Computing with Python',
[certTypes.dataAnalysisPyV7]: 'Data Analysis with Python',
[certTypes.machineLearningPyV7]: 'Machine Learning with Python'
};
const completionHours = {
@ -184,11 +181,11 @@ const completionHours = {
[certTypes.jsAlgoDataStruct]: 300,
[certTypes.dataVis2018]: 300,
[certTypes.apisMicroservices]: 300,
[certTypes.qa2020]: 300,
[certTypes.infosec2020]: 300,
[certTypes.sciCompPy2020]: 400,
[certTypes.dataAnalysisPy2020]: 400,
[certTypes.machineLearningPy2020]: 400
[certTypes.qaV7]: 300,
[certTypes.infosecV7]: 300,
[certTypes.sciCompPyV7]: 400,
[certTypes.dataAnalysisPyV7]: 400,
[certTypes.machineLearningPyV7]: 400
};
function getIdsForCert$(id, Challenge) {
@ -212,11 +209,11 @@ function sendCertifiedEmail(
isJsAlgoDataStructCert,
isDataVisCert,
isApisMicroservicesCert,
is2020QaCert,
is2020InfosecCert,
is2020SciCompPyCert,
is2020DataAnalysisPyCert,
is2020MachineLearningPyCert
isQaCertV7,
isInfosecCertV7,
isSciCompPyCertV7,
isDataAnalysisPyCertV7,
isMachineLearningPyCertV7
},
send$
) {
@ -227,11 +224,11 @@ function sendCertifiedEmail(
!isJsAlgoDataStructCert ||
!isDataVisCert ||
!isApisMicroservicesCert ||
!is2020QaCert ||
!is2020InfosecCert ||
!is2020SciCompPyCert ||
!is2020DataAnalysisPyCert ||
!is2020MachineLearningPyCert
!isQaCertV7 ||
!isInfosecCertV7 ||
!isSciCompPyCertV7 ||
!isDataAnalysisPyCertV7 ||
!isMachineLearningPyCertV7
) {
return Observable.just(false);
}
@ -259,15 +256,15 @@ function getUserIsCertMap(user) {
is2018DataVisCert = false,
isApisMicroservicesCert = false,
isInfosecQaCert = false,
is2020QaCert = false,
is2020InfosecCert = false,
isQaCertV7 = false,
isInfosecCertV7 = false,
isFrontEndCert = false,
isBackEndCert = false,
isDataVisCert = false,
isFullStackCert = false,
is2020SciCompPyCert = false,
is2020DataAnalysisPyCert = false,
is2020MachineLearningPyCert = false
isSciCompPyCertV7 = false,
isDataAnalysisPyCertV7 = false,
isMachineLearningPyCertV7 = false
} = user;
return {
@ -277,15 +274,15 @@ function getUserIsCertMap(user) {
is2018DataVisCert,
isApisMicroservicesCert,
isInfosecQaCert,
is2020QaCert,
is2020InfosecCert,
isQaCertV7,
isInfosecCertV7,
isFrontEndCert,
isBackEndCert,
isDataVisCert,
isFullStackCert,
is2020SciCompPyCert,
is2020DataAnalysisPyCert,
is2020MachineLearningPyCert
isSciCompPyCertV7,
isDataAnalysisPyCertV7,
isMachineLearningPyCertV7
};
}
@ -412,11 +409,11 @@ function createShowCert(app) {
is2018DataVisCert: true,
isApisMicroservicesCert: true,
isInfosecQaCert: true,
is2020QaCert: true,
is2020InfosecCert: true,
is2020SciCompPyCert: true,
is2020DataAnalysisPyCert: true,
is2020MachineLearningPyCert: true,
isQaCertV7: true,
isInfosecCertV7: true,
isSciCompPyCertV7: true,
isDataAnalysisPyCertV7: true,
isMachineLearningPyCertV7: true,
isHonest: true,
username: true,
name: true,

View File

@ -162,16 +162,16 @@ function postResetProgress(req, res, next) {
isJsAlgoDataStructCert: false,
isApisMicroservicesCert: false,
isInfosecQaCert: false,
is2020QaCert: false,
is2020InfosecCert: false,
isQaCertV7: false,
isInfosecCertV7: false,
is2018FullStackCert: false,
isFrontEndCert: false,
isBackEndCert: false,
isDataVisCert: false,
isFullStackCert: false,
is2020SciCompPyCert: false,
is2020DataAnalysisPyCert: false,
is2020MachineLearningPyCert: false,
isSciCompPyCertV7: false,
isDataAnalysisPyCertV7: false,
isMachineLearningPyCertV7: false,
completedChallenges: []
},
function(err) {

View File

@ -8,10 +8,10 @@
"jsAlgoDataStruct": "isJsAlgoDataStructCert",
"apisMicroservices": "isApisMicroservicesCert",
"infosecQa": "isInfosecQaCert",
"qa2020": "is2020QaCert",
"infosec2020": "is2020InfosecCert",
"sciCompPy2020": "is2020SciCompPyCert",
"dataAnalysisPy2020": "is2020DataAnalysisPyCert",
"machineLearningPy2020": "is2020MachineLearningPyCert",
"qaV7": "isQaCertV7",
"infosecV7": "isInfosecCertV7",
"sciCompPyV7": "isSciCompPyCertV7",
"dataAnalysisPyV7": "isDataAnalysisPyCertV7",
"machineLearningPyV7": "isMachineLearningPyCertV7",
"fullStack": "isFullStackCert"
}

View File

@ -18,11 +18,11 @@ export function completeCommitment$(user) {
isDataVisCert,
isApisMicroservicesCert,
isInfosecQaCert,
is2020QaCert,
is2020InfosecCert,
is2020SciCompPyCert,
is2020DataAnalysisPyCert,
is2020MachineLearningPyCert
isQaCertV7,
isInfosecCertV7,
isSciCompPyCertV7,
isDataAnalysisPyCertV7,
isMachineLearningPyCertV7
} = user;
return Observable.fromNodeCallback(user.pledge, user)().flatMap(pledge => {
@ -42,12 +42,11 @@ export function completeCommitment$(user) {
(isDataVisCert && goal === commitGoals.dataVisCert) ||
(isApisMicroservicesCert && goal === commitGoals.apisMicroservicesCert) ||
(isInfosecQaCert && goal === commitGoals.infosecQaCert) ||
(is2020QaCert && goal === commitGoals.QaCert) ||
(is2020InfosecCert && goal === commitGoals.infosecCert) ||
(is2020SciCompPyCert && goal === commitGoals.sciCompPyCert) ||
(is2020DataAnalysisPyCert && goal === commitGoals.dataAnalysisPyCert) ||
(is2020MachineLearningPyCert &&
goal === commitGoals.machineLearningPyCert)
(isQaCertV7 && goal === commitGoals.QaCert) ||
(isInfosecCertV7 && goal === commitGoals.infosecCert) ||
(isSciCompPyCertV7 && goal === commitGoals.sciCompPyCert) ||
(isDataAnalysisPyCertV7 && goal === commitGoals.dataAnalysisPyCert) ||
(isMachineLearningPyCertV7 && goal === commitGoals.machineLearningPyCert)
) {
debug('marking goal complete');
pledge.isCompleted = true;

View File

@ -12,9 +12,9 @@
"dataVis2018Id": "5a553ca864b52e1d8bceea14",
"jsAlgoDataStructId": "561abd10cb81ac38a17513bc",
"apisMicroservicesId": "561add10cb82ac38a17523bc",
"qa2020Id": "5e611829481575a52dc59c0e",
"infosec2020Id": "5e6021435ac9d0ecd8b94b00",
"sciCompPy2020Id": "5e44431b903586ffb414c951",
"dataAnalysisPy2020Id": "5e46fc95ac417301a38fb934",
"machineLearningPy2020Id": "5e46fc95ac417301a38fb935"
"qaV7Id": "5e611829481575a52dc59c0e",
"infosecV7Id": "5e6021435ac9d0ecd8b94b00",
"sciCompPyV7Id": "5e44431b903586ffb414c951",
"dataAnalysisPyV7Id": "5e46fc95ac417301a38fb934",
"machineLearningPyV7Id": "5e46fc95ac417301a38fb935"
}

View File

@ -3,13 +3,13 @@ function getCompletedCertCount(user) {
'isApisMicroservicesCert',
'is2018DataVisCert',
'isFrontEndLibsCert',
'is2020QaCert',
'is2020InfosecCert',
'isQaCertV7',
'isInfosecCertV7',
'isJsAlgoDataStructCert',
'isRespWebDesignCert',
'is2020SciCompPyCert',
'is2020DataAnalysisPyCert',
'is2020MachineLearningPyCert'
'isSciCompPyCertV7',
'isDataAnalysisPyCertV7',
'isMachineLearningPyCertV7'
].reduce((sum, key) => (user[key] ? sum + 1 : sum), 0);
}

View File

@ -23,13 +23,13 @@ export const publicUserProps = [
'isFrontEndLibsCert',
'isHonest',
'isInfosecQaCert',
'is2020QaCert',
'is2020InfosecCert',
'isQaCertV7',
'isInfosecCertV7',
'isJsAlgoDataStructCert',
'isRespWebDesignCert',
'is2020SciCompPyCert',
'is2020DataAnalysisPyCert',
'is2020MachineLearningPyCert',
'isSciCompPyCertV7',
'isDataAnalysisPyCertV7',
'isMachineLearningPyCertV7',
'linkedin',
'location',
'name',

View File

@ -16,11 +16,11 @@ const superBlockCertTypeMap = {
'front-end-libraries': certTypes.frontEndLibs,
'data-visualization': certTypes.dataVis2018,
'apis-and-microservices': certTypes.apisMicroservices,
'2020-quality-assurance': certTypes.qa2020,
'2020-information-security': certTypes.infosec2020,
'2020-scientific-computing-with-python': certTypes.sciCompPy2020,
'2020-data-analysis-with-python': certTypes.dataAnalysisPy2020,
'2020-machine-learning-with-python': certTypes.machineLearningPy2020
'quality-assurance-v7': certTypes.qaV7,
'information-security-v7': certTypes.infosecV7,
'scientific-computing-with-python-v7': certTypes.sciCompPyV7,
'data-analysis-with-python-v7': certTypes.dataAnalysisPyV7,
'machine-learning-with-python-v7': certTypes.machineLearningPyV7
};
export default superBlockCertTypeMap;

View File

@ -142,13 +142,13 @@ function getCompletedCertCount(user) {
'isApisMicroservicesCert',
'is2018DataVisCert',
'isFrontEndLibsCert',
'is2020QaCert',
'is2020InfosecCert',
'isQaCertV7',
'isInfosecCertV7',
'isJsAlgoDataStructCert',
'isRespWebDesignCert',
'is2020SciCompPyCert',
'is2020DataAnalysisPyCert',
'is2020MachineLearningPyCert'
'isSciCompPyCertV7',
'isDataAnalysisPyCertV7',
'isMachineLearningPyCertV7'
].reduce((sum, key) => (user[key] ? sum + 1 : sum), 0);
}

View File

@ -60,13 +60,13 @@ const propTypes = {
isFullStackCert: PropTypes.bool,
isHonest: PropTypes.bool,
isInfosecQaCert: PropTypes.bool,
is2020QaCert: PropTypes.bool,
is2020InfosecCert: PropTypes.bool,
isQaCertV7: PropTypes.bool,
isInfosecCertV7: PropTypes.bool,
isJsAlgoDataStructCert: PropTypes.bool,
isRespWebDesignCert: PropTypes.bool,
is2020SciCompPyCert: PropTypes.bool,
is2020DataAnalysisPyCert: PropTypes.bool,
is2020MachineLearningPyCert: PropTypes.bool,
isSciCompPyCertV7: PropTypes.bool,
isDataAnalysisPyCertV7: PropTypes.bool,
isMachineLearningPyCertV7: PropTypes.bool,
linkedin: PropTypes.string,
location: PropTypes.string,
name: PropTypes.string,
@ -134,14 +134,14 @@ export function ShowSettings(props) {
isDataVisCert,
isFrontEndCert,
isInfosecQaCert,
is2020QaCert,
is2020InfosecCert,
isQaCertV7,
isInfosecCertV7,
isFrontEndLibsCert,
isFullStackCert,
isRespWebDesignCert,
is2020SciCompPyCert,
is2020DataAnalysisPyCert,
is2020MachineLearningPyCert,
isSciCompPyCertV7,
isDataAnalysisPyCertV7,
isMachineLearningPyCertV7,
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}
isDataAnalysisPyCertV7={isDataAnalysisPyCertV7}
isDataVisCert={isDataVisCert}
isFrontEndCert={isFrontEndCert}
isFrontEndLibsCert={isFrontEndLibsCert}
isFullStackCert={isFullStackCert}
isHonest={isHonest}
isInfosecCertV7={isInfosecCertV7}
isInfosecQaCert={isInfosecQaCert}
isJsAlgoDataStructCert={isJsAlgoDataStructCert}
isMachineLearningPyCertV7={isMachineLearningPyCertV7}
isQaCertV7={isQaCertV7}
isRespWebDesignCert={isRespWebDesignCert}
isSciCompPyCertV7={isSciCompPyCertV7}
username={username}
verifyCert={verifyCert}
/>

View File

@ -45,21 +45,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,
isDataAnalysisPyCertV7: PropTypes.bool,
isDataVisCert: PropTypes.bool,
isFrontEndCert: PropTypes.bool,
isFrontEndLibsCert: PropTypes.bool,
isFullStackCert: PropTypes.bool,
isHonest: PropTypes.bool,
isInfosecCertV7: PropTypes.bool,
isInfosecQaCert: PropTypes.bool,
isJsAlgoDataStructCert: PropTypes.bool,
isMachineLearningPyCertV7: PropTypes.bool,
isQaCertV7: PropTypes.bool,
isRespWebDesignCert: PropTypes.bool,
isSciCompPyCertV7: PropTypes.bool,
updateLegacyCert: PropTypes.func.isRequired,
username: PropTypes.string,
verifyCert: PropTypes.func.isRequired
@ -75,14 +75,14 @@ const isCertSelector = ({
isDataVisCert,
isFrontEndCert,
isInfosecQaCert,
is2020QaCert,
is2020InfosecCert,
isQaCertV7,
isInfosecCertV7,
isFrontEndLibsCert,
isFullStackCert,
isRespWebDesignCert,
is2020SciCompPyCert,
is2020DataAnalysisPyCert,
is2020MachineLearningPyCert
isSciCompPyCertV7,
isDataAnalysisPyCertV7,
isMachineLearningPyCertV7
}) => ({
is2018DataVisCert,
isApisMicroservicesCert,
@ -91,14 +91,14 @@ const isCertSelector = ({
isDataVisCert,
isFrontEndCert,
isInfosecQaCert,
is2020QaCert,
is2020InfosecCert,
isQaCertV7,
isInfosecCertV7,
isFrontEndLibsCert,
isFullStackCert,
isRespWebDesignCert,
is2020SciCompPyCert,
is2020DataAnalysisPyCert,
is2020MachineLearningPyCert
isSciCompPyCertV7,
isDataAnalysisPyCertV7,
isMachineLearningPyCertV7
});
const isCertMapSelector = createSelector(
@ -108,27 +108,27 @@ const isCertMapSelector = createSelector(
isApisMicroservicesCert,
isJsAlgoDataStructCert,
isInfosecQaCert,
is2020QaCert,
is2020InfosecCert,
isQaCertV7,
isInfosecCertV7,
isFrontEndLibsCert,
isRespWebDesignCert,
isDataVisCert,
isFrontEndCert,
isBackEndCert,
is2020SciCompPyCert,
is2020DataAnalysisPyCert,
is2020MachineLearningPyCert
isSciCompPyCertV7,
isDataAnalysisPyCertV7,
isMachineLearningPyCertV7
}) => ({
'Responsive Web Design': isRespWebDesignCert,
'JavaScript Algorithms and Data Structures': isJsAlgoDataStructCert,
'Front End Libraries': isFrontEndLibsCert,
'Data Visualization': is2018DataVisCert,
'APIs and Microservices': isApisMicroservicesCert,
'Quality Assurance': is2020QaCert,
'Information Security': is2020InfosecCert,
'Scientific Computing with Python': is2020SciCompPyCert,
'Data Analysis with Python': is2020DataAnalysisPyCert,
'Machine Learning with Python': is2020MachineLearningPyCert,
'Quality Assurance': isQaCertV7,
'Information Security': isInfosecCertV7,
'Scientific Computing with Python': isSciCompPyCertV7,
'Data Analysis with Python': isDataAnalysisPyCertV7,
'Machine Learning with Python': isMachineLearningPyCertV7,
'Legacy Front End': isFrontEndCert,
'Legacy Data Visualization': isDataVisCert,
'Legacy Back End': isBackEndCert,

View File

@ -189,13 +189,13 @@ const defaultTestProps = {
isFullStackCert: false,
isHonest: false,
isInfosecQaCert: false,
is2020QaCert: false,
is2020InfosecCert: false,
isQaCertV7: false,
isInfosecCertV7: false,
isJsAlgoDataStructCert: false,
isRespWebDesignCert: false,
is2020SciCompPyCert: false,
is2020DataAnalysisPyCert: false,
is2020MachineLearningPyCert: false,
isSciCompPyCertV7: false,
isDataAnalysisPyCertV7: false,
isMachineLearningPyCertV7: false,
updateLegacyCert: () => {},
username: 'developmentuser',
verifyCert: () => {},

View File

@ -213,15 +213,15 @@ export const certificatesByNameSelector = username => state => {
isJsAlgoDataStructCert,
isApisMicroservicesCert,
isInfosecQaCert,
is2020QaCert,
is2020InfosecCert,
isQaCertV7,
isInfosecCertV7,
isFrontEndCert,
isBackEndCert,
isDataVisCert,
isFullStackCert,
is2020SciCompPyCert,
is2020DataAnalysisPyCert,
is2020MachineLearningPyCert
isSciCompPyCertV7,
isDataAnalysisPyCertV7,
isMachineLearningPyCertV7
} = userByNameSelector(username)(state);
return {
hasModernCert:
@ -230,12 +230,12 @@ export const certificatesByNameSelector = username => state => {
isFrontEndLibsCert ||
isJsAlgoDataStructCert ||
isApisMicroservicesCert ||
is2020QaCert ||
is2020InfosecCert ||
isQaCertV7 ||
isInfosecCertV7 ||
isFullStackCert ||
is2020SciCompPyCert ||
is2020DataAnalysisPyCert ||
is2020MachineLearningPyCert,
isSciCompPyCertV7 ||
isDataAnalysisPyCertV7 ||
isMachineLearningPyCertV7,
hasLegacyCert:
isFrontEndCert || isBackEndCert || isDataVisCert || isInfosecQaCert,
isFullStackCert,
@ -266,29 +266,29 @@ export const certificatesByNameSelector = username => state => {
showURL: 'apis-and-microservices'
},
{
show: is2020QaCert,
show: isQaCertV7,
title: ' Quality Assurance Certification',
showURL: '2020-quality-assurance'
showURL: 'quality-assurance-v7'
},
{
show: is2020InfosecCert,
show: isInfosecCertV7,
title: 'Information Security Certification',
showURL: '2020-information-security'
showURL: 'information-security-v7'
},
{
show: is2020SciCompPyCert,
show: isSciCompPyCertV7,
title: 'Scientific Computing with Python Certification',
showURL: '2020-scientific-computing-with-python'
showURL: 'scientific-computing-with-python-v7'
},
{
show: is2020DataAnalysisPyCert,
show: isDataAnalysisPyCertV7,
title: 'Data Analysis with Python Certification',
showURL: '2020-data-analysis-with-python'
showURL: 'data-analysis-with-python-v7'
},
{
show: is2020MachineLearningPyCert,
show: isMachineLearningPyCertV7,
title: 'Machine Learning with Python Certification',
showURL: '2020-machine-learning-with-python'
showURL: 'machine-learning-with-python-v7'
}
],
legacyCerts: [

View File

@ -469,190 +469,190 @@ const certMap = [
{
id: '5e611829481575a52dc59c0e',
title: 'Quality Assurance',
slug: '2020-quality-assurance',
flag: 'is2020QaCert',
slug: 'quality-assurance-v7',
flag: 'isQaCertV7',
projects: [
{
id: '587d8249367417b2b2512c41',
title: 'Metric-Imperial Converter',
link: `${qaBase}/metric-imperial-converter`,
superBlock: '2020-quality-assurance'
superBlock: 'quality-assurance-v7'
},
{
id: '587d8249367417b2b2512c42',
title: 'Issue Tracker',
link: `${qaBase}/issue-tracker`,
superBlock: '2020-quality-assurance'
superBlock: 'quality-assurance-v7'
},
{
id: '587d824a367417b2b2512c43',
title: 'Personal Library',
link: `${qaBase}/personal-library`,
superBlock: '2020-quality-assurance'
superBlock: 'quality-assurance-v7'
},
{
id: '5e601bf95ac9d0ecd8b94afd',
title: 'Sudoku Solver',
link: `${qaBase}/sudoku-solver`,
superBlock: '2020-quality-assurance'
superBlock: 'quality-assurance-v7'
},
{
id: '5e601c0d5ac9d0ecd8b94afe',
title: 'American British Translator',
link: `${qaBase}/american-british-translator`,
superBlock: '2020-quality-assurance'
superBlock: 'quality-assurance-v7'
}
]
},
{
id: '5e6021435ac9d0ecd8b94b00',
title: 'Information Security',
slug: '2020-information-security',
flag: 'is2020InfosecCert',
slug: 'information-security-v7',
flag: 'isInfosecCertV7',
projects: [
{
id: '587d824a367417b2b2512c44',
title: 'Stock Price Checker',
link: `${infoSecBase}/stock-price-checker`,
superBlock: '2020-information-security'
superBlock: 'information-security-v7'
},
{
id: '587d824a367417b2b2512c45',
title: 'Anonymous Message Board',
link: `${infoSecBase}/anonymous-message-board`,
superBlock: '2020-information-security'
superBlock: 'information-security-v7'
},
{
id: '5e46f979ac417301a38fb932',
title: 'Port Scanner',
link: `${infoSecBase}/port-scanner`,
superBlock: '2020-information-security'
superBlock: 'information-security-v7'
},
{
id: '5e46f983ac417301a38fb933',
title: 'SHA-1 Password Cracker',
link: `${infoSecBase}/sha-1-password-cracker`,
superBlock: '2020-information-security'
superBlock: 'information-security-v7'
},
{
id: '5e601c775ac9d0ecd8b94aff',
title: 'Secure Real Time Multiplayer Game',
link: `${infoSecBase}/secure-real-time-multiplayer-game`,
superBlock: '2020-information-security'
superBlock: 'information-security-v7'
}
]
},
{
id: '5e44431b903586ffb414c951',
title: 'Scientific Computing with Python',
slug: '2020-scientific-computing-with-python',
flag: 'is2020SciCompPyCert',
slug: 'scientific-computing-with-python-v7',
flag: 'isSciCompPyCertV7',
projects: [
{
id: '5e44412c903586ffb414c94c',
title: 'Arithmetic Formatter',
link: `${sciCompPyBase}/arithmetic-formatter`,
superBlock: '2020-scientific-computing-with-python'
superBlock: 'scientific-computing-with-python-v7'
},
{
id: '5e444136903586ffb414c94d',
title: 'Time Calculator',
link: `${sciCompPyBase}/time-calculator`,
superBlock: '2020-scientific-computing-with-python'
superBlock: 'scientific-computing-with-python-v7'
},
{
id: '5e44413e903586ffb414c94e',
title: 'Budget App',
link: `${sciCompPyBase}/budget-app`,
superBlock: '2020-scientific-computing-with-python'
superBlock: 'scientific-computing-with-python-v7'
},
{
id: '5e444147903586ffb414c94f',
title: 'Polygon Area Calculator',
link: `${sciCompPyBase}/polygon-area-calculator`,
superBlock: '2020-scientific-computing-with-python'
superBlock: 'scientific-computing-with-python-v7'
},
{
id: '5e44414f903586ffb414c950',
title: 'Probability Calculator',
link: `${sciCompPyBase}/probability-calculator`,
superBlock: '2020-scientific-computing-with-python'
superBlock: 'scientific-computing-with-python-v7'
}
]
},
{
id: '5e46fc95ac417301a38fb934',
title: 'Data Analysis with Python',
slug: '2020-data-analysis-with-python',
flag: 'is2020DataAnalysisPyCert',
slug: 'data-analysis-with-python-v7',
flag: 'isDataAnalysisPyCertV7',
projects: [
{
id: '5e46f7e5ac417301a38fb928',
title: 'Mean-Variance-Standard Deviation Calculator',
link: `${dataAnalysisPyBase}/mean-variance-standard-deviation-calculator`,
superBlock: '2020-data-analysis-with-python'
superBlock: 'data-analysis-with-python-v7'
},
{
id: '5e46f7e5ac417301a38fb929',
title: 'Demographic Data Analyzer',
link: `${dataAnalysisPyBase}/demographic-data-analyzer`,
superBlock: '2020-data-analysis-with-python'
superBlock: 'data-analysis-with-python-v7'
},
{
id: '5e46f7f8ac417301a38fb92a',
title: 'Medical Data Visualizer',
link: `${dataAnalysisPyBase}/medical-data-visualizer`,
superBlock: '2020-data-analysis-with-python'
superBlock: 'data-analysis-with-python-v7'
},
{
id: '5e46f802ac417301a38fb92b',
title: 'Page View Time Series Visualizer',
link: `${dataAnalysisPyBase}/page-view-time-series-visualizer`,
superBlock: '2020-data-analysis-with-python'
superBlock: 'data-analysis-with-python-v7'
},
{
id: '5e4f5c4b570f7e3a4949899f',
title: 'Sea Level Predictor',
link: `${dataAnalysisPyBase}/sea-level-predictor`,
superBlock: '2020-scientific-computing-with-python'
superBlock: 'data-analysis-with-python-v7'
}
]
},
{
id: '5e46fc95ac417301a38fb935',
title: 'Machine Learning with Python',
slug: '2020-machine-learning-with-python',
flag: 'is2020MachineLearningPyCert',
slug: 'machine-learning-with-python-v7',
flag: 'isMachineLearningPyCertV7',
projects: [
{
id: '5e46f8d6ac417301a38fb92d',
title: 'Rock Paper Scissors',
link: `${machineLearningPyBase}/rock-paper-scissors`,
superBlock: '2020-machine-learning-with-python'
superBlock: 'machine-learning-with-python-v7'
},
{
id: '5e46f8dcac417301a38fb92e',
title: 'Cat and Dog Image Classifier',
link: `${machineLearningPyBase}/cat-and-dog-image-classifier`,
superBlock: '2020-machine-learning-with-python'
superBlock: 'machine-learning-with-python-v7'
},
{
id: '5e46f8e3ac417301a38fb92f',
title: 'Book Recommendation Engine using KNN',
link: `${machineLearningPyBase}/book-recommendation-engine-using-knn`,
superBlock: '2020-machine-learning-with-python'
superBlock: 'machine-learning-with-python-v7'
},
{
id: '5e46f8edac417301a38fb930',
title: 'Linear Regression Health Costs Calculator',
link: `${machineLearningPyBase}/linear-regression-health-costs-calculator`,
superBlock: '2020-machine-learning-with-python'
superBlock: 'machine-learning-with-python-v7'
},
{
id: '5e46f8edac417301a38fb931',
title: 'Neural Network SMS Text Classifier',
link: `${machineLearningPyBase}/neural-network-sms-text-classifier`,
superBlock: '2020-machine-learning-with-python'
superBlock: 'machine-learning-with-python-v7'
}
]
}

View File

@ -1,6 +1,6 @@
{
"name": "Data Analysis with Python Certificate",
"dashedName": "2020-data-analysis-with-python-certificate",
"dashedName": "data-analysis-with-python-v7-certificate",
"order": 8,
"time": "",
"template": "",
@ -14,5 +14,5 @@
]
],
"isPrivate": true,
"fileName": "12-certificates/2020-data-analysis-with-python-certificate.json"
"fileName": "12-certificates/data-analysis-with-python-v7-certificate.json"
}

View File

@ -1,6 +1,6 @@
{
"name": "Information Security Certificate",
"dashedName": "2020-information-security-certificate",
"dashedName": "information-security-v7-certificate",
"order": 9,
"time": "",
"template": "",
@ -14,5 +14,5 @@
]
],
"isPrivate": true,
"fileName": "12-certificates/2020-information-security-certificate.json"
"fileName": "12-certificates/information-security-v7-certificate.json"
}

View File

@ -1,6 +1,6 @@
{
"name": "Machine Learning with Python Certificate",
"dashedName": "2020-machine-learning-with-python-certificate",
"dashedName": "machine-learning-with-python-v7-certificate",
"order": 10,
"time": "",
"template": "",
@ -14,5 +14,5 @@
]
],
"isPrivate": true,
"fileName": "12-certificates/2020-machine-learning-with-python-certificate.json"
"fileName": "12-certificates/machine-learning-with-python-v7-certificate.json"
}

View File

@ -1,6 +1,6 @@
{
"name": "Quality Assurance Certificate",
"dashedName": "2020-quality-assurance-certificate",
"dashedName": "quality-assurance-v7-certificate",
"order": 6,
"time": "",
"template": "",
@ -14,5 +14,5 @@
]
],
"isPrivate": true,
"fileName": "12-certificates/2020-quality-assurance-certificate.json"
"fileName": "12-certificates/quality-assurance-v7-certificate.json"
}

View File

@ -1,6 +1,6 @@
{
"name": "Scientific Computing with Python Certificate",
"dashedName": "2020-scientific-computing-with-python-certificate",
"dashedName": "scientific-computing-with-python-v7-certificate",
"order": 7,
"time": "",
"template": "",
@ -14,5 +14,5 @@
]
],
"isPrivate": true,
"fileName": "12-certificates/2020-scientific-computing-with-python-certificate.json"
"fileName": "12-certificates/scientific-computing-with-python-v7-certificate.json"
}

View File

@ -1,6 +1,6 @@
---
id: 5e6021435ac9d0ecd8b94b00
title: 'Information Security Certificate'
title: Information Security Certificate
challengeType: 7
isHidden: true
isPrivate: true

View File

@ -1,6 +1,6 @@
---
id: 5e611829481575a52dc59c0e
title: 'Quality Assurance Certificate'
title: Quality Assurance Certificate
challengeType: 7
isHidden: true
isPrivate: true

View File

@ -63,12 +63,12 @@ MongoClient.connect(MONGOHQ_URL, { useNewUrlParser: true }, function(
isJsAlgoDataStructCert: false,
isApisMicroservicesCert: false,
isInfosecQaCert: false,
is2020QaCert: false,
is2020InfosecCert: false,
isQaCertV7: false,
isInfosecCertV7: false,
is2018FullStackCert: false,
is2020SciCompPyCert: false,
is2020DataAnalysisPyCert: false,
is2020MachineLearningPyCert: false,
isSciCompPyCertV7: false,
isDataAnalysisPyCertV7: false,
isMachineLearningPyCertV7: false,
completedChallenges: [],
portfolio: [],
yearsTopContributor: [],

View File

@ -29,11 +29,11 @@ const specialPaths = {
'Legacy Full Stack': 'Full Stack',
'Legacy Information Security and Quality Assurance':
'Information Security and Quality Assurance',
'Scientific Computing with Python': '2020 Scientific Computing with Python',
'Data Analysis with Python': '2020 Data Analysis with Python',
'Machine Learning with Python': '2020 Machine Learning with Python',
'Quality Assurance': '2020 Quality Assurance',
'Information Security': '2020 Information Security'
'Scientific Computing with Python': 'Scientific Computing with Python V7',
'Data Analysis with Python': 'Data Analysis with Python V7',
'Machine Learning with Python': 'Machine Learning with Python V7',
'Quality Assurance': 'Quality Assurance V7',
'Information Security': 'Information Security V7'
};
for (const [id, title] of idToTitle) {