def _a_required_diploma(scoring_project: scoring_base.ScoringProject) -> str: diplomas = scoring_project.requirements().diplomas if not diplomas: logging.warning( 'Trying to show required diplomas when there are none.\n%s', str(scoring_project)) return scoring_project.translate_static_string('un diplôme') return scoring_project.translate_static_string( 'un {diplomas} ou équivalent').format(diplomas=diplomas[0].name)
def score_and_explain(self, project: scoring_base.ScoringProject) \ -> scoring_base.ExplainedScore: """Compute a score for the given ScoringProject.""" # This job group has jobs that are too different to consider them as a # small change. if project.details.target_job.job_group.rome_id in _EXCLUDE_JOB_LIST: return scoring_base.NULL_EXPLAINED_SCORE specific_jobs = project.requirements().specific_jobs if not specific_jobs or specific_jobs[ 0].code_ogr == project.details.target_job.code_ogr: return scoring_base.NULL_EXPLAINED_SCORE try: target_job_percentage = next( j.percent_suggested for j in specific_jobs if j.code_ogr == project.details.target_job.code_ogr) except StopIteration: target_job_percentage = 0 has_way_better_job = target_job_percentage + 30 < specific_jobs[ 0].percent_suggested has_better_job = target_job_percentage + 5 < specific_jobs[ 0].percent_suggested is_looking_for_new_job = project.details.kind == project_pb2.REORIENTATION reasons = [] if has_way_better_job: reasons.append( project.translate_static_string( "il y a beaucoup plus d'offres dans des métiers proches")) elif (project.get_search_length_at_creation() > 6 and has_better_job): reasons.append( project.translate_static_string( "il y a plus d'offres dans des métiers proches")) if is_looking_for_new_job: reasons.append( project.translate_static_string( 'vous nous avez dit vouloir vous reconvertir')) if reasons: return scoring_base.ExplainedScore(3, reasons) return scoring_base.ExplainedScore(2, [ project.translate_static_string( "il y a un bon nombre d'offres dans des métiers proches") ])