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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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