feat(learn): python certification projects (#38216)
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com> Co-authored-by: Kristofer Koishigawa <scissorsneedfoodtoo@gmail.com> Co-authored-by: Beau Carnes <beaucarnes@gmail.com>
This commit is contained in:
committed by
Mrugesh Mohapatra
parent
3c3ceaa3f5
commit
22afc2a0ca
@ -19,7 +19,10 @@ import {
|
||||
dataVis2018Id,
|
||||
apisMicroservicesId,
|
||||
infosecQaId,
|
||||
fullStackId
|
||||
fullStackId,
|
||||
sciCompPyId,
|
||||
dataAnalysisPyId,
|
||||
machineLearningPyId
|
||||
} from '../utils/constantStrings.json';
|
||||
import { oldDataVizId } from '../../../config/misc';
|
||||
import certTypes from '../utils/certTypes.json';
|
||||
@ -104,7 +107,13 @@ function createCertTypeIds(app) {
|
||||
Challenge
|
||||
),
|
||||
[certTypes.infosecQa]: getIdsForCert$(infosecQaId, Challenge),
|
||||
[certTypes.fullStack]: getIdsForCert$(fullStackId, Challenge)
|
||||
[certTypes.fullStack]: getIdsForCert$(fullStackId, Challenge),
|
||||
[certTypes.sciCompPy]: getIdsForCert$(sciCompPyId, Challenge),
|
||||
[certTypes.dataAnalysisPy]: getIdsForCert$(dataAnalysisPyId, Challenge),
|
||||
[certTypes.machineLearningPy]: getIdsForCert$(
|
||||
machineLearningPyId,
|
||||
Challenge
|
||||
)
|
||||
};
|
||||
}
|
||||
|
||||
@ -124,7 +133,10 @@ const certIds = {
|
||||
[certTypes.dataVis2018]: dataVis2018Id,
|
||||
[certTypes.apisMicroservices]: apisMicroservicesId,
|
||||
[certTypes.infosecQa]: infosecQaId,
|
||||
[certTypes.fullStack]: fullStackId
|
||||
[certTypes.fullStack]: fullStackId,
|
||||
[certTypes.sciCompPy]: sciCompPyId,
|
||||
[certTypes.dataAnalysisPy]: dataAnalysisPyId,
|
||||
[certTypes.machineLearningPy]: machineLearningPyId
|
||||
};
|
||||
|
||||
const certText = {
|
||||
@ -137,7 +149,10 @@ const certText = {
|
||||
[certTypes.jsAlgoDataStruct]: 'JavaScript Algorithms and Data Structures',
|
||||
[certTypes.dataVis2018]: 'Data Visualization',
|
||||
[certTypes.apisMicroservices]: 'APIs and Microservices',
|
||||
[certTypes.infosecQa]: 'Information Security and Quality Assurance'
|
||||
[certTypes.infosecQa]: 'Information Security and Quality Assurance',
|
||||
[certTypes.sciCompPy]: 'Scientific Computing with Python',
|
||||
[certTypes.dataAnalysisPy]: 'Data Analysis with Python',
|
||||
[certTypes.machineLearningPy]: 'Machine Learning with Python'
|
||||
};
|
||||
|
||||
const completionHours = {
|
||||
@ -150,7 +165,10 @@ const completionHours = {
|
||||
[certTypes.jsAlgoDataStruct]: 300,
|
||||
[certTypes.dataVis2018]: 300,
|
||||
[certTypes.apisMicroservices]: 300,
|
||||
[certTypes.infosecQa]: 300
|
||||
[certTypes.infosecQa]: 300,
|
||||
[certTypes.sciCompPy]: 400,
|
||||
[certTypes.dataAnalysisPy]: 400,
|
||||
[certTypes.machineLearningPy]: 400
|
||||
};
|
||||
|
||||
function getIdsForCert$(id, Challenge) {
|
||||
@ -174,7 +192,10 @@ function sendCertifiedEmail(
|
||||
isJsAlgoDataStructCert,
|
||||
isDataVisCert,
|
||||
isApisMicroservicesCert,
|
||||
isInfosecQaCert
|
||||
isInfosecQaCert,
|
||||
isSciCompPyCert,
|
||||
isDataAnalysisPyCert,
|
||||
isMachineLearningPyCert
|
||||
},
|
||||
send$
|
||||
) {
|
||||
@ -185,7 +206,10 @@ function sendCertifiedEmail(
|
||||
!isJsAlgoDataStructCert ||
|
||||
!isDataVisCert ||
|
||||
!isApisMicroservicesCert ||
|
||||
!isInfosecQaCert
|
||||
!isInfosecQaCert ||
|
||||
!isSciCompPyCert ||
|
||||
!isDataAnalysisPyCert ||
|
||||
!isMachineLearningPyCert
|
||||
) {
|
||||
return Observable.just(false);
|
||||
}
|
||||
@ -216,7 +240,10 @@ function getUserIsCertMap(user) {
|
||||
isFrontEndCert = false,
|
||||
isBackEndCert = false,
|
||||
isDataVisCert = false,
|
||||
isFullStackCert = false
|
||||
isFullStackCert = false,
|
||||
isSciCompPyCert = false,
|
||||
isDataAnalysisPyCert = false,
|
||||
isMachineLearningPyCert = false
|
||||
} = user;
|
||||
|
||||
return {
|
||||
@ -229,7 +256,10 @@ function getUserIsCertMap(user) {
|
||||
isFrontEndCert,
|
||||
isBackEndCert,
|
||||
isDataVisCert,
|
||||
isFullStackCert
|
||||
isFullStackCert,
|
||||
isSciCompPyCert,
|
||||
isDataAnalysisPyCert,
|
||||
isMachineLearningPyCert
|
||||
};
|
||||
}
|
||||
|
||||
@ -350,6 +380,9 @@ function createShowCert(app) {
|
||||
is2018DataVisCert: true,
|
||||
isApisMicroservicesCert: true,
|
||||
isInfosecQaCert: true,
|
||||
isSciCompPyCert: true,
|
||||
isDataAnalysisPyCert: true,
|
||||
isMachineLearningPyCert: true,
|
||||
isHonest: true,
|
||||
username: true,
|
||||
name: true,
|
||||
|
@ -167,6 +167,9 @@ function postResetProgress(req, res, next) {
|
||||
isBackEndCert: false,
|
||||
isDataVisCert: false,
|
||||
isFullStackCert: false,
|
||||
isSciCompPyCert: false,
|
||||
isDataAnalysisPyCert: false,
|
||||
isMachineLearningPyCert: false,
|
||||
completedChallenges: []
|
||||
},
|
||||
function(err) {
|
||||
|
@ -8,5 +8,8 @@
|
||||
"jsAlgoDataStruct": "isJsAlgoDataStructCert",
|
||||
"apisMicroservices": "isApisMicroservicesCert",
|
||||
"infosecQa": "isInfosecQaCert",
|
||||
"fullStack": "isFullStackCert"
|
||||
"fullStack": "isFullStackCert",
|
||||
"sciCompPy": "isSciCompPyCert",
|
||||
"dataAnalysisPy": "isDataAnalysisPyCert",
|
||||
"machineLearningPy": "isMachineLearningPyCert"
|
||||
}
|
||||
|
@ -2,10 +2,13 @@
|
||||
"frontEndCert": "Front End Development Certification",
|
||||
"backEndCert": "Back End Development Certification",
|
||||
"fullStackCert": "Full Stack Development Certification",
|
||||
"respWebDesign": "Responsive Web Design Certification",
|
||||
"frontEndLibs": "Front End Libraries Certification",
|
||||
"jsAlgoDataStruct": "JavaScript Algorithms and Data Structures Certification",
|
||||
"dataVis": "Data Visualisation Certification",
|
||||
"apisMicroservices": "APIs and Microservices Certification",
|
||||
"infosecQa": "Information Security and Quality Assurance Certification"
|
||||
"respWebDesignCert": "Responsive Web Design Certification",
|
||||
"frontEndLibsCert": "Front End Libraries Certification",
|
||||
"jsAlgoDataStructCert": "JavaScript Algorithms and Data Structures Certification",
|
||||
"dataVisCert": "Data Visualisation Certification",
|
||||
"apisMicroservicesCert": "APIs and Microservices Certification",
|
||||
"infosecQaCert": "Information Security and Quality Assurance Certification",
|
||||
"sciCompPyCert": "Scientific Computing with Python Certification",
|
||||
"dataAnalysisPyCert": "Data Analysis with Python Certification",
|
||||
"machineLearningPyCert": "Machine Learning with Python Certification"
|
||||
}
|
||||
|
@ -17,7 +17,10 @@ export function completeCommitment$(user) {
|
||||
isJsAlgoDataStructCert,
|
||||
isDataVisCert,
|
||||
isApisMicroservicesCert,
|
||||
isInfosecQaCert
|
||||
isInfosecQaCert,
|
||||
isSciCompPyCert,
|
||||
isDataAnalysisPyCert,
|
||||
isMachineLearningPyCert
|
||||
} = user;
|
||||
|
||||
return Observable.fromNodeCallback(user.pledge, user)().flatMap(pledge => {
|
||||
@ -36,7 +39,10 @@ export function completeCommitment$(user) {
|
||||
(isJsAlgoDataStructCert && goal === commitGoals.jsAlgoDataStructCert) ||
|
||||
(isDataVisCert && goal === commitGoals.dataVisCert) ||
|
||||
(isApisMicroservicesCert && goal === commitGoals.apisMicroservicesCert) ||
|
||||
(isInfosecQaCert && goal === commitGoals.infosecQaCert)
|
||||
(isInfosecQaCert && goal === commitGoals.infosecQaCert) ||
|
||||
(isSciCompPyCert && goal === commitGoals.sciCompPyCert) ||
|
||||
(isDataAnalysisPyCert && goal === commitGoals.dataAnalysisPyCert) ||
|
||||
(isMachineLearningPyCert && goal === commitGoals.machineLearningPyCert)
|
||||
) {
|
||||
debug('marking goal complete');
|
||||
pledge.isCompleted = true;
|
||||
|
@ -11,5 +11,8 @@
|
||||
"jsAlgoDataStructId": "561abd10cb81ac38a17513bc",
|
||||
"apisMicroservicesId": "561add10cb82ac38a17523bc",
|
||||
"infosecQaId": "561add10cb82ac38a17213bc",
|
||||
"fullStackId": "561add10cb82ac38a17213bd"
|
||||
"fullStackId": "561add10cb82ac38a17213bd",
|
||||
"sciCompPyId": "5e44431b903586ffb414c951",
|
||||
"dataAnalysisPyId": "5e46fc95ac417301a38fb934",
|
||||
"machineLearningPyId": "5e46fc95ac417301a38fb935"
|
||||
}
|
||||
|
@ -5,7 +5,10 @@ function getCompletedCertCount(user) {
|
||||
'isFrontEndLibsCert',
|
||||
'isInfosecQaCert',
|
||||
'isJsAlgoDataStructCert',
|
||||
'isRespWebDesignCert'
|
||||
'isRespWebDesignCert',
|
||||
'isSciCompPyCert',
|
||||
'isDataAnalysisPyCert',
|
||||
'isMachineLearningPyCert'
|
||||
].reduce((sum, key) => (user[key] ? sum + 1 : sum), 0);
|
||||
}
|
||||
|
||||
|
@ -25,6 +25,9 @@ export const publicUserProps = [
|
||||
'isInfosecQaCert',
|
||||
'isJsAlgoDataStructCert',
|
||||
'isRespWebDesignCert',
|
||||
'isSciCompPyCert',
|
||||
'isDataAnalysisPyCert',
|
||||
'isMachineLearningPyCert',
|
||||
'linkedin',
|
||||
'location',
|
||||
'name',
|
||||
|
@ -13,7 +13,10 @@ const superBlockCertTypeMap = {
|
||||
'data-visualization': certTypes.dataVis2018,
|
||||
'apis-and-microservices': certTypes.apisMicroservices,
|
||||
'information-security-and-quality-assurance': certTypes.infosecQa,
|
||||
'full-stack': certTypes.fullStack
|
||||
'full-stack': certTypes.fullStack,
|
||||
'scientific-computing-with-python': certTypes.sciCompPy,
|
||||
'data-analysis-with-python': certTypes.dataAnalysisPy,
|
||||
'machine-learning-with-python': certTypes.machineLearningPy
|
||||
};
|
||||
|
||||
export default superBlockCertTypeMap;
|
||||
|
@ -144,7 +144,10 @@ function getCompletedCertCount(user) {
|
||||
'isFrontEndLibsCert',
|
||||
'isInfosecQaCert',
|
||||
'isJsAlgoDataStructCert',
|
||||
'isRespWebDesignCert'
|
||||
'isRespWebDesignCert',
|
||||
'isSciCompPyCert',
|
||||
'isDataAnalysisPyCert',
|
||||
'isMachineLearningPyCert'
|
||||
].reduce((sum, key) => (user[key] ? sum + 1 : sum), 0);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user