def get_html_content_dict(self):
        tallySheetContent = self.content
        stamp = self.stamp

        content = {
            "resultTitle": "ALL ISLAND RESULT",
            "election": {
                "electionName": self.submission.election.get_official_name()
            },
            "stamp": {
                "createdAt": stamp.createdAt,
                "createdBy": stamp.createdBy,
                "barcodeString": stamp.barcodeString
            },
            "date": stamp.createdAt.strftime("%d/%m/%Y"),
            "time": stamp.createdAt.strftime("%H:%M:%S %p"),
            "data": [
            ],
            "validVoteCounts": [0, 0],
            "rejectedVoteCounts": [0, 0],
            "totalVoteCounts": [0, 0],
            "registeredVoters": [
                to_comma_seperated_num(self.submission.area.registeredVotersCount),
                100
            ]
        }

        candidate_wise_valid_vote_count_result = self.candidate_wise_valid_vote_count_query().all()
        vote_count_result = self.vote_count_result()

        for candidate_wise_valid_vote_count_result_item in candidate_wise_valid_vote_count_result:
            content["data"].append([
                candidate_wise_valid_vote_count_result_item.candidateName,
                candidate_wise_valid_vote_count_result_item.partyAbbreviation,
                to_comma_seperated_num(candidate_wise_valid_vote_count_result_item.validVoteCount),
                to_percentage(candidate_wise_valid_vote_count_result_item.validVotePercentage),
                candidate_wise_valid_vote_count_result_item.validVoteCount
            ])

        content['data'] = sorted(content['data'], key=operator.itemgetter(4), reverse=True)
        content["validVoteCounts"] = [
            to_comma_seperated_num(vote_count_result["validVoteCount"]),
            to_percentage(vote_count_result["validVoteCountPercentage"])
        ]

        content["rejectedVoteCounts"] = [
            to_comma_seperated_num(vote_count_result["rejectedVoteCount"]),
            to_percentage(vote_count_result["rejectedVoteCountPercentage"])
        ]

        content["totalVoteCounts"] = [
            to_comma_seperated_num(vote_count_result["totalVoteCount"]),
            to_percentage(vote_count_result["totalVoteCountPercentage"])
        ]

        content["logo"] = convert_image_to_data_uri("static/Emblem_of_Sri_Lanka.png")

        return content
