Ejemplo n.º 1
0
    def calculate_total_row(self, rows):
        conventure = ConventureData(self.config)
        if self.config['startdate'].month != self.config['enddate'].month:
            conventure_data_rows = conventure.calculate_total_row(conventure.rows)
            total = conventure_data_rows[3] if conventure_data_rows else 0
        else:
            conventure_data_rows = conventure.rows
            total = conventure_data_rows[0][2]["html"] if conventure_data_rows else 0

        def get_value(x):
            """x can be a value or a sort_key/html dict"""
            return x["sort_key"] if isinstance(x, dict) else x

        for row in rows:
            value = 1 if any(get_value(x) for x in row[1:]) else 0
            row.append({'sort_key': value, 'html': value})

        total_row = list(calculate_total_row(rows))

        taux_rapture_row = ["(%s/%s) %s" % (x, total, self.percent_fn(total, x)) for x in total_row]

        if total_row:
            total_row[0] = 'Total'

        if taux_rapture_row:
            taux_rapture_row[0] = 'Taux rupture'

        rows.append(total_row)

        return taux_rapture_row
Ejemplo n.º 2
0
    def rows(self):
        startdate = self.datespan.startdate
        enddate = self.datespan.enddate

        old_data = self.data
        rows = []
        for loc_key in self.keys:
            selected_disease = self.request.GET.get('test_type_disease', '')
            selected_disease = selected_disease.split(':') if selected_disease else None
            diseases = [selected_disease[0]] if selected_disease else self.diseases["ids"]
            for disease in diseases:
                row = [capitalize_fn(x) for x in loc_key]
                disease_names = self.diseases["names"]
                index = self.diseases['ids'].index(disease)
                row.append(disease_names[index])
                for n, day in enumerate(self.daterange(startdate, enddate)):
                    temp_key = [loc for loc in loc_key]
                    temp_key.append(datetime.strptime(day, "%Y-%m-%d").date())
                    temp_key.append(disease)
                    keymap = old_data.get(tuple(temp_key), None)
                    day_count = (keymap["day_count"] if keymap else None)
                    row.append(format_datatables_data(day_count or self.no_value, day_count or 0))
                rows.append(row)

        self.total_row = calculate_total_row(rows)
        self.total_row[0] = 'Total'
        return rows
Ejemplo n.º 3
0
    def rows(self):
        test_lots_map = self.test_lots_map
        selected_tests = self.selected_tests
        old_data = self.data
        rows = []
        for loc_key in self.keys:
            row = [capitalize_fn(loc) for loc in loc_key]
            for test in selected_tests:
                test_lots = test_lots_map.get(test, None)
                if not test_lots:
                    row.append(format_datatables_data(self.no_value, 0))
                    continue
                total_test_count = 0
                for lot_number in test_lots:
                    temp_key = [loc for loc in loc_key] + [test, lot_number]
                    data_map = old_data.get(tuple(temp_key), None)
                    lot_count = data_map["lot_count"] if data_map else None
                    row.append(format_datatables_data(lot_count or self.no_value, lot_count or 0))
                    total_test_count += data_map["lot_count"] if data_map else 0
                row.append(format_datatables_data(total_test_count or self.no_value, total_test_count or 0))
            rows.append(row)

        self.total_row = calculate_total_row(rows)
        self.total_row[0] = 'Total'
        return rows
Ejemplo n.º 4
0
    def rows(self):
        startdate = self.datespan.startdate
        enddate = self.datespan.enddate

        old_data = self.data
        rows = []
        for loc_key in self.keys:
            selected_disease = self.request.GET.get('test_type_disease', '')
            selected_disease = selected_disease.split(
                ':') if selected_disease else None
            diseases = [selected_disease[0]
                        ] if selected_disease else self.diseases["ids"]
            for disease in diseases:
                row = [capitalize_fn(x) for x in loc_key]
                disease_names = self.diseases["names"]
                index = self.diseases['ids'].index(disease)
                row.append(disease_names[index])
                for n, day in enumerate(self.daterange(startdate, enddate)):
                    temp_key = [loc for loc in loc_key]
                    temp_key.append(iso_string_to_date(day))
                    temp_key.append(disease)
                    keymap = old_data.get(tuple(temp_key), None)
                    day_count = (keymap["day_count"] if keymap else None)
                    row.append(
                        format_datatables_data(day_count or self.no_value,
                                               day_count or 0))
                rows.append(row)

        self.total_row = calculate_total_row(rows)
        self.total_row[0] = 'Total'
        return rows
