Skip to content

Commit

Permalink
Fix logic for getting total votes per electrol race
Browse files Browse the repository at this point in the history
  • Loading branch information
JohnMwashuma committed Nov 7, 2024
1 parent 14af9ff commit 1d4b373
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 45 deletions.
11 changes: 5 additions & 6 deletions tally_ho/apps/tally/tests/views/test_get_json_results.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ def setUp(self):
@patch('tally_ho.apps.tally.views.reports.administrative_areas_reports.'
'results_queryset')
@patch('tally_ho.apps.tally.views.reports.administrative_areas_reports.'
'total_valid_votes_with_recon_forms_per_electrol_race')
@patch('tally_ho.apps.tally.views.reports.administrative_areas_reports.'
'total_valid_votes_with_no_recon_forms_per_electrol_race')
'get_total_valid_votes_per_electrol_race')
def test_get_results_success(
self, mock_no_recon, mock_with_recon, mock_results_queryset):
self,
mock_get_total_valid_votes_per_electrol_race,
mock_results_queryset):
mock_results_queryset.return_value = [
{
'candidate_number': 1,
Expand All @@ -47,8 +47,7 @@ def test_get_results_success(
'sub_con_name': 'Sub Con A',
}
]
mock_with_recon.return_value = 50
mock_no_recon.return_value = 50
mock_get_total_valid_votes_per_electrol_race.return_value = 100

request_data = json.dumps({'tally_id': self.tally.id})
response = self.client.get(self.url, {'data': request_data})
Expand Down
50 changes: 11 additions & 39 deletions tally_ho/apps/tally/views/reports/administrative_areas_reports.py
Original file line number Diff line number Diff line change
Expand Up @@ -539,30 +539,14 @@ def stations_and_centers_queryset(

return qs

def total_valid_votes_with_recon_forms_per_electrol_race(
def get_total_valid_votes_per_electrol_race(
tally_id,
electral_race_id,
):
total_valid_votes =\
ReconciliationForm.objects.filter(
result_form__tally__id=tally_id,
active=True,
result_form__ballot__electrol_race__id=electral_race_id,
entry_version=EntryVersion.FINAL,
).values('result_form__ballot__electrol_race__id').aggregate(
total_valid_votes=Sum('number_valid_votes')
).get('total_valid_votes')
return total_valid_votes or 0

def total_valid_votes_with_no_recon_forms_per_electrol_race(
tally_id,
electral_race_id,
):
electral_race_id
):
total_valid_votes =\
Result.objects.filter(
result_form__tally__id=tally_id,
active=True,
result_form__reconciliationform__isnull=True,
result_form__ballot__electrol_race__id=electral_race_id,
entry_version=EntryVersion.FINAL,
).values('result_form__ballot__electrol_race__id').aggregate(
Expand Down Expand Up @@ -1739,11 +1723,7 @@ def create_ppt_export(

valid_votes_per_electrol_race_id =\
{
id: total_valid_votes_with_recon_forms_per_electrol_race(
tally_id,
id
) +
total_valid_votes_with_no_recon_forms_per_electrol_race(
id: get_total_valid_votes_per_electrol_race(
tally_id,
id
) for id in electrol_race_ids
Expand Down Expand Up @@ -2179,11 +2159,7 @@ def get_results(request):
list(set([result.get('electrol_race_id') for result in qs]))
valid_votes_per_electrol_race_id =\
{
id: total_valid_votes_with_recon_forms_per_electrol_race(
tally_id,
id
) +
total_valid_votes_with_no_recon_forms_per_electrol_race(
id: get_total_valid_votes_per_electrol_race(
tally_id,
id
) for id in electrol_race_ids
Expand Down Expand Up @@ -3761,16 +3737,12 @@ def get_initial_queryset(self):
electrol_race_ids =\
list(set([result.get('electrol_race_id') for result in qs]))
valid_votes_per_electrol_race_id =\
{
id: total_valid_votes_with_recon_forms_per_electrol_race(
tally_id,
id
) +
total_valid_votes_with_no_recon_forms_per_electrol_race(
tally_id,
id
) for id in electrol_race_ids
}
{
id: get_total_valid_votes_per_electrol_race(
tally_id,
id
) for id in electrol_race_ids
}
results =\
[{
'candidate_name': result.get('candidate_name'),
Expand Down

0 comments on commit 1d4b373

Please sign in to comment.