Exemplo n.º 2
0
        def html_letter(self,
                        title="",
                        total_registered_voters=None,
                        signatures=[]):
            tallySheetVersion = self.tallySheetVersion
            stamp = tallySheetVersion.stamp

            content = {
                "election": {
                    "electionName":
                    tallySheetVersion.tallySheet.election.get_official_name()
                },
                "stamp": {
                    "createdAt": stamp.createdAt,
                    "createdBy": stamp.createdBy,
                    "barcodeString": stamp.barcodeString
                },
                "signatures":
                signatures,
                "province":
                Area.get_associated_areas(tallySheetVersion.tallySheet.area,
                                          AreaTypeEnum.Province)[0].areaName,
                "administrativeDistrict":
                Area.get_associated_areas(
                    tallySheetVersion.tallySheet.area,
                    AreaTypeEnum.AdministrativeDistrict)[0].areaName,
                "data": [],
                "logo":
                convert_image_to_data_uri("static/Emblem_of_Sri_Lanka.png"),
                "date":
                stamp.createdAt.strftime("%d/%m/%Y"),
                "time":
                stamp.createdAt.strftime("%H:%M:%S %p")
            }

            candidate_wise_results = self.get_candidate_wise_results(
            ).sort_values(by=[
                "seatsAllocated", "electionPartyId", "preferenceCount",
                "candidateId"
            ],
                          ascending=[False, True, False, True]).reset_index()

            for index in candidate_wise_results.index:
                data_row = [
                    candidate_wise_results.at[index, "partyName"],
                    candidate_wise_results.at[index, "partyAbbreviation"],
                    candidate_wise_results.at[index, "candidateNumber"],
                    candidate_wise_results.at[index, "candidateName"]
                ]

                content["data"].append(data_row)

            html = render_template(
                'ProvincialCouncilElection2021/PCE-42-LETTER.html',
                content=content)

            return html
    def html_letter(self):

        stamp = self.stamp
        total_registered_voters = get_polling_division_total_registered_voters(tallySheetVersion=self)
        electoral_district = Area.get_associated_areas(self.submission.area, AreaTypeEnum.ElectoralDistrict)[0]
        polling_division = self.submission.area

        content = {
            "resultTitle": "Results of PD",
            "election": {
                "electionName": self.submission.election.get_official_name(),
                "isPostal": self.submission.election.voteType == VoteTypeEnum.Postal
            },
            "stamp": {
                "createdAt": stamp.createdAt,
                "createdBy": stamp.createdBy,
                "barcodeString": stamp.barcodeString
            },
            "date": stamp.createdAt.strftime("%d/%m/%Y"),
            "time": stamp.createdAt.strftime("%H:%M:%S %p"),
            "data": [
            ],
            "validVoteCounts": [0, 0],
            "rejectedVoteCounts": [0, 0],
            "totalVoteCounts": [0, 0],
            "registeredVoters": [
                to_comma_seperated_num(total_registered_voters),
                100
            ],
            "electoralDistrict": Area.get_associated_areas(
                self.submission.area, AreaTypeEnum.ElectoralDistrict)[0].areaName,
            "pollingDivision": self.submission.area.areaName
        }

        if self.submission.election.voteType == VoteTypeEnum.Postal:
            content["tallySheetCode"] = "PRE/34/PV"
            content["pollingDivision"] = "Postal"
            content["resultTitle"] = "Results of Electoral District %s (Postal)" % electoral_district.areaName
        else:
            content["pollingDivision"] = self.submission.area.areaName
            content["resultTitle"] = "Results of Electoral District %s - Polling Division %s" % (
                electoral_district.areaName,
                polling_division.areaName
            )

        content["data"], total_valid_vote_count = TallySheetVersion.create_candidate_preference_struct(self.content)

        content["logo"] = convert_image_to_data_uri("static/Emblem_of_Sri_Lanka.png")

        html = render_template(
            'PRE_34_ALL_ISLAND_RESULTS.html',
            content=content
        )

        return html
        def html_letter(self,
                        title="",
                        total_registered_voters=None,
                        signatures=[]):
            tallySheetVersion = self.tallySheetVersion

            stamp = tallySheetVersion.stamp

            content = {
                "election": {
                    "electionName":
                    tallySheetVersion.tallySheet.election.get_official_name(),
                    "provinceName":
                    tallySheetVersion.tallySheet.area.areaName
                },
                "stamp": {
                    "createdAt": stamp.createdAt,
                    "createdBy": stamp.createdBy,
                    "barcodeString": stamp.barcodeString
                },
                "signatures": signatures,
                "data": [],
                "logo":
                convert_image_to_data_uri("static/Emblem_of_Sri_Lanka.png"),
                "date": stamp.createdAt.strftime("%d/%m/%Y"),
                "time": stamp.createdAt.strftime("%H:%M:%S %p")
            }

            candidate_wise_results = self.get_candidate_wise_results(
            ).sort_values(by=['electionPartyId', "candidateId"],
                          ascending=[True, True]).reset_index()

            for candidate_wise_result in candidate_wise_results.itertuples():
                party_name = candidate_wise_result.partyName
                party_abbreviation = candidate_wise_result.partyAbbreviation
                candidate_number = candidate_wise_result.candidateNumber
                candidate_name = candidate_wise_result.candidateName
                content["data"].append([
                    party_name, party_abbreviation,
                    "" if candidate_number is None else candidate_number,
                    "" if candidate_name is None else candidate_name
                ])

            html = render_template(
                'ProvincialCouncilElection2021/PCE-PC-BS-2-LETTER.html',
                content=content)

            return html
        def html_letter(self,
                        title="",
                        total_registered_voters=None,
                        signatures=[]):
            tallySheetVersion = self.tallySheetVersion
            stamp = tallySheetVersion.stamp

            content = {
                "election": {
                    "electionName":
                    tallySheetVersion.tallySheet.election.get_official_name(),
                    "provinceName":
                    tallySheetVersion.tallySheet.area.areaName
                },
                "stamp": {
                    "createdAt": stamp.createdAt,
                    "createdBy": stamp.createdBy,
                    "barcodeString": stamp.barcodeString
                },
                "signatures": signatures,
                "data": [],
                "logo":
                convert_image_to_data_uri("static/Emblem_of_Sri_Lanka.png"),
                "date": stamp.createdAt.strftime("%d/%m/%Y"),
                "time": stamp.createdAt.strftime("%H:%M:%S %p")
            }

            candidate_wise_results = self.get_candidate_wise_results()

            for candidate_wise_result in candidate_wise_results.itertuples():
                data_row = [
                    candidate_wise_result.partyName,
                    candidate_wise_result.partyAbbreviation,
                    candidate_wise_result.areaName,
                    candidate_wise_result.candidateNumber,
                    candidate_wise_result.candidateName
                ]

                content["data"].append(data_row)

            html = render_template(
                'ProvincialCouncilElection2021/PCE-PC-CD-LETTER.html',
                content=content)

            return html
        def html_letter(self, title="", total_registered_voters=None):
            tallySheetVersion = self.tallySheetVersion
            stamp = tallySheetVersion.stamp

            content = {
                "election": {
                    "electionName":
                    tallySheetVersion.submission.election.get_official_name()
                },
                "stamp": {
                    "createdAt": stamp.createdAt,
                    "createdBy": stamp.createdBy,
                    "barcodeString": stamp.barcodeString
                },
                "electoralDistrict":
                Area.get_associated_areas(
                    tallySheetVersion.submission.area,
                    AreaTypeEnum.ElectoralDistrict)[0].areaName,
                "data": [],
                "logo":
                convert_image_to_data_uri("static/Emblem_of_Sri_Lanka.png"),
                "date":
                stamp.createdAt.strftime("%d/%m/%Y"),
                "time":
                stamp.createdAt.strftime("%H:%M:%S %p")
            }

            candidate_wise_results = self.get_candidate_wise_results(
            ).sort_values(by=['electionPartyId', "candidateId"],
                          ascending=[True, True]).reset_index()

            for index in candidate_wise_results.index:
                data_row = [
                    candidate_wise_results.at[index, "partyName"],
                    candidate_wise_results.at[index, "partyAbbreviation"],
                    candidate_wise_results.at[index, "candidateNumber"],
                    candidate_wise_results.at[index, "candidateName"]
                ]

                content["data"].append(data_row)

            html = render_template(
                'ParliamentaryElection2020/PE-21-LETTER.html', content=content)

            return html
        def html_letter(self,
                        title="",
                        total_registered_voters=None,
                        signatures=[]):
            tallySheetVersion = self.tallySheetVersion
            stamp = tallySheetVersion.stamp

            content = {
                "election": {
                    "electionName":
                    tallySheetVersion.tallySheet.election.get_official_name()
                },
                "stamp": {
                    "createdAt": stamp.createdAt,
                    "createdBy": stamp.createdBy,
                    "barcodeString": stamp.barcodeString
                },
                "signatures": signatures,
                "data": [],
                "logo":
                convert_image_to_data_uri("static/Emblem_of_Sri_Lanka.png"),
                "date": stamp.createdAt.strftime("%d/%m/%Y"),
                "time": stamp.createdAt.strftime("%H:%M:%S %p")
            }

            candidate_wise_results = self.get_candidate_wise_results()

            for candidate_wise_result in candidate_wise_results.itertuples():
                data_row = [
                    candidate_wise_result.partyName,
                    candidate_wise_result.partyAbbreviation,
                    "National List" if candidate_wise_result.candidateType
                    == CANDIDATE_TYPE_NATIONAL_LIST else
                    candidate_wise_result.areaName,
                    candidate_wise_result.candidateNumber,
                    candidate_wise_result.candidateName
                ]

                content["data"].append(data_row)

            html = render_template(
                'ParliamentaryElection2020/PE-AI-2-LETTER.html',
                content=content)

            return html
    def html_letter(self):
        stamp = self.stamp
        electoralDistrict = self.submission.area
        content = {
            "resultTitle":
            "Results of Electoral District %s" % electoralDistrict.areaName,
            "election": {
                "electionName": self.submission.election.get_official_name()
            },
            "stamp": {
                "createdAt": stamp.createdAt,
                "createdBy": stamp.createdBy,
                "barcodeString": stamp.barcodeString
            },
            "date":
            stamp.createdAt.strftime("%d/%m/%Y"),
            "time":
            stamp.createdAt.strftime("%H:%M:%S %p"),
            "data": [],
            "validVoteCounts": [0, 0],
            "rejectedVoteCounts": [0, 0],
            "totalVoteCounts": [0, 0],
            "registeredVoters": [
                to_comma_seperated_num(
                    self.submission.area.registeredVotersCount), 100
            ],
            "electoralDistrict":
            self.submission.area.areaName
        }

        content[
            "data"], total_valid_vote_count = TallySheetVersion.create_candidate_preference_struct(
                self.content)

        content["logo"] = convert_image_to_data_uri(
            "static/Emblem_of_Sri_Lanka.png")

        html = render_template('PRE_34_ALL_ISLAND_RESULTS.html',
                               content=content)

        return html
