Welcome to django-model-report’s documentation!¶
django-model-report is a Django application and library for reports integrated with highcharts.
Demo¶
http://django-model-report.herokuapp.com
User Guide¶
Installation¶
django-model-report is on the Python Package Index (PyPI), so it can be installed with standard Python tools like pip or easy_install.:
$ pip install django-model-report
Add the
model_report
directory to your Python path.Add
model_report
to yourINSTALLED_APPS
setting.Create file “reports.py” within any application directory (just like admin.py).
Edit the file “reports.py” and register your reports like this:
from anyapp.models import AnyModel from model_report.report import reports, ReportAdmin class AnyModelReport(ReportAdmin): title = _('AnyModel Report Name') model = AnyModel fields = [ 'anymodelfield', ] list_order_by = ('anymodelfield',) type = 'report' reports.register('anymodel-report', AnyModelReport)
Activate your reports calling the autodiscover in
urls.py
(just like admin.py).:from model_report import report report.autodiscover()
Add reports urls.:
urlpatterns = patterns('', ... (r'', include('model_report.urls')), ... )
Example app¶
cd example && ./manage.py runserver
Username and password for admin are ‘admin’, ‘admin’.
Configuration¶
Extend your reports from model_report.report.ReportAdmin()
:
from model_report.report import ReportAdmin
class ReportExample(ReportAdmin):
pass
To configure the report see the model_report.report.ReportAdmin()
documentation
Contributing¶
Clone the repo and help to be better this app :)
Modules¶
Modules¶
highcharts¶
Highchart Module¶
__init__¶
-
model_report.highcharts.__init__.
HTMLEntitiesToUnicode
(text)¶ Converts HTML entities to unicode. For example ‘&’ becomes ‘&’.
-
model_report.highcharts.__init__.
unicodeToHTMLEntities
(text)¶ Converts unicode to HTML entities. For example ‘&’ becomes ‘&’.
export_pdf¶
report¶
-
class
model_report.report.
ReportAdmin
(parent_report=None, request=None)¶ Class to represent a Report.
-
base_template_name
= 'base.html'¶ Template file name to render the report.
-
chart_types
= ()¶ List of highchart types.
-
check_permissions
(request)¶ Override this method to another one raising Forbidden exceptions if you want to limit the access to the report
-
exports
= ('excel', 'pdf')¶ Alternative render report as “pdf” or “csv”.
-
extra_fields
= {}¶ Dictionary of fields that are aggregated to the query. Format {field_name: Field instance}
-
fields
= []¶ List of fields or lookup fields for query results to be listed.
-
get_column_names
(ignore_columns={})¶ Return the list of columns
-
get_query_set
(filter_kwargs)¶ Return the the queryset
-
get_title
()¶ Return the report title
-
group_totals
= {}¶ Dictionary with field name as key and function to calculate their values.
-
inlines
= []¶ List of other’s Report related to the main report.
-
list_filter
= ()¶ List of fields or lookup fields to filter data.
-
list_filter_queryset
= {}¶ ForeignKey custom queryset
-
list_filter_widget
= {}¶ Widget for list filter field
-
list_group_by
= ()¶ List of fields or lookup fields to group data.
-
list_order_by
= ()¶ List of fields or lookup fields to order data.
-
list_serie_fields
= ()¶ List of fields to group by results in chart.
-
model
= None¶ Primary django model to query.
-
override_field_choices
= {}¶ #TODO
-
override_field_filter_values
= {}¶ #TODO
-
override_field_formats
= {}¶ Dictionary with field name as key and function to parse their value after
override_field_values()
.
-
override_field_labels
= {}¶ Dictionary with field name as key and function to parse the column label.
-
override_field_values
= {}¶ Dictionary with field name as key and function to parse their original values.
override_field_values = { 'men': men_format, 'women': women_format }
-
override_group_value
= {}¶ #TODO
-
query_set
= None¶ #TODO
-
report_totals
= {}¶ Dictionary with field name as key and function to calculate their values.
-
template_name
= 'model_report/report.html'¶ Template file name to render the report.
-
title
= None¶ Title of the report.
-
type
= 'report'¶ “report” for only report and “chart” for report and chart graphic results.
-
-
class
model_report.report.
ReportClassManager
¶ Class to handle registered reports class.
-
model_report.report.
autodiscover
(module_name='reports.py')¶ Auto-discover INSTALLED_APPS report.py modules and fail silently when not present. Borrowed form django.contrib.admin
-
model_report.report.
cache_return
(fun)¶ Usages of this decorator have been removed from the ReportAdmin base class.
Caching method returns gets in the way of customization at the implementation level now that report instances can be modified based on request data.
-
model_report.report.
get_model_name
(model)¶ Returns string name for the given model
-
model_report.report.
is_date_field
(field)¶ Returns True if field is DateField or DateTimeField, otherwise False
utils¶
-
class
model_report.utils.
ReportRow
¶ Class to represent report rows
Attributes:
is_total
- defined as True if row is a group total row or report total rowis_caption
- TODO
-
get_css_class
()¶ Render css classes to this row into html representation
-
is_value
()¶ Evaluate True if the row is a normal row or not
-
class
model_report.utils.
ReportValue
(value)¶ Class to represent cells values for report rows
Attributes:
value
- real value from databaseis_report_total
- defined as True if value is for showing in report total rowis_group_total
- defined as True if value is for showing in group total rowis_value
- defined as True if value is for showing in normal row
-
format
(value, instance)¶ Format the value instance.
-
text
()¶ Render as text the value. This function also format the value.
-
model_report.utils.
avg_column
(values)¶ Average values for any column
-
model_report.utils.
base_label
(report, field)¶ Basic label
-
model_report.utils.
count_column
(values)¶ Count values for any column
-
model_report.utils.
date_format
(value, instance)¶ Format cell value to friendly date string
-
model_report.utils.
round_format
(value, instance)¶ Format value to render with 2 decimal places
-
model_report.utils.
sum_column
(values)¶ Sum values for any column
-
model_report.utils.
usd_format
(value, instance)¶ Format cell value to money
-
model_report.utils.
yesno_format
(value, instance)¶ Format boolean value to render Yes or No if True or False
widgets¶
-
class
model_report.widgets.
RangeField
(field_class, widget=<class 'django.forms.widgets.TextInput'>, *args, **kwargs)¶ Field to filter date values by range.
-
class
model_report.widgets.
RangeWidget
(widget, *args, **kwargs)¶ Render 2 inputs with vDatepicker class in order to select a date range.