Path: geraldo.Report
This is the report main class. Every report must inherit or be an instance of this class. It supports some bands and report definitions.
You can also override some methods to customize some things.
Data source
Report properties
Report page dimensions
Report bands
A report band must be a class inherited from ReportBand or an instance of ReportBand or a class inherited from ReportBand
Report composition
Look & feel
Methods
format_date(date, expression)
get_objects_list()
generate_by(generator_class, *args, **kwargs)
This is the method used to generate a report to file. Report object is just an abstraction of how report must be like. When generating it to a real file, with real list of objects, you must generate using an generator - a classe from geraldo.generators package.
Example:
>>> report = MyReport(queryset=['Rio','London','Beijing']) >>> from geraldo.generators import PDFGenerator >>> report.generate_by(PDFGenerator, filename='test.pdf')
generate_under_process_by(generator_class, *args, **kwargs)
Do the same generate_by doest, but uses multiprocessing Process instance to run it. This means it will use a new process to generate the file(s) and will use better the available resources of multi-core servers. In most of cases, also helps to avoid memory consumming.
But there are servers configured with WSGI with no support to I/O when under separated process and this won’t work properly.
As all of us know, Python processing is by far a better way to work than threading, so, this helps to solve it.
Path: geraldo.SubReport
Class to be used for subreport objects. It doesn’t need to be inherited.
Attributes
queryset_string - must be a string to create a Python-compatible queryset.
Examples:
- ‘%(object)s.user_permissions.all()’
- ‘%(object)s.groups.all()’
- ‘Message.objects.filter(user=%(object)s)’
- ‘Message.objects.filter(user__id=%(object)s.id)’
visible - Default: True
Set to False if you want to make it not visible.
Report bands
A report band must be a class inherited from ReportBand or an instance of ReportBand or a class inherited from ReportBand
Methods
Path: geraldo.ReportBand
A band is a horizontal area in the report. It can be used to print things on the top, on summary, on page header, on page footer or one time per object from queryset.
Attributes
name - Default: None
height - Default: 1*cm
width - Default: None
visible - Default: True
Set to False if you want to make it not visible.
borders - Default: {‘top’: None, ‘right’: None, ‘bottom’: None, ‘left’: None, ‘all’: None}
elements - Default: []
child_bands - Default: []
force_new_page - Default: False
default_style - Default: None
margin_top - Default: 0
margin_bottom - Default: 0
auto_expanded_height - Default: False
Use ‘auto_expanded_height’ to make flexible bands to fit their heights to their elements.
Path: geraldo.DetailBand
An extension of ReportBand. The only difference is that this class supports more attributes, specific to detail bands.
Attributes
name - Default: None
margin_left - Default: 0
margin_right - Default: 0
display_inline - Default: False
When you use display_inline with True value and width with a valid value, the generator will try to align the detail band instances in the same way that HTML does with inline displaying of left floating elements: it will keep each detail band to the right of the last one if there is width available.
This is useful for label reports.
Path: geraldo.ReportGroup
This a report grouper class. A report can be grouped to multiple levels by attribute values.
Attributes
Report bands
A report band must be a class inherited from ReportBand or an instance of ReportBand or a class inherited from ReportBand