Exemplo n.º 9
0
        def html_letter(self, title="", total_registered_voters=None):
            tallySheetVersion = self.tallySheetVersion
            party_wise_valid_vote_count_result = self.get_party_wise_valid_vote_count_result(
            )
            area_wise_valid_vote_count_result = self.get_area_wise_valid_vote_count_result(
            )
            area_wise_rejected_vote_count_result = self.get_area_wise_rejected_vote_count_result(
            )
            area_wise_vote_count_result = self.get_area_wise_vote_count_result(
            )
            stamp = tallySheetVersion.stamp

            registered_voters_count = tallySheetVersion.submission.area.get_registered_voters_count(
                vote_type=tallySheetVersion.submission.election.voteType)

            content = {
                "election": {
                    "electionName":
                    tallySheetVersion.submission.election.get_official_name()
                },
                "stamp": {
                    "createdAt": stamp.createdAt,
                    "createdBy": stamp.createdBy,
                    "barcodeString": stamp.barcodeString
                },
                "electoralDistrict":
                tallySheetVersion.submission.area.areaName,
                "data": [],
                "validVoteCounts": [0, "0%"],
                "rejectedVoteCounts": [0, "0%"],
                "totalVoteCounts": [0, "0%"],
                "registeredVoters":
                [to_comma_seperated_num(registered_voters_count), 100],
                "logo":
                convert_image_to_data_uri("static/Emblem_of_Sri_Lanka.png"),
                "date":
                stamp.createdAt.strftime("%d/%m/%Y"),
                "time":
                stamp.createdAt.strftime("%H:%M:%S %p")
            }

            total_valid_vote_count = 0
            for area_wise_valid_vote_count_result_item in area_wise_valid_vote_count_result.itertuples(
            ):
                total_valid_vote_count += float(
                    area_wise_valid_vote_count_result_item.incompleteNumValue)
            content["validVoteCounts"][0] = to_comma_seperated_num(
                total_valid_vote_count)
            content["validVoteCounts"][1] = to_percentage(
                (total_valid_vote_count / registered_voters_count) * 100)

            total_rejected_vote_count = 0
            for area_wise_rejected_vote_count_result_item in area_wise_rejected_vote_count_result.itertuples(
            ):
                total_rejected_vote_count += float(
                    area_wise_rejected_vote_count_result_item.numValue)
            content["rejectedVoteCounts"][0] = to_comma_seperated_num(
                total_rejected_vote_count)
            content["rejectedVoteCounts"][1] = to_percentage(
                (total_rejected_vote_count / registered_voters_count) * 100)

            total_vote_count = 0
            for area_wise_vote_count_result_item in area_wise_vote_count_result.itertuples(
            ):
                total_vote_count += float(
                    area_wise_vote_count_result_item.incompleteNumValue)
            content["totalVoteCounts"][0] = to_comma_seperated_num(
                total_vote_count)
            content["totalVoteCounts"][1] = to_percentage(
                (total_vote_count / registered_voters_count) * 100)

            # sort by vote count descending
            party_wise_valid_vote_count_result = party_wise_valid_vote_count_result.sort_values(
                by=['numValue',
                    "electionPartyId"], ascending=[False, True]).reset_index()

            for party_wise_valid_vote_count_result_item_index, party_wise_valid_vote_count_result_item in party_wise_valid_vote_count_result.iterrows(
            ):
                data_row = [
                    party_wise_valid_vote_count_result_item.partyName,
                    party_wise_valid_vote_count_result_item.partyAbbreviation,
                    to_comma_seperated_num(
                        party_wise_valid_vote_count_result_item.numValue)
                ]

                if total_valid_vote_count > 0:
                    data_row.append(
                        to_percentage(
                            party_wise_valid_vote_count_result_item.numValue *
                            100 / total_valid_vote_count))
                else:
                    data_row.append('')

                content["data"].append(data_row)

            html = render_template(
                'ParliamentaryElection2020/PE-CE-RO-V2-LETTER.html',
                content=content)

            return html
        def html(self, title="", total_registered_voters=None):
            tallySheetVersion = self.tallySheetVersion

            party_wise_valid_vote_count_result = self.get_party_wise_valid_vote_count_result(
            )
            area_wise_rejected_vote_count_result = self.get_area_wise_rejected_vote_count_result(
            )

            stamp = tallySheetVersion.stamp

            registered_voters_count = tallySheetVersion.tallySheet.area.get_registered_voters_count(
                vote_type=tallySheetVersion.tallySheet.election.voteType)
            polling_division_name = tallySheetVersion.tallySheet.area.areaName
            if tallySheetVersion.tallySheet.election.voteType != NonPostal:
                polling_division_name = tallySheetVersion.tallySheet.election.voteType

            content = {
                "election": {
                    "electionName":
                    tallySheetVersion.tallySheet.election.get_official_name(),
                    "provinceName":
                    Area.get_associated_areas(
                        tallySheetVersion.tallySheet.area,
                        AreaTypeEnum.Province)[0].areaName
                },
                "stamp": {
                    "createdAt": stamp.createdAt,
                    "createdBy": stamp.createdBy,
                    "barcodeString": stamp.barcodeString
                },
                "tallySheetCode":
                "PCE-PD-V",
                "administrativeDistrict":
                Area.get_associated_areas(
                    tallySheetVersion.tallySheet.area,
                    AreaTypeEnum.AdministrativeDistrict)[0].areaName,
                "pollingDivision":
                polling_division_name,
                "data": [],
                "totalValidVoteCount":
                '',
                "totalValidVotePercentage":
                '',
                "rejectedVoteCount":
                '',
                "rejectedVotePercentage":
                '',
                "totalVoteCount":
                '',
                "totalVotePercentage":
                '',
                "numberOfElectors":
                to_comma_seperated_num(registered_voters_count),
                "logo":
                convert_image_to_data_uri("static/Emblem_of_Sri_Lanka.png")
            }

            total_valid_vote_count = 0
            total_rejected_vote_count = 0
            total_vote_count = 0
            party_wise_valid_total_votes = []

            for index, party_wise_valid_vote_count_result_item in party_wise_valid_vote_count_result.iterrows(
            ):
                data_row = [party_wise_valid_vote_count_result_item.partyName]
                vote_count = party_wise_valid_vote_count_result_item.numValue
                party_wise_valid_total_votes.append(
                    vote_count if not math.isnan(vote_count) else 0)
                data_row.append(to_comma_seperated_num(vote_count))
                total_valid_vote_count += vote_count if not math.isnan(
                    vote_count) else 0
                content["data"].append(data_row)

            total_valid_vote_count = total_valid_vote_count if not math.isnan(
                total_valid_vote_count) else 0
            content["totalValidVoteCount"] = to_comma_seperated_num(
                total_valid_vote_count)

            # party wise percentage calculation
            for index, party_vote_count in enumerate(
                    party_wise_valid_total_votes):
                percentage_value = to_percentage(0)
                if total_valid_vote_count > 0:
                    percentage_value = to_percentage(party_vote_count * 100 /
                                                     total_valid_vote_count)
                content["data"][index].append(percentage_value)

            for index, area_wise_rejected_vote_count_result_item in area_wise_rejected_vote_count_result.iterrows(
            ):
                rejected_vote_count = area_wise_rejected_vote_count_result_item.numValue
                total_rejected_vote_count += rejected_vote_count if not math.isnan(
                    rejected_vote_count) else 0
            content["rejectedVoteCount"] = to_comma_seperated_num(
                total_rejected_vote_count)

            total_vote_count = total_valid_vote_count + total_rejected_vote_count
            content["totalVoteCount"] = to_comma_seperated_num(
                total_vote_count)
            total_valid_vote_percentage = (
                total_valid_vote_count * 100 /
                total_vote_count) if total_vote_count > 0 else 0
            content["totalValidVotePercentage"] = to_percentage(
                total_valid_vote_percentage)
            rejected_vote_percentage = (
                total_rejected_vote_count * 100 /
                total_vote_count) if total_vote_count > 0 else 0
            content["rejectedVotePercentage"] = to_percentage(
                rejected_vote_percentage)
            total_vote_percentage = (
                total_vote_count * 100 /
                registered_voters_count) if registered_voters_count > 0 else 0
            content["totalVotePercentage"] = to_percentage(
                total_vote_percentage)

            html = render_template(
                'ProvincialCouncilElection2021/PCE-PD-V.html', content=content)

            return html
