Exemple #1
0
def assemble_candidate_campaign_stance_html(candidate_campaign_id,
                                            stance_we_are_looking_for,
                                            positions_followed,
                                            positions_not_followed):
    """

    :param all_positions_list_for_candidate_campaign:
    :param stance_we_are_looking_for:
    :param candidate_campaign_id:
    :return:
    """
    #################################
    # Start with positions_followed

    # Assemble some information that is independent of each position
    number_of_positions_followed_total = len(positions_followed)
    popup_box_title_verb = display_stance_we_are_looking_for_title(
        stance_we_are_looking_for, number_of_positions_followed_total)

    candidate_campaign_manager = CandidateCampaignManager()
    results = candidate_campaign_manager.retrieve_candidate_campaign_from_id(
        candidate_campaign_id)
    if results['candidate_campaign_found']:
        candidate_campaign = results['candidate_campaign']
        popup_box_title_candidate_name = candidate_campaign.candidate_name
    else:
        popup_box_title_candidate_name = ""

    popup_box_title = popup_box_title_verb + " " + popup_box_title_candidate_name
    if stance_we_are_looking_for == SUPPORT:
        # This is the class we reference with jquery for opening a div popup to display the supporters
        class_used_to_open_popup = "candidate_campaign_" + candidate_campaign_id + "_supporters"
        # This is the URL that returns the supporters for this candidate
        retrieve_positions_url = "/pos/cand/" + candidate_campaign_id + "/supporters?f=1"  # Only show orgs followed
    elif stance_we_are_looking_for == OPPOSE:
        class_used_to_open_popup = "candidate_campaign_" + candidate_campaign_id + "_opposers"
        retrieve_positions_url = "/pos/cand/" + candidate_campaign_id + "/opposers?f=1"
    elif stance_we_are_looking_for == INFORMATION_ONLY:
        class_used_to_open_popup = "candidate_campaign_" + candidate_campaign_id + "_infoonly"
        retrieve_positions_url = "/pos/cand/" + candidate_campaign_id + "/infoonlylist?f=1"
    elif stance_we_are_looking_for == STILL_DECIDING:
        class_used_to_open_popup = "candidate_campaign_" + candidate_campaign_id + "_deciders"
        retrieve_positions_url = "/pos/cand/" + candidate_campaign_id + "/deciders?f=1"
    else:
        class_used_to_open_popup = ''
        retrieve_positions_url = ''

    # Cycle through these positions and put together a line about who is supporting, opposing, have information
    #  or are still deciding
    positions_followed_stance_html = ""
    is_first = True
    number_of_positions_followed_counter = 0
    only_you = False
    for position in positions_followed:
        if is_first:
            positions_followed_stance_html += ""
        else:
            is_next_to_last = number_of_positions_followed_counter == number_of_positions_followed_total - 1
            positions_followed_stance_html += " and " if is_next_to_last else ", "
        is_first = False

        if position.organization_id > 0:
            organization_manager = OrganizationManager()
            results = organization_manager.retrieve_organization(
                position.organization_id)
            if results['organization_found']:
                organization_on_stage = results['organization']
                link_open = "<a class='{link_class}' href='{link_href}' id='{popup_box_title}'>".format(
                    link_class=class_used_to_open_popup,
                    link_href=retrieve_positions_url,
                    popup_box_title=popup_box_title,
                )
                positions_followed_stance_html += "{link_open}{organization_name}</a>".format(
                    link_open=link_open,
                    organization_name=organization_on_stage.name,
                )
                number_of_positions_followed_counter += 1
        elif position.voter_id > 0:
            positions_followed_stance_html += "You"
            number_of_positions_followed_counter += 1
            if number_of_positions_followed_total == 1:
                only_you = True
    if number_of_positions_followed_total:
        verb_text = display_stance_we_are_looking_for(
            stance_we_are_looking_for, number_of_positions_followed_total,
            only_you)
        if verb_text:
            positions_followed_stance_html = "<span class='positions_followed_text'>" + positions_followed_stance_html
            positions_followed_stance_html += " <span class='position_stance_verb'>{verb_text}</span>".format(
                verb_text=verb_text)
            positions_followed_stance_html += "</span>"

    #################################
    # NOT Followed
    #################################
    # Now create string with html for positions_not_followed
    positions_not_followed_stance_html = ""
    number_of_positions_not_followed_total = len(positions_not_followed)
    # If there aren't any "not followed" positions, just return the positions_followed_stance_html
    if number_of_positions_not_followed_total == 0:
        return positions_followed_stance_html
    else:
        only_you = False

    # If here we know there is at least one position available that isnt' being followed by voter
    popup_box_title = popup_box_title_verb + " " + popup_box_title_candidate_name
    if stance_we_are_looking_for == SUPPORT:
        # This is the class we reference with jquery for opening a div popup to display the supporters
        class_used_to_open_popup = "candidate_campaign_" + candidate_campaign_id + "_supporters"
        # This is the URL that returns the supporters for this candidate
        retrieve_positions_url = "/pos/cand/" + candidate_campaign_id + "/supporters?nf=1"  # Only show orgs not followed
    elif stance_we_are_looking_for == OPPOSE:
        class_used_to_open_popup = "candidate_campaign_" + candidate_campaign_id + "_opposers"
        retrieve_positions_url = "/pos/cand/" + candidate_campaign_id + "/opposers?nf=1"
    elif stance_we_are_looking_for == INFORMATION_ONLY:
        class_used_to_open_popup = "candidate_campaign_" + candidate_campaign_id + "_infoonly"
        retrieve_positions_url = "/pos/cand/" + candidate_campaign_id + "/infoonlylist?nf=1"
    elif stance_we_are_looking_for == STILL_DECIDING:
        class_used_to_open_popup = "candidate_campaign_" + candidate_campaign_id + "_deciders"
        retrieve_positions_url = "/pos/cand/" + candidate_campaign_id + "/deciders?nf=1"
    else:
        class_used_to_open_popup = ''
        retrieve_positions_url = ''

    link_open = "<a class='{link_class}' href='{link_href}' id='{popup_box_title}'>".format(
        link_class=class_used_to_open_popup,
        link_href=retrieve_positions_url,
        popup_box_title=popup_box_title,
    )

    # How we display the link to the positions NOT followed varies based on the number of *followed* positions
    if number_of_positions_followed_total == 0:
        if number_of_positions_not_followed_total == 1:
            not_followed_stance_verb = display_stance_verb_we_are_looking_for_singular(
                stance_we_are_looking_for)
        else:
            not_followed_stance_verb = display_stance_verb_we_are_looking_for_plural(
                stance_we_are_looking_for)
        positions_not_followed_stance_html += \
            "{link_open}{number} {not_followed_stance_verb}</a> ({link_open}learn more</a>)".format(
                link_open=link_open,
                number=number_of_positions_not_followed_total,
                not_followed_stance_verb=not_followed_stance_verb,
            )
    elif number_of_positions_followed_total < 5:
        if number_of_positions_not_followed_total == 1:
            not_followed_stance_verb = "other " + display_stance_verb_we_are_looking_for_plural(
                stance_we_are_looking_for)
        else:
            not_followed_stance_verb = "others " + display_stance_verb_we_are_looking_for_singular(
                stance_we_are_looking_for)
        positions_not_followed_stance_html += \
            "({link_open}{number_of_positions_not_followed_total} {not_followed_stance_verb}</a>)".format(
                link_open=link_open,
                number_of_positions_not_followed_total=number_of_positions_not_followed_total,
                not_followed_stance_verb=not_followed_stance_verb,
            )
    else:  # When there are more than 5 positions from followed organizations
        positions_not_followed_stance_html += "({link_open}show more supporters</a>)".format(
            link_open=link_open, )

    stance_html = positions_followed_stance_html + " " + "<span class='positions_not_followed'>" + positions_not_followed_stance_html + "</span>"

    return stance_html
