def import_skills()

in microservices/skill_service/src/services/ingest_osn.py [0:0]


def import_skills(osn_json_array):
  """extracts and saves the skills as per skill fireo model"""
  inserted_skills = []
  for osn_skill in osn_json_array:
    skill_id = osn_skill.get("Canonical URL", "").split("/")[-1]
    aligned_id = osn_skill.get("Alignment URL", "").split("/")[-1]

    occ_major_group = osn_skill.get("Occupation Major Groups").split(";")
    if len(occ_major_group) == 1 and occ_major_group[0] == "":
      occ_major_group = []
    occ_major_group = [i.strip() for i in occ_major_group]

    occ_minor_group = osn_skill.get("Occupation Minor Groups").split(";")
    if len(occ_minor_group) == 1 and occ_minor_group[0] == "":
      occ_minor_group = []
    occ_minor_group = [i.strip() for i in occ_minor_group]

    broad_occupation = osn_skill.get("Broad Occupations").split(";")
    if len(broad_occupation) == 1 and broad_occupation[0] == "":
      broad_occupation = []
    broad_occupation = [i.strip() for i in broad_occupation]

    detailed_occupation = osn_skill.get("Detailed Occupations").split(";")
    if len(detailed_occupation) == 1 and detailed_occupation[0] == "":
      detailed_occupation = []
    detailed_occupation = [i.strip() for i in detailed_occupation]

    keywords = osn_skill.get("Keywords").split(";")
    if len(keywords) == 1 and keywords[0] == "":
      keywords = []
    keywords = [i.strip() for i in keywords]

    certifications = osn_skill.get("Certifications").split(";")
    if len(certifications) == 1 and certifications[0] == "":
      certifications = []
    certifications = [i.strip() for i in certifications]

    skill = {
        "name": osn_skill.get("RSD Name"),
        "description": osn_skill.get("Skill Statement"),
        "parent_nodes": {"competencies": []},
        "reference_id": skill_id,
        "keywords": keywords,
        "occupations": {
            "occupations_major_group": occ_major_group,
            "occupations_minor_group": occ_minor_group,
            "broad_occupation": broad_occupation,
            "detailed_occupation": detailed_occupation
        },
        "onet_job": osn_skill.get("O*Net Job Codes"),
        "alignments": {
            "standard_alignment": {},
           "credential_alignment": {},
            "skill_alignment": {
                "emsi": {
                    "aligned": [{
                        "id": aligned_id,
                        "name": osn_skill.get("Alignment Name"),
                        "score": 1.0
                    }],
                    "suggested": []
                }
            },
            "knowledge_alignment": {},
            "role_alignment": {},
            "organizational_alignment": {}
        },
        "author": osn_skill.get("Author"),
        "creator": "",
        "organizations": [],
        "certifications": certifications,
        "type": {
            "id": "",
            "name": ""
        },
        "source_uri": osn_skill.get("Canonical URL"),
        "source_name": "osn"
    }
    inserted_skills.append(skill)
  async_inserts = AsyncInserts()
  async_inserts.insert_data(inserted_skills, "skill")
  inserted_skills_length = async_inserts.get_inserted_skills_count()
  return inserted_skills_length