Exemplo n.º 11
0
        def html_letter(self,
                        title="",
                        total_registered_voters=None,
                        signatures=[]):
            tallySheetVersion = self.tallySheetVersion
            party_wise_valid_vote_count_result = self.get_party_wise_seat_calculations(
            )
            area_wise_valid_vote_count_result = self.get_area_wise_valid_vote_count_result(
            )
            area_wise_rejected_vote_count_result = self.get_area_wise_rejected_vote_count_result(
            )
            area_wise_vote_count_result = self.get_area_wise_vote_count_result(
            )
            stamp = tallySheetVersion.stamp

            registered_voters_count = tallySheetVersion.tallySheet.area.get_registered_voters_count(
            )
            content = {
                "election": {
                    "electionName":
                    tallySheetVersion.tallySheet.election.get_official_name(),
                    "provinceName":
                    tallySheetVersion.tallySheet.area.areaName
                },
                "stamp": {
                    "createdAt": stamp.createdAt,
                    "createdBy": stamp.createdBy,
                    "barcodeString": stamp.barcodeString
                },
                "signatures":
                signatures,
                "data": [],
                "validVoteCounts": [0, "0%"],
                "rejectedVoteCounts": [0, "0%"],
                "totalVoteCounts": [0, "0%"],
                "registeredVoters":
                [to_comma_seperated_num(registered_voters_count), 100],
                "logo":
                convert_image_to_data_uri("static/Emblem_of_Sri_Lanka.png"),
                "date":
                stamp.createdAt.strftime("%d/%m/%Y"),
                "time":
                stamp.createdAt.strftime("%H:%M:%S %p")
            }

            total_vote_count = 0
            for area_wise_vote_count_result_item in area_wise_vote_count_result.itertuples(
            ):
                total_vote_count += float(
                    area_wise_vote_count_result_item.incompleteNumValue)
            content["totalVoteCounts"][0] = to_comma_seperated_num(
                total_vote_count)
            content["totalVoteCounts"][1] = to_percentage(
                (total_vote_count / registered_voters_count) * 100)

            total_valid_vote_count = 0
            for area_wise_valid_vote_count_result_item in area_wise_valid_vote_count_result.itertuples(
            ):
                total_valid_vote_count += float(
                    area_wise_valid_vote_count_result_item.incompleteNumValue)
            content["validVoteCounts"][0] = to_comma_seperated_num(
                total_valid_vote_count)
            content["validVoteCounts"][1] = to_percentage(
                (total_valid_vote_count / total_vote_count) * 100)

            total_rejected_vote_count = 0
            for area_wise_rejected_vote_count_result_item in area_wise_rejected_vote_count_result.itertuples(
            ):
                total_rejected_vote_count += float(
                    area_wise_rejected_vote_count_result_item.numValue)
            content["rejectedVoteCounts"][0] = to_comma_seperated_num(
                total_rejected_vote_count)
            content["rejectedVoteCounts"][1] = to_percentage(
                (total_rejected_vote_count / total_vote_count) * 100)

            for party_wise_valid_vote_count_result_item_index, party_wise_valid_vote_count_result_item in party_wise_valid_vote_count_result.iterrows(
            ):

                data_row = [
                    party_wise_valid_vote_count_result_item.partyName,
                    party_wise_valid_vote_count_result_item.partyAbbreviation,
                    to_comma_seperated_num(
                        party_wise_valid_vote_count_result_item.numValue)
                ]

                if total_valid_vote_count > 0:
                    data_row.append(
                        to_percentage(
                            party_wise_valid_vote_count_result_item.numValue *
                            100 / total_valid_vote_count))
                else:
                    data_row.append('')

                data_row.append(
                    to_comma_seperated_num(
                        party_wise_valid_vote_count_result_item.seatsAllocated)
                )

                content["data"].append(data_row)

            html = render_template(
                'ProvincialCouncilElection2021/PCE-PC-BS-1-LETTER.html',
                content=content)

            return html