Ejemplo n.º 5
0
    def rows(self):
        test_lots_map = self.test_lots_map
        selected_tests = self.selected_tests
        old_data = self.data
        rows = []
        for loc_key in self.keys:
            row = [capitalize_fn(loc) for loc in loc_key]
            for test in selected_tests:
                test_lots = test_lots_map.get(test, None)
                if not test_lots:
                    row.append(format_datatables_data(self.no_value, 0))
                    continue
                total_test_count = 0
                for lot_number in test_lots:
                    temp_key = [loc for loc in loc_key] + [test, lot_number]
                    data_map = old_data.get(tuple(temp_key), None)
                    lot_count = data_map["lot_count"] if data_map else None
                    row.append(
                        format_datatables_data(lot_count or self.no_value,
                                               lot_count or 0))
                    total_test_count += data_map["lot_count"] if data_map else 0
                row.append(
                    format_datatables_data(total_test_count or self.no_value,
                                           total_test_count or 0))
            rows.append(row)

        self.total_row = calculate_total_row(rows)
        self.total_row[0] = 'Total'
        return rows
Ejemplo n.º 6
0
    def calculate_total_row(self, rows):
        conventure = ConventureData(self.config)
        if self.config['startdate'].month != self.config['enddate'].month:
            conventure_data_rows = conventure.calculate_total_row(conventure.rows)
            total = conventure_data_rows[3] if conventure_data_rows else 0
        else:
            conventure_data_rows = conventure.rows
            total = conventure_data_rows[0][2]["html"] if conventure_data_rows else 0

        for row in rows:
            row.append(dict(sort_key=1L if any([x["sort_key"] for x in row[1:]]) else 0L,
                            html=1L if any([x["sort_key"] for x in row[1:]]) else 0L))

        total_row = list(calculate_total_row(rows))

        taux_rapture_row = ["(%s/%s) %s" % (x, total, self.percent_fn(total, x)) for x in total_row]

        if total_row:
            total_row[0] = 'Total'

        if taux_rapture_row:
            taux_rapture_row[0] = 'Taux rupture'

        rows.append(total_row)

        return taux_rapture_row
Ejemplo n.º 7
0
    def calculate_total_row(self, rows):
        conventure = ConventureData(self.config)
        if self.config['startdate'].month != self.config['enddate'].month:
            conventure_data_rows = conventure.calculate_total_row(
                conventure.rows)
            total = conventure_data_rows[3] if conventure_data_rows else 0
        else:
            conventure_data_rows = conventure.rows
            total = conventure_data_rows[0][2][
                "html"] if conventure_data_rows else 0

        for row in rows:
            row.append(
                dict(sort_key=1L if any([x["sort_key"]
                                         for x in row[1:]]) else 0L,
                     html=1L if any([x["sort_key"] for x in row[1:]]) else 0L))

        total_row = list(calculate_total_row(rows))

        taux_rapture_row = [
            "(%s/%s) %s" % (x, total, self.percent_fn(total, x))
            for x in total_row
        ]

        if total_row:
            total_row[0] = 'Total'

        if taux_rapture_row:
            taux_rapture_row[0] = 'Taux rupture'

        rows.append(total_row)

        return taux_rapture_row
