def getImprovementPlanHTMLDescription()

in static/watool/utilities/Code/exportAnswersToXLSX.py [0:0]


def getImprovementPlanHTMLDescription(
    ImprovementPlanUrl,
    PillarId
    ):

    logger.debug("ImprovementPlanUrl: %s for pillar %s " % (ImprovementPlanUrl,PILLAR_PARSE_MAP[PillarId]))
    stepRaw = ImprovementPlanUrl.rsplit('#')[1]

    # Grab the number of the step we are referencing
    # This will work as long as their are less than 99 steps.
    if len(stepRaw) <= 5:
        stepNumber = stepRaw[-1]
    else:
        stepNumber = stepRaw[-2]

    #Generate the string for the step number
    firstItem = "step"+stepNumber
    secondItem = ("step"+str((int(stepNumber)+1)))
    logger.debug ("Going from %s to %s" % (firstItem, secondItem))
    urlresponse = urllib.request.urlopen(ImprovementPlanUrl)
    htmlBytes = urlresponse.read()
    htmlStr = htmlBytes.decode("utf8")
    htmlSplit = htmlStr.split('\n')

    foundit = 0
    ipString = ""
    questionIdText = ""
    for i in htmlSplit:
        if PILLAR_PARSE_MAP[PillarId] in i:
            bsparse = BeautifulSoup(i,features="html.parser")
            questionIdText = str(bsparse.text).split(':')[0].strip()
        if (secondItem in i) or ("</div>" in i):
            foundit = 0
        if firstItem in i:
            foundit = 1
            ipString+=i
        elif foundit:
            ipString+=i

    prettyHTML = BeautifulSoup(ipString,features="html.parser")
    # Need to remove all of the "local glossary links" since they point to relative paths
    for a in prettyHTML.findAll('a', 'glossref'):
        a.replaceWithChildren()

    return prettyHTML, questionIdText