Exemplo n.º 12
0
    def html_letter(self, title="", total_registered_voters=None):
        tallySheetVersion = self.tallySheetVersion
        stamp = tallySheetVersion.stamp

        if total_registered_voters is None:
            total_registered_voters = float(
                tallySheetVersion.submission.area.registeredVotersCount)

        content = {
            "resultTitle":
            title,
            "election": {
                "electionName":
                tallySheetVersion.submission.election.get_official_name()
            },
            "stamp": {
                "createdAt": stamp.createdAt,
                "createdBy": stamp.createdBy,
                "barcodeString": stamp.barcodeString
            },
            "date":
            stamp.createdAt.strftime("%d/%m/%Y"),
            "time":
            stamp.createdAt.strftime("%H:%M:%S %p"),
            "data": [],
            "validVoteCounts": [0, 0],
            "rejectedVoteCounts": [0, 0],
            "totalVoteCounts": [0, 0],
            "registeredVoters":
            [to_comma_seperated_num(total_registered_voters), 100]
        }

        candidate_wise_valid_vote_count_result = self.get_candidate_wise_valid_vote_count_result(
        )
        vote_count_result = self.get_vote_count_result()
        valid_vote_count_result = self.get_valid_vote_count_result()
        rejected_vote_count_result = self.get_rejected_vote_count_result()

        for candidate_wise_valid_non_postal_vote_count_result_item in candidate_wise_valid_vote_count_result.itertuples(
        ):
            content["data"].append([
                candidate_wise_valid_non_postal_vote_count_result_item.
                candidateName,
                candidate_wise_valid_non_postal_vote_count_result_item.
                partyAbbreviation,
                to_comma_seperated_num(
                    candidate_wise_valid_non_postal_vote_count_result_item.
                    numValue),
                to_percentage(
                    candidate_wise_valid_non_postal_vote_count_result_item.
                    numValue * 100 /
                    valid_vote_count_result["numValue"].values[0])
                if valid_vote_count_result["numValue"].values[0] > 0 else ""
            ])

        content["validVoteCounts"] = [
            to_comma_seperated_num(
                valid_vote_count_result["numValue"].values[0]),
            to_percentage(valid_vote_count_result["numValue"].values[0] * 100 /
                          vote_count_result["numValue"].values[0])
            if vote_count_result["numValue"].values[0] > 0 else ""
        ]

        content["rejectedVoteCounts"] = [
            to_comma_seperated_num(
                rejected_vote_count_result["numValue"].values[0]),
            rejected_vote_count_result["numValue"].values[0] * 100 /
            vote_count_result["numValue"].values[0]
            if vote_count_result["numValue"].values[0] > 0 else ""
        ]

        content["totalVoteCounts"] = [
            to_comma_seperated_num(vote_count_result["numValue"].values[0]),
            to_percentage(vote_count_result["numValue"].values[0] * 100 /
                          total_registered_voters)
        ]

        content["logo"] = convert_image_to_data_uri(
            "static/Emblem_of_Sri_Lanka.png")

        html = render_template('PRE_ALL_ISLAND_RESULTS.html', content=content)

        return html
