def report(self): config = self.report_config if config.get('sf') == 'sf5': return DistrictFunctionalityReport(self.request, domain=self.domain) elif config.get('sf') == 'sf4': return BlockLevelAFReport(self.request, domain=self.domain) elif config.get('sf') == 'sf3': return BlockLevelMonthReport(self.request, domain=self.domain) elif config.get('sf') == 'sf2': return ASHAFacilitatorsReport(self.request, domain=self.domain) else: return ASHAFunctionalityChecklistReport(self.request, domain=self.domain)
def rows(self): rows = [[column.header] for column in self.model.columns[2:]] rows.append( [_("<b>Total number of ASHAs who did not report/not known</b>")]) last_row = [_("<b>Total Number of ASHAs under each Facilitator</b>")] sums = [0] * len(rows) total = 0 sum_row_10 = 0 denom_row_10 = 0 for af in self.get_afs_for_block(): self.request_params['hierarchy_af'] = af[1] q = self.request.GET.copy() q['hierarchy_af'] = af[1] self.request.GET = q rs, afs_count = BlockLevelMonthReport(self.request, domain=self.domain).rows total += afs_count last_row.append(format_datatables_data(afs_count, afs_count)) for index, row in enumerate(rs): rows[index].append(row[-1]) if index == 10: numbers = re.split('/|\s|%', row[-1]['html']) sum_row_10 += int(numbers[0]) denom_row_10 += int(numbers[1]) else: sums[index] += float(row[-1]['sort_key']) for index, sum in enumerate(sums): if index == 10: try: percent = sum_row_10 * 100 / denom_row_10 except ZeroDivisionError: percent = 0 html = "{0}/{1} ({2}%)".format(sum_row_10, denom_row_10, percent) rows[index].append(format_datatables_data(html, percent)) else: rows[index].append(format_datatables_data(sum, sum)) last_row.append(format_datatables_data(total, total)) rows.append(last_row) return rows, total
def test_block_level_month_report(self, mock_run_query): mock = MagicMock() mock.couch_user = self.user mock.GET = { 'lang': '', 'sf': 'sf3', 'startdate': '2018-01-01', 'enddate': '2018-01-31', 'hierarchy_af': '646eb23165f2f3ee9966b0512efc9494', 'month': '01', 'year': '2018', } block_level_month_report = BlockLevelMonthReport(request=mock, domain=DOMAIN) rows = block_level_month_report.rows expected = ( [ [ 'Newborn visits within first day of birth in case of home deliveries', {'sort_key': 1, 'html': 1}, '--', '--', {'sort_key': '0', 'html': '0'} ], [ 'Set of home visits for newborn care as specified in the HBNC guidelines<br/>' '(six visits in case of Institutional delivery and seven in case of a home delivery)', {'sort_key': 10, 'html': 10}, '--', '--', {'sort_key': '3', 'html': '3'} ], [ 'Attending VHNDs/Promoting immunization', {'sort_key': 14, 'html': 14}, '--', '--', {'sort_key': '5', 'html': '5'} ], [ 'Supporting institutional delivery', {'sort_key': 14, 'html': 14}, '--', '--', {'sort_key': '5', 'html': '5'} ], [ 'Management of childhood illness - especially diarrhea and pneumonia', {'sort_key': 11, 'html': 11}, '--', '--', {'sort_key': '4', 'html': '4'} ], [ 'Household visits with nutrition counseling', {'sort_key': 5, 'html': 5}, '--', '--', {'sort_key': '2', 'html': '2'} ], [ 'Fever cases seen/malaria slides made in malaria endemic area', {'sort_key': 0, 'html': 0}, '--', '--', {'sort_key': '0', 'html': '0'} ], [ 'Acting as DOTS provider', {'sort_key': 0, 'html': 0}, '--', '--', {'sort_key': '0', 'html': '0'} ], [ 'Holding or attending village/VHSNC meeting', {'sort_key': 0, 'html': 0}, '--', '--', {'sort_key': '0', 'html': '0'} ], [ 'Successful referral of the IUD, female sterilization or male sterilization cases ' 'and/or providing OCPs/Condoms', {'sort_key': 14, 'html': 14}, '--', '--', {'sort_key': '5', 'html': '5'} ], [ '<b>Total number of ASHAs who are functional on at least 60% of the tasks</b>', {'sort_key': 86.66666666666667, 'html': '13/15 (86%)'}, {'sort_key': 0.0, 'html': '0/0 (0%)'}, {'sort_key': 0.0, 'html': '0/0 (0%)'}, {'sort_key': 28.88888888888889, 'html': '4/15 (28%)'} ], [ '<b>Total number of ASHAs who did not report/not known</b>', {'sort_key': 17, 'html': 17}, {'sort_key': 17, 'html': 17}, {'sort_key': 2, 'html': 2}, {'sort_key': '12', 'html': '12'} ] ], 17 ) self.assertEqual(len(rows), len(expected)) self.assertEqual(len(rows[0]), len(expected[0])) for i in range(len(rows[0])): self.assertEqual(len(rows[0][i]), len(expected[0][i])) for record in expected[0][i]: self.assertIn(record, rows[0][i])