Report Generator API

The main class responsible generating the report and managing the flow

ReportGenerator

class slick_reporting.generator.ReportGenerator(report_model=None, main_queryset=None, start_date=None, end_date=None, date_field=None, q_filters=None, kwargs_filters=None, group_by=None, group_by_custom_querysets=None, group_by_custom_querysets_column_verbose_name=None, columns=None, time_series_pattern=None, time_series_columns=None, time_series_custom_dates=None, crosstab_field=None, crosstab_columns=None, crosstab_ids=None, crosstab_ids_custom_filters=None, crosstab_compute_remainder=None, swap_sign=False, show_empty_records=None, print_flag=False, doc_type_plus_list=None, doc_type_minus_list=None, limit_records=False, format_row_func=None, container_class=None, start_date_field_name=None, end_date_field_name=None)[source]

The main class responsible generating the report and managing the flow

Below are the basic needed attrs

report_model = None
queryset = None
date_field = ''
columns = None
group_by = None

Below are the needed attrs and methods for time series manipulation

time_series_pattern = ''
time_series_columns = None
get_custom_time_series_dates()[source]

Hook to get custom , maybe separated date periods :return: [ (date1,date2) , (date3,date4), …. ]

get_time_series_field_verbose_name(computation_class, date_period, index, series, pattern=None)[source]

Sent the column data to construct a verbose name. Default implementation is delegated to the ReportField.get_time_series_field_verbose_name (which is name + the end date %Y%m%d)

Parameters:
  • computation_class – the computation field_name
  • date_period – a tuple of (start_date, end_date)
Returns:

a verbose string

Below are the needed attrs and methods for crosstab manipulation

crosstab_field = None
crosstab_columns = None
crosstab_ids = None
crosstab_compute_remainder = True
get_crosstab_field_verbose_name(computation_class, model, id)[source]

Hook to change the crosstab field verbose name, default it delegate this function to the ReportField :param computation_class: ReportField Class :param model: the model name as string :param id: the current crosstab id :return: a verbose string

Below are the magical attrs

limit_records = None
swap_sign = False
field_registry_class = <slick_reporting.registry.ReportFieldRegistry object>

You can have a custom computation field locator! It only needs a get_field_by_name(string) and returns a ReportField`