Exemplo n.º 13
0
    def html_letter(self):

        stamp = self.stamp
        electoralDistrict = self.submission.area

        content = {
            "resultTitle":
            "Results of Electoral District %s" % electoralDistrict.areaName,
            "election": {
                "electionName": self.submission.election.get_official_name()
            },
            "stamp": {
                "createdAt": stamp.createdAt,
                "createdBy": stamp.createdBy,
                "barcodeString": stamp.barcodeString
            },
            "date":
            stamp.createdAt.strftime("%d/%m/%Y"),
            "time":
            stamp.createdAt.strftime("%H:%M:%S %p"),
            "data": [],
            "validVoteCounts": [0, 0],
            "rejectedVoteCounts": [0, 0],
            "totalVoteCounts": [0, 0],
            "registeredVoters": [
                to_comma_seperated_num(
                    self.submission.area.registeredVotersCount), 100
            ],
            "electoralDistrict":
            electoralDistrict.areaName
        }

        candidate_wise_vote_count_result = self.candidate_wise_vote_count(
        ).all()
        vote_count_result = self.vote_count_query().one_or_none()

        for candidate_wise_valid_vote_count_result_item in candidate_wise_vote_count_result:
            content["data"].append([
                candidate_wise_valid_vote_count_result_item.candidateName,
                candidate_wise_valid_vote_count_result_item.partyAbbreviation,
                to_comma_seperated_num(
                    candidate_wise_valid_vote_count_result_item.validVoteCount
                ),
                to_percentage(candidate_wise_valid_vote_count_result_item.
                              validVotePercentage)
            ])

        content["validVoteCounts"] = [
            to_comma_seperated_num(vote_count_result.validVoteCount),
            to_percentage(vote_count_result.validVoteCount * 100 /
                          self.submission.area.registeredVotersCount)
        ]

        content["rejectedVoteCounts"] = [
            to_comma_seperated_num(vote_count_result.rejectedVoteCount),
            to_percentage(vote_count_result.rejectedVoteCount * 100 /
                          self.submission.area.registeredVotersCount)
        ]

        content["totalVoteCounts"] = [
            to_comma_seperated_num(vote_count_result.totalVoteCount),
            to_percentage(vote_count_result.totalVoteCount * 100 /
                          self.submission.area.registeredVotersCount)
        ]

        content["logo"] = convert_image_to_data_uri(
            "static/Emblem_of_Sri_Lanka.png")

        html = render_template('PRE_ALL_ISLAND_RESULTS.html', content=content)

        return html
        def html_letter(self, title="", total_registered_voters=None):
            tallySheetVersion = self.tallySheetVersion
            party_wise_results = self.get_party_wise_results()
            stamp = tallySheetVersion.stamp

            registered_voters_count = tallySheetVersion.submission.area.get_registered_voters_count(
            )
            content = {
                "election": {
                    "electionName":
                    tallySheetVersion.submission.election.get_official_name()
                },
                "stamp": {
                    "createdAt": stamp.createdAt,
                    "createdBy": stamp.createdBy,
                    "barcodeString": stamp.barcodeString
                },
                "data": [],
                "validVoteCounts": [0, "0%"],
                "rejectedVoteCounts": [0, "0%"],
                "totalVoteCounts": [0, "0%"],
                "registeredVoters":
                [to_comma_seperated_num(registered_voters_count), 100],
                "logo":
                convert_image_to_data_uri("static/Emblem_of_Sri_Lanka.png"),
                "date":
                stamp.createdAt.strftime("%d/%m/%Y"),
                "time":
                stamp.createdAt.strftime("%H:%M:%S %p")
            }

            total_valid_vote_count = 0
            total_rejected_vote_count = self.get_rejected_vote_count_result(
            )["numValue"].values[0]
            for party_wise_result in party_wise_results.itertuples():
                total_valid_vote_count += float(
                    party_wise_result.validVoteCount)
            total_vote_count = total_valid_vote_count + total_rejected_vote_count

            content["validVoteCounts"][0] = to_comma_seperated_num(
                total_valid_vote_count)
            content["validVoteCounts"][1] = to_percentage(
                (total_valid_vote_count / registered_voters_count) * 100)

            content["rejectedVoteCounts"][0] = to_comma_seperated_num(
                total_rejected_vote_count)
            content["rejectedVoteCounts"][1] = to_percentage(
                (total_rejected_vote_count / registered_voters_count) * 100)

            content["totalVoteCounts"][0] = to_comma_seperated_num(
                total_vote_count)
            content["totalVoteCounts"][1] = to_percentage(
                (total_vote_count / registered_voters_count) * 100)

            party_wise_results = self.get_party_wise_results().sort_values(
                by=["totalSeatsAllocated", "numValue", "electionPartyId"],
                ascending=[False, False, True]).reset_index()

            for party_wise_result in party_wise_results.itertuples():
                data_row = [
                    party_wise_result.partyName,
                    party_wise_result.partyAbbreviation,
                    to_comma_seperated_num(party_wise_result.validVoteCount)
                ]

                if total_valid_vote_count > 0:
                    data_row.append(
                        to_percentage(party_wise_result.validVoteCount * 100 /
                                      total_valid_vote_count))
                else:
                    data_row.append('')

                data_row.append(
                    to_comma_seperated_num(party_wise_result.seatsAllocated))
                data_row.append(
                    to_comma_seperated_num(
                        party_wise_result.nationalListSeatsAllocated))
                data_row.append(
                    to_comma_seperated_num(
                        party_wise_result.totalSeatsAllocated))

                content["data"].append(data_row)

            html = render_template(
                'ParliamentaryElection2020/PE-AI-1-LETTER.html',
                content=content)

            return html