Ejemplo n.º 8
0
    def get_report_context(self, data_provider):

        total_row = []
        charts = []
        self.data_source = data_provider
        if self.needs_filters:
            headers = []
            rows = []
        else:
            if isinstance(data_provider, (ConventureData, RecapPassageData, DureeData, PPSAvecDonnees,
                                          RecouvrementDesCouts)):
                columns = [c.data_tables_column for c in data_provider.columns]
                headers = DataTablesHeader(*columns)
                rows = data_provider.rows
            elif isinstance(data_provider, DispDesProducts):
                headers = data_provider.headers
                rows = data_provider.rows
            else:
                self.model = data_provider
                headers = self.headers
                rows = self.rows
            if isinstance(data_provider, TauxDeRuptures):
                headers.add_column(DataTablesColumn("Au moins 1 produit"))
            if data_provider.show_total:
                if data_provider.custom_total_calculate:
                    total_row = data_provider.calculate_total_row(rows)
                else:
                    total_row = list(calculate_total_row(rows))
                    if total_row:
                        total_row[0] = 'Total'

            if data_provider.show_charts:
                charts = list(self.get_chart(
                    total_row,
                    headers,
                    x_label=data_provider.chart_x_label,
                    y_label=data_provider.chart_y_label,
                    has_total_column=False
                ))

        context = dict(
            report_table=dict(
                title=data_provider.title,
                slug=data_provider.slug,
                headers=headers,
                rows=rows,
                total_row=total_row,
                default_rows=self.default_rows,
                datatables=data_provider.datatables,
                start_at_row=0,
                fix_column=data_provider.fix_left_col
            ),
            charts=charts,
            chart_span=12
        )

        return context
    def get_report_context(self, data_provider):

        total_row = []
        charts = []
        self.data_source = data_provider
        if self.needs_filters:
            headers = []
            rows = []
        else:
            if isinstance(data_provider, ConventureData) or isinstance(data_provider, RecapPassageData)\
                    or isinstance(data_provider, DureeData):
                columns = [c.data_tables_column for c in data_provider.columns]
                headers = DataTablesHeader(*columns)
                rows = data_provider.rows
            elif isinstance(data_provider, DispDesProducts):
                headers = data_provider.headers
                rows = data_provider.rows
            else:
                self.model = data_provider
                headers = self.headers
                rows = self.rows
            if isinstance(data_provider, TauxDeRuptures):
                headers.add_column(DataTablesColumn("Au moins 1 produit"))
            if data_provider.show_total:
                if data_provider.custom_total_calculate:
                    total_row = data_provider.calculate_total_row(rows)
                else:
                    total_row = list(calculate_total_row(rows))
                    if total_row:
                        total_row[0] = 'Total'

            if data_provider.show_charts:
                charts = list(self.get_chart(
                    total_row,
                    headers,
                    x_label=data_provider.chart_x_label,
                    y_label=data_provider.chart_y_label,
                    has_total_column=False
                ))

        context = dict(
            report_table=dict(
                title=data_provider.title,
                slug=data_provider.slug,
                headers=headers,
                rows=rows,
                total_row=total_row,
                default_rows=self.default_rows,
                datatables=data_provider.datatables,
                start_at_row=0,
                fix_column=data_provider.fix_left_col
            ),
            charts=charts,
            chart_span=12
        )

        return context
    def rows(self):
        def _format_pps_restant(row):
            if row[-1] < 0:
               row[-1] = 0
            return row

        rows = [ _format_pps_restant(row) for row in self.model.rows]
        self.total_row = list(calculate_total_row(rows))
        return rows
Ejemplo n.º 11
0
 def rows(self):
     rows = super(ClosedMotherCasesBreakdown, self).rows
     total_row = calculate_total_row(rows)
     total = total_row[-1] if total_row else 0
     for row in rows:
         from custom.world_vision import REASON_FOR_CLOSURE_MAPPING
         row[0] = REASON_FOR_CLOSURE_MAPPING[row[0]]
         percent = self.percent_fn(total, row[1]['html'])
         row.append({'sort_key': percent, 'html': percent})
     return rows