Exemple #2
0
def assemble_candidate_campaign_stance_html(
        candidate_campaign_id, stance_we_are_looking_for, positions_followed, positions_not_followed):
    """

    :param all_positions_list_for_candidate_campaign:
    :param stance_we_are_looking_for:
    :param candidate_campaign_id:
    :return:
    """
    #################################
    # Start with positions_followed

    # Assemble some information that is independent of each position
    number_of_positions_followed_total = len(positions_followed)
    popup_box_title_verb = display_stance_we_are_looking_for_title(
        stance_we_are_looking_for, number_of_positions_followed_total)

    candidate_campaign_manager = CandidateCampaignManager()
    results = candidate_campaign_manager.retrieve_candidate_campaign_from_id(candidate_campaign_id)
    if results['candidate_campaign_found']:
        candidate_campaign = results['candidate_campaign']
        popup_box_title_candidate_name = candidate_campaign.candidate_name
    else:
        popup_box_title_candidate_name = ""

    popup_box_title = popup_box_title_verb+" "+popup_box_title_candidate_name
    if stance_we_are_looking_for == SUPPORT:
        # This is the class we reference with jquery for opening a div popup to display the supporters
        class_used_to_open_popup = "candidate_campaign_"+candidate_campaign_id+"_supporters"
        # This is the URL that returns the supporters for this candidate
        retrieve_positions_url = "/pos/cand/"+candidate_campaign_id+"/supporters?f=1"  # Only show orgs followed
    elif stance_we_are_looking_for == OPPOSE:
        class_used_to_open_popup = "candidate_campaign_"+candidate_campaign_id+"_opposers"
        retrieve_positions_url = "/pos/cand/"+candidate_campaign_id+"/opposers?f=1"
    elif stance_we_are_looking_for == INFORMATION_ONLY:
        class_used_to_open_popup = "candidate_campaign_"+candidate_campaign_id+"_infoonly"
        retrieve_positions_url = "/pos/cand/"+candidate_campaign_id+"/infoonlylist?f=1"
    elif stance_we_are_looking_for == STILL_DECIDING:
        class_used_to_open_popup = "candidate_campaign_"+candidate_campaign_id+"_deciders"
        retrieve_positions_url = "/pos/cand/"+candidate_campaign_id+"/deciders?f=1"
    else:
        class_used_to_open_popup = ''
        retrieve_positions_url = ''

    # Cycle through these positions and put together a line about who is supporting, opposing, have information
    #  or are still deciding
    positions_followed_stance_html = ""
    is_first = True
    number_of_positions_followed_counter = 0
    only_you = False
    for position in positions_followed:
        if is_first:
            positions_followed_stance_html += ""
        else:
            is_next_to_last = number_of_positions_followed_counter == number_of_positions_followed_total - 1
            positions_followed_stance_html += " and " if is_next_to_last else ", "
        is_first = False

        if position.organization_id > 0:
            organization_manager = OrganizationManager()
            results = organization_manager.retrieve_organization(position.organization_id)
            if results['organization_found']:
                organization_on_stage = results['organization']
                link_open = "<a class='{link_class}' href='{link_href}' id='{popup_box_title}'>".format(
                    link_class=class_used_to_open_popup,
                    link_href=retrieve_positions_url,
                    popup_box_title=popup_box_title,
                )
                positions_followed_stance_html += "{link_open}{organization_name}</a>".format(
                    link_open=link_open,
                    organization_name=organization_on_stage.name,
                )
                number_of_positions_followed_counter += 1
        elif position.voter_id > 0:
            positions_followed_stance_html += "You"
            number_of_positions_followed_counter += 1
            if number_of_positions_followed_total == 1:
                only_you = True
    if number_of_positions_followed_total:
        verb_text = display_stance_we_are_looking_for(
            stance_we_are_looking_for, number_of_positions_followed_total, only_you)
        if verb_text:
            positions_followed_stance_html = "<span class='positions_followed_text'>" + positions_followed_stance_html
            positions_followed_stance_html += " <span class='position_stance_verb'>{verb_text}</span>".format(verb_text=verb_text)
            positions_followed_stance_html += "</span>"

    #################################
    # NOT Followed
    #################################
    # Now create string with html for positions_not_followed
    positions_not_followed_stance_html = ""
    number_of_positions_not_followed_total = len(positions_not_followed)
    # If there aren't any "not followed" positions, just return the positions_followed_stance_html
    if number_of_positions_not_followed_total == 0:
        return positions_followed_stance_html
    else:
        only_you = False

    # If here we know there is at least one position available that isnt' being followed by voter
    popup_box_title = popup_box_title_verb+" "+popup_box_title_candidate_name
    if stance_we_are_looking_for == SUPPORT:
        # This is the class we reference with jquery for opening a div popup to display the supporters
        class_used_to_open_popup = "candidate_campaign_"+candidate_campaign_id+"_supporters"
        # This is the URL that returns the supporters for this candidate
        retrieve_positions_url = "/pos/cand/"+candidate_campaign_id+"/supporters?nf=1"  # Only show orgs not followed
    elif stance_we_are_looking_for == OPPOSE:
        class_used_to_open_popup = "candidate_campaign_"+candidate_campaign_id+"_opposers"
        retrieve_positions_url = "/pos/cand/"+candidate_campaign_id+"/opposers?nf=1"
    elif stance_we_are_looking_for == INFORMATION_ONLY:
        class_used_to_open_popup = "candidate_campaign_"+candidate_campaign_id+"_infoonly"
        retrieve_positions_url = "/pos/cand/"+candidate_campaign_id+"/infoonlylist?nf=1"
    elif stance_we_are_looking_for == STILL_DECIDING:
        class_used_to_open_popup = "candidate_campaign_"+candidate_campaign_id+"_deciders"
        retrieve_positions_url = "/pos/cand/"+candidate_campaign_id+"/deciders?nf=1"
    else:
        class_used_to_open_popup = ''
        retrieve_positions_url = ''

    link_open = "<a class='{link_class}' href='{link_href}' id='{popup_box_title}'>".format(
        link_class=class_used_to_open_popup,
        link_href=retrieve_positions_url,
        popup_box_title=popup_box_title,
    )

    # How we display the link to the positions NOT followed varies based on the number of *followed* positions
    if number_of_positions_followed_total == 0:
        if number_of_positions_not_followed_total == 1:
            not_followed_stance_verb = display_stance_verb_we_are_looking_for_singular(stance_we_are_looking_for)
        else:
            not_followed_stance_verb = display_stance_verb_we_are_looking_for_plural(stance_we_are_looking_for)
        positions_not_followed_stance_html += \
            "{link_open}{number} {not_followed_stance_verb}</a> ({link_open}learn more</a>)".format(
                link_open=link_open,
                number=number_of_positions_not_followed_total,
                not_followed_stance_verb=not_followed_stance_verb,
            )
    elif number_of_positions_followed_total < 5:
        if number_of_positions_not_followed_total == 1:
            not_followed_stance_verb = "other "+display_stance_verb_we_are_looking_for_plural(stance_we_are_looking_for)
        else:
            not_followed_stance_verb = "others "+display_stance_verb_we_are_looking_for_singular(stance_we_are_looking_for)
        positions_not_followed_stance_html += \
            "({link_open}{number_of_positions_not_followed_total} {not_followed_stance_verb}</a>)".format(
                link_open=link_open,
                number_of_positions_not_followed_total=number_of_positions_not_followed_total,
                not_followed_stance_verb=not_followed_stance_verb,
            )
    else:  # When there are more than 5 positions from followed organizations
        positions_not_followed_stance_html += "({link_open}show more supporters</a>)".format(
            link_open=link_open,
        )

    stance_html = positions_followed_stance_html + " " + "<span class='positions_not_followed'>" + positions_not_followed_stance_html + "</span>"

    return stance_html