Exemplo n.º 15
0
    def html_letter(self):

        stamp = self.stamp
        total_registered_voters = get_polling_division_total_registered_voters(tallySheetVersion=self)
        electoral_district = Area.get_associated_areas(self.submission.area, AreaTypeEnum.ElectoralDistrict)[0]
        polling_division = self.submission.area

        content = {
            "resultTitle": "Results of PD",
            "election": {
                "electionName": self.submission.election.get_official_name(),
                "isPostal": self.submission.election.voteType == VoteTypeEnum.Postal
            },
            "stamp": {
                "createdAt": stamp.createdAt,
                "createdBy": stamp.createdBy,
                "barcodeString": stamp.barcodeString
            },
            "date": stamp.createdAt.strftime("%d/%m/%Y"),
            "time": stamp.createdAt.strftime("%H:%M:%S %p"),
            "data": [
            ],
            "validVoteCounts": [0, 0],
            "rejectedVoteCounts": [0, 0],
            "totalVoteCounts": [0, 0],
            "registeredVoters": [
                to_comma_seperated_num(total_registered_voters),
                100
            ],
            "electoralDistrict": electoral_district.areaName,
            "pollingDivision": polling_division.areaName
        }

        if self.submission.election.voteType == VoteTypeEnum.Postal:
            content["tallySheetCode"] = "PRE/30/PV"
            content["pollingDivision"] = "Postal"
            content["resultTitle"] = "Results of Electoral District %s (Postal)" % electoral_district.areaName
        else:
            content["pollingDivision"] = self.submission.area.areaName
            content["resultTitle"] = "Results of Electoral District %s - Polling Division %s" % (
                electoral_district.areaName,
                polling_division.areaName
            )

        candidate_wise_vote_count_result = self.candidate_wise_vote_count().all()
        vote_count_result = self.vote_count_query().one_or_none()

        for candidate_wise_valid_vote_count_result_item in candidate_wise_vote_count_result:
            content["data"].append([
                candidate_wise_valid_vote_count_result_item.candidateName,
                candidate_wise_valid_vote_count_result_item.partyAbbreviation,
                to_comma_seperated_num(candidate_wise_valid_vote_count_result_item.validVoteCount),
                to_percentage(candidate_wise_valid_vote_count_result_item.validVotePercentage)
            ])

        content["validVoteCounts"] = [
            to_comma_seperated_num(vote_count_result.validVoteCount),
            to_percentage(vote_count_result.validVoteCount * 100 / vote_count_result.totalVoteCount)
            if vote_count_result.totalVoteCount > 0 else ""
        ]

        content["rejectedVoteCounts"] = [
            to_comma_seperated_num(vote_count_result.rejectedVoteCount),
            to_percentage(vote_count_result.rejectedVoteCount * 100 / vote_count_result.totalVoteCount)
            if vote_count_result.totalVoteCount > 0 else ""
        ]

        content["totalVoteCounts"] = [
            to_comma_seperated_num(vote_count_result.totalVoteCount),
            to_percentage(vote_count_result.totalVoteCount * 100 / total_registered_voters)
        ]

        content["logo"] = convert_image_to_data_uri("static/Emblem_of_Sri_Lanka.png")

        html = render_template(
            'PRE_ALL_ISLAND_RESULTS.html',
            content=content
        )

        return html