Skip to content

Commit

Permalink
Update CSV importer to deal with ballot paper IDs
Browse files Browse the repository at this point in the history
  • Loading branch information
symroe committed Mar 31, 2022
1 parent 92bfdf5 commit f6ef4cb
Showing 1 changed file with 13 additions and 5 deletions.
18 changes: 13 additions & 5 deletions ynr/apps/bulk_adding/helpers.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import csv

from bulk_adding.models import RawPeople
from candidates.models import LoggedAction, raise_if_unsafe_to_delete
from candidates.models import LoggedAction, raise_if_unsafe_to_delete, Ballot
from candidates.models.db import EditType, ActionType
from candidates.views.version_data import get_change_metadata, get_client_ip
from parties.models import Party, PartyDescription
Expand Down Expand Up @@ -126,6 +126,8 @@ def __init__(self, file_name, election):

@property
def post_header_name(self):
if "ballot_paper_id" in self.header_rows:
return "ballot_paper_id"
POST_LABELS = [
"Electoral Area Name",
"Election Area",
Expand Down Expand Up @@ -159,6 +161,8 @@ def clean_area_name(self, name):
return name

def match_division_to_ballot(self, row):
if "ballot_paper_id" in row:
return Ballot.objects.get(ballot_paper_id=row["ballot_paper_id"])
post_name = self.clean_area_name(row[self.post_header_name])
for ballot in self.election.ballot_set.all():
print(self.clean_area_name(ballot.post.label), post_name)
Expand Down Expand Up @@ -211,23 +215,27 @@ def get_register_for_ballot(self, ballot):
def clean_party_name(self, name):
if name == "Ukip":
name = "UKIP"
return name
return name.lower()

def get_party_description(self, row, ballot):
register = self.get_register_for_ballot(ballot)
desc = self.clean_party_name(row[self.party_description_header_name])
try:
return PartyDescription.objects.get(
description=desc, party__register=register
description__iexact=desc, party__register=register
)
except PartyDescription.DoesNotExist:
try:
return PartyDescription.objects.get(
description__startswith="{} |".format(desc),
description__istartswith="{} |".format(desc),
party__register=register,
)
except PartyDescription.DoesNotExist:
return None
pass
try:
return Party.objects.get(name__iexact=desc).descriptions.first()
except Party.DoesNotExist:
return None

def get_party_id(self, row, ballot_model):
register = self.get_register_for_ballot(ballot_model)
Expand Down

0 comments on commit f6ef4cb

Please sign in to comment.