shuup.reports package

Submodules

shuup.reports.apps module

class shuup.reports.apps.AppConfig(*args, **kwargs)[source]

Bases: shuup.apps.AppConfig

name = 'shuup.reports'
provides = {'admin_module': ['shuup.reports.admin_module:ReportsAdminModule'], 'report_writer_populator': ['shuup.reports.writer.populate_default_writers']}

shuup.reports.forms module

class shuup.reports.forms.DateRangeChoices[source]

Bases: enumfields.enums.Enum

An enumeration.

CUSTOM = 'custom'
TODAY = 'today'
RUNNING_WEEK = 'running_week'
RUNNING_MONTH = 'running_month'
THIS_WEEK = 'this_week'
THIS_MONTH = 'this_month'
THIS_YEAR = 'this_year'
ALL_TIME = 'all_time'
class shuup.reports.forms.ShuupReportForm(*args, **kwargs)[source]

Bases: django.forms.forms.Form

get_report_instance(request=None)[source]
Return type:shuup.reports.reporter.base.ShuupReportBase
base_fields = OrderedDict([('report', <django.forms.fields.CharField object>), ('writer', <django.forms.fields.ChoiceField object>), ('force_download', <django.forms.fields.BooleanField object>)])
declared_fields = OrderedDict([('report', <django.forms.fields.CharField object>), ('writer', <django.forms.fields.ChoiceField object>), ('force_download', <django.forms.fields.BooleanField object>)])
media
class shuup.reports.forms.BaseReportForm(*args, **kwargs)[source]

Bases: shuup.reports.forms.ShuupReportForm

clean()[source]
base_fields = OrderedDict([('report', <django.forms.fields.CharField object>), ('writer', <django.forms.fields.ChoiceField object>), ('force_download', <django.forms.fields.BooleanField object>), ('shop', <django.forms.fields.ChoiceField object>), ('date_range', <enumfields.forms.EnumChoiceField object>), ('start_date', <django.forms.fields.DateTimeField object>), ('end_date', <django.forms.fields.DateTimeField object>)])
declared_fields = OrderedDict([('report', <django.forms.fields.CharField object>), ('writer', <django.forms.fields.ChoiceField object>), ('force_download', <django.forms.fields.BooleanField object>), ('shop', <django.forms.fields.ChoiceField object>), ('date_range', <enumfields.forms.EnumChoiceField object>), ('start_date', <django.forms.fields.DateTimeField object>), ('end_date', <django.forms.fields.DateTimeField object>)])
media

shuup.reports.report module

class shuup.reports.report.ShuupReportBase(**kwargs)[source]

Bases: object

title = ''
description = ''
identifier = ''
filename_template = None
icon = 'fa-money'
queryset_row_limit = 2000
form_class

alias of BaseReportForm

classmethod get_name()[source]
classmethod get_title()[source]
classmethod get_description()[source]
classmethod is_available(request)[source]
ensure_texts()[source]

Ensure that lazy objects are forced as texts

get_return_data(data, has_totals=True)[source]
dict_getter(c, datum)[source]
cls_getter(c, datum)[source]
read_datum(datum)[source]
get_totals(data)[source]
shuup.reports.report.get_report_class(name, request)[source]
shuup.reports.report.get_report_classes(request=None, provides_key='reports')[source]

shuup.reports.settings module

shuup.reports.settings.DEFAULT_REPORTS_ITEM_LIMIT = 2000

Defines the maximum number of items that will be rendered by a report

shuup.reports.utils module

shuup.reports.utils.get_empty_data(schema, data, message)[source]
shuup.reports.utils.get_error_data(schema, sales_data)[source]
shuup.reports.utils.get_first_day_of_the_current_week(today_start)[source]
shuup.reports.utils.parse_date_range_preset(value)[source]
shuup.reports.utils.parse_date_range(value)[source]

shuup.reports.writer module