Ejemplo n.º 12
0
 def rows(self):
     rows = super(ClosedMotherCasesBreakdown, self).rows
     total_row = calculate_total_row(rows)
     total = total_row[-1] if total_row else 0
     for row in rows:
         from custom.world_vision import REASON_FOR_CLOSURE_MAPPING
         row[0] = REASON_FOR_CLOSURE_MAPPING[row[0]]
         percent = self.percent_fn(total, row[1]['html'])
         row.append({'sort_key':percent, 'html': percent})
     return rows
Ejemplo n.º 13
0
    def get_report_context(self, data_provider):

        total_row = []
        charts = []
        if self.needs_filters:
            headers = []
            rows = []
        else:
            if isinstance(data_provider, ConventureData):
                columns = [c.data_tables_column for c in data_provider.columns]
                headers = DataTablesHeader(*columns)
                rows = data_provider.rows
            elif isinstance(data_provider, DispDesProducts):
                headers = data_provider.headers
                rows = data_provider.rows
            else:
                self.model = data_provider
                headers = self.headers
                rows = self.rows
            if data_provider.show_total:
                if data_provider.custom_total_calculate:
                    total_row = data_provider.calculate_total_row(rows)
                else:
                    total_row = list(calculate_total_row(rows))
                    if total_row:
                        total_row[0] = "Total"

            if data_provider.show_charts:
                charts = list(
                    self.get_chart(
                        total_row,
                        headers,
                        x_label=data_provider.chart_x_label,
                        y_label=data_provider.chart_y_label,
                        has_total_column=False,
                    )
                )

        context = dict(
            report_table=dict(
                title=data_provider.title,
                slug=data_provider.slug,
                headers=headers,
                rows=rows,
                total_row=total_row,
                default_rows=self.default_rows,
                datatables=data_provider.datatables,
                start_at_row=0,
                fix_column=data_provider.fix_left_col,
            ),
            charts=charts,
            chart_span=12,
        )

        return context
Ejemplo n.º 14
0
 def _get_rows(self, dict, rows):
     total_row = calculate_total_row(rows)
     total = total_row[-1] if total_row else 0
     result = []
     for (k, v) in dict.iteritems():
         number = [row[1]['html'] for row in rows if row[0] == k]
         number = number[0] if number else 0
         result.append([{'sort_key':v, 'html': v}, {'sort_key':number, 'html': number},
                {'sort_key':self.percent_fn(total, number), 'html': self.percent_fn(total, number)}
         ])
     return result
Ejemplo n.º 15
0
 def _get_rows(self, dict, rows):
     total_row = calculate_total_row(rows)
     total = total_row[-1] if total_row else 0
     result = []
     for (k, v) in dict.iteritems():
         number = [row[1]['html'] for row in rows if row[0] == k]
         number = number[0] if number else 0
         result.append([{'sort_key':v, 'html': v}, {'sort_key':number, 'html': number},
                {'sort_key':self.percent_fn(total, number), 'html': self.percent_fn(total, number)}
         ])
     return result
Ejemplo n.º 16
0
    def get_report_context(self, data_provider):
        total_row = []
        charts = []
        self.data_source = data_provider
        if self.needs_filters:
            headers = []
            rows = []
        else:
            headers = data_provider.headers
            rows = data_provider.rows

            if data_provider.show_total:
                if data_provider.custom_total_calculate:
                    total_row = data_provider.calculate_total_row(rows)
                else:
                    total_row = list(calculate_total_row(rows))
                if total_row:
                    total_row[0] = data_provider.total_row_name

            if data_provider.show_charts:
                charts = list(
                    self.get_chart(
                        rows,
                        x_label=data_provider.chart_x_label,
                        y_label=data_provider.chart_y_label,
                        data_provider=data_provider,
                    )
                )

        context = dict(
            report_table=dict(
                title=data_provider.title,
                slug=data_provider.slug,
                headers=headers,
                rows=rows,
                total_row=total_row,
                datatables=data_provider.datatables,
                start_at_row=0,
                fix_column=data_provider.fix_left_col,
                accordion_start=data_provider.accordion_start,
                accordion_end=data_provider.accordion_end,
                chart_only=data_provider.chart_only and self.is_mixed_report,
                table_only=data_provider.table_only and self.is_mixed_report,
                is_mixed_report=self.is_mixed_report,
            ),
            charts=charts,
            chart_span=12,
        )
        return context
