def rows(self):
        def format_val(val):
            return self.no_value if val is None else val

        def avg(values, idx=None):
            sum = 0
            denom = 0
            for v in values:
                if idx == 10:
                    numbers = re.split(r'/|\s|%', v['html'])
                    sum += int(numbers[0])
                    if int(numbers[1]) > denom:
                        denom = int(numbers[1])
                else:
                    sum += v['sort_key'] if v is not None else 0
            mean = (float(sum) / float(len(values)))
            if idx == 10:
                try:
                    percent = mean * 100 / denom
                except ZeroDivisionError:
                    percent = 0
                html = "{0}/{1} ({2}%)".format(int(mean), int(denom), int(percent))
                return format_datatables_data(html, percent)
            mean = "%.0f" % mean
            return format_datatables_data(mean, mean)

        data = []
        config = self.report_config
        for i in range(0, 3):
            config['enddate'] = (
                config['startdate'] + relativedelta(months=1) - relativedelta(days=1)
            ).replace(hour=23, minute=59, second=59)
            for index, row_data in ASHAFacilitatorsData(config).data.items():
                data.append(row_data)
            config['startdate'] += relativedelta(months=1)

        rows = [[
            column.header,
            format_val(column.get_value(data[2])),
            format_val(column.get_value(data[1])),
            format_val(column.get_value(data[0])),
            avg([column.get_value(data[2]), column.get_value(data[1]), column.get_value(data[0])], idx)
        ] for idx, column in enumerate(self.model.columns[2:])]

        total = [self.model.columns[0].get_raw_value(d) for d in data]
        reporting = [self.model.columns[1].get_raw_value(d) for d in data]
        not_reporting = [format_datatables_data(i - (j or 0), i - (j or 0)) for i, j in zip(total, reporting)]

        rows.append([_("<b>Total number of ASHAs who did not report/not known</b>")] + not_reporting +
                    [avg(not_reporting)])
        return rows, sum(total) // len(total)
 def model(self):
     return ASHAFacilitatorsData(config=self.report_config)