class shuup.reports.writer.ReportWriter[source]

Bases: object

content_type = None
extension = None
inline = False
writer_type = 'base'
write_heading(text)[source]
write_text(text)[source]
write_data_table(report, report_data, has_totals=True)[source]
write_template(template_name, env)[source]
next_page()[source]
get_rendered_output()[source]
render_report(report, inline=False)[source]

Renders given report

Parameters:report
Returns:
Return type:
get_response(report)[source]

Returns downloadable file response

Parameters:report
Returns:
Return type:
get_filename(report)[source]
class shuup.reports.writer.ExcelReportWriter[source]

Bases: shuup.reports.writer.ReportWriter

content_type = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
extension = '.xlsx'
writer_type = 'excel'
next_page()[source]
write_data_table(report, report_data, has_totals=True)[source]
write_page_heading(text)[source]
write_heading(text)[source]
write_text(text)[source]
get_rendered_output()[source]
class shuup.reports.writer.HTMLReportWriter[source]

Bases: shuup.reports.writer.ReportWriter

content_type = 'text/html; charset=UTF-8'
extension = '.html'
writer_type = 'html'
INLINE_TEMPLATE = '<style type="text/css">%(style)s</style>\n %(body)s'
TEMPLATE = '<html>\n<head>\n<meta charset="UTF-8">\n<title>%(title)s</title>\n%(extrahead)s\n</head><style type="text/css">%(style)s</style>\n %(body)s</html>'
styles = '@page { prince-shrink-to-fit: auto }'
extra_header = ''
next_page()[source]
write_data_table(report, report_data, has_totals=True)[source]
write_page_heading(text)[source]
write_heading(text)[source]
write_text(text)[source]
write_tag(tag, text)[source]
get_rendered_output()[source]
set_extra(extrastring)[source]
set_style(stylestring)[source]
write_template(template_name, env)[source]
class shuup.reports.writer.PDFReportWriter[source]

Bases: shuup.reports.writer.HTMLReportWriter

content_type = 'application/pdf'
extension = '.pdf'
writer_type = 'pdf'
get_rendered_output()[source]
class shuup.reports.writer.JSONReportWriter[source]

Bases: shuup.reports.writer.ReportWriter

content_type = 'application/json'
extension = '.json'
writer_type = 'json'
write_data_table(report, report_data, has_totals=True)[source]
write_heading(text)[source]
write_text(text)[source]
get_rendered_output()[source]
class shuup.reports.writer.PprintReportWriter[source]

Bases: shuup.reports.writer.JSONReportWriter

content_type = 'text/plain'
extension = '.txt'
writer_type = 'pprint'
get_rendered_output()[source]
class shuup.reports.writer.ReportWriterPopulator[source]

Bases: object

A class which populates the report writers map.

report_writers_map = {'html': <class 'shuup.reports.writer.HTMLReportWriter'>, 'pdf': <class 'shuup.reports.writer.PDFReportWriter'>, 'json': <class 'shuup.reports.writer.JSONReportWriter'>, 'pprint': <class 'shuup.reports.writer.PprintReportWriter'>, 'excel': <class 'shuup.reports.writer.ExcelReportWriter'>}
populate()[source]

Iterate over all report_writer_populator provides to fill/update the report writer map

register(writer_name, writer_class)[source]

Register a report writer for use.

If a writer with same name already exists, it will be overwriten.

Parameters:
  • writer_name (str) – the unique name of the writer
  • writer_class (ReportWriter) – the report writer class
populated_map

Returns the populated map.

shuup.reports.writer.get_writer_names()[source]

Get the registered writer names.

shuup.reports.writer.get_writer_instance(writer_name)[source]

Get a report writer instance by name.

Parameters:writer_name (str) – the name of the report writer
Return type:ReportWriter
shuup.reports.writer.populate_default_writers(writer_populator)[source]

Populate the default report writers.

Module contents