Ejemplo n.º 17
0
    def get_report_context(self, data_provider):
        total_row = []
        charts = []
        self.data_source = data_provider
        if self.needs_filters:
            headers = []
            rows = []
        else:
            headers = data_provider.headers
            rows = data_provider.rows

            if data_provider.show_total:
                if data_provider.custom_total_calculate:
                    total_row = data_provider.calculate_total_row(rows)
                else:
                    total_row = list(calculate_total_row(rows))
                if total_row:
                    total_row[0] = data_provider.total_row_name

            if data_provider.show_charts:
                charts = list(
                    self.get_chart(rows,
                                   x_label=data_provider.chart_x_label,
                                   y_label=data_provider.chart_y_label,
                                   data_provider=data_provider))

        context = dict(report_table=dict(
            title=data_provider.title,
            slug=data_provider.slug,
            headers=headers,
            rows=rows,
            total_row=total_row,
            datatables=data_provider.datatables,
            start_at_row=0,
            fix_column=data_provider.fix_left_col,
            accordion_start=data_provider.accordion_start,
            accordion_end=data_provider.accordion_end,
            chart_only=data_provider.chart_only and self.is_mixed_report,
            table_only=data_provider.table_only and self.is_mixed_report,
            is_mixed_report=self.is_mixed_report),
                       charts=charts,
                       chart_span=12)
        return context
Ejemplo n.º 18
0
    def get_report_context(self, data_provider):
        headers = DataTablesHeader(
            *[c.data_tables_column for c in data_provider.columns])

        if self.needs_filters:
            rows = []
            charts = []
            total_row = []
        else:
            formatter = DataFormatter(
                TableDataFormat(data_provider.columns, no_value=self.no_value))
            rows = list(
                formatter.format(data_provider.data,
                                 keys=data_provider.keys,
                                 group_by=data_provider.group_by))
            charts = list(
                self.get_chart(
                    rows,
                    data_provider.columns,
                    x_label=data_provider.chart_x_label,
                    y_label=data_provider.chart_y_label,
                    has_total_column=data_provider.has_total_column))

            total_row = list(calculate_total_row(rows))
            if total_row:
                total_row[0] = 'Total'

        context = dict(report_table=dict(title=data_provider.title,
                                         headers=headers,
                                         rows=rows,
                                         total_row=total_row,
                                         default_rows=self.default_rows,
                                         datatables=True),
                       charts=charts,
                       chart_span=12)

        return context
Ejemplo n.º 19
0
    def get_report_context(self, data_provider):
        headers = DataTablesHeader(*[c.data_tables_column for c in data_provider.columns])

        if self.needs_filters:
            rows = []
            charts = []
            total_row = []
        else:
            formatter = DataFormatter(TableDataFormat(data_provider.columns, no_value=self.no_value))
            rows = list(formatter.format(data_provider.data, keys=data_provider.keys, group_by=data_provider.group_by))
            charts = list(self.get_chart(
                rows,
                data_provider.columns,
                x_label=data_provider.chart_x_label,
                y_label=data_provider.chart_y_label,
                has_total_column=data_provider.has_total_column
            ))

            total_row = list(calculate_total_row(rows))
            if total_row:
                total_row[0] = 'Total'

        context = dict(
            report_table=dict(
                title=data_provider.title,
                headers=headers,
                rows=rows,
                total_row=total_row,
                default_rows=self.default_rows,
                datatables=True
            ),
            charts=charts,
            chart_span=12
        )

        return context
Ejemplo n.º 20
0
 def calculate_total_row(self, rows):
     total_row = list(calculate_total_row(rows))
     if total_row and self.rows:
         total_row[0] = 'Moyenne Region'
         total_row[-1] = "%.2f" % (total_row[-1] / float(len(self.rows)))
     return total_row