Reference¶
onmydesk.models¶
Required models to handle and store generated reports.
-
class
onmydesk.models.Report(*args, **kwargs)[source]¶ Report model to store generated reports
-
process()[source]¶ Process this report. After processing the outputs will be stored at results. To access output results is recommended to use
results_as_list().
-
result_links¶ Returns a list with links to access report results.
Returns: List of links to access results Return type: list
-
results_as_list¶ Returns a list of output results stored in this model
Returns: List of results Return type: list
-
-
class
onmydesk.models.Scheduler(*args, **kwargs)[source]¶ Model used to schedule reports to be generated with some periodicity (every monday, from monday to friday, etc.)
-
get_processed_params(reference_date=None)[source]¶ Params to be used to process report
Parameters: reference_date (date) – Date to use as reference Returns: Dict with params Return type: dict
-
-
onmydesk.models.output_file_handler(filepath)[source]¶ Returns the output filepath (handled or not by an external function). This function tries to find a function handler in settings.ONMYDESK_FILE_HANDLER. It must receive a filepath and returns a new filepath (or url, e.g.) to be stored in the report register. It’s useful to handle the report results (move to other dirs ou to cloud).
Parameters: filepath (str) – File path to output generated by report. Returns: File path to output (processed or not by a external handler) Return type: str
onmydesk.utils¶
Module with common utilities to this package
onmydesk.core.datasets¶
-
class
onmydesk.core.datasets.BaseDataset[source]¶ An abstract representation of what must be a Dataset class.
It’s possible to use context management with datasets. To do this you must override methods
__enter__()to lock resources and__exit__()to free up them. E.g.:class MyDataset(BaseDataset): def iterate(self, params=None): return self.file.read() def __enter__(self): self.file = open('somefile.txt') def __exit__(self, type, value, traceback): self.file.close() with MyDataset() as mydataset: for row in mydataset.iterate(): print(row)
-
__exit__(type, value, traceback)[source]¶ Exit from context manager to free up some resource (for example).
-
__weakref__¶ list of weak references to the object (if defined)
-
-
class
onmydesk.core.datasets.SQLDataset(query, query_params=[], db_alias=None)[source]¶ A SQLDataset is used to run raw queries into database. E.g.:
with SQLDataset('SELECT * FROM users'): for row in mydataset.iterate(): print(row) # --> A OrderedDict with cols and values.
Note
It’s recomended to use instances of this class using with statement.
BE CAREFUL
Always use query_params from
__init__()to put dinamic values into the query. E.g.:# WRONG WAY: mydataset = SQLDataset('SELECT * FROM users where age > {}'.format(18)) # RIGHT WAY: mydataset = SQLDataset('SELECT * FROM users where age > %d', [18])
onmydesk.core.outputs¶
-
class
onmydesk.core.outputs.BaseOutput[source]¶ An abstract representation of an Output class.
We need to use instances of this classes with context manager. E.g.:
from onmydesk.core.outputs import XLSXOutput myout = XLSXOutput() with myout as output: output.header(['Name', 'Age']) output.out(['Alisson', 39]) output.out(['Joao', 16]) output.footer(['Total', 55]) print(output.filepath)
-
__weakref__¶ list of weak references to the object (if defined)
-
file_extension= None¶ File extension to be used on file name output. E.g.: ‘csv’
-
filepath= None¶ Filepath with output result which is filled by
process().
Output a footer content :param mixed content: Content to be written
-
gen_tmpfilename()[source]¶ Utility to be used to generate a temporary filename.
Returns: Temporary filepath. Return type: str
-
name= None¶ Name used to compose output filename
-
-
class
onmydesk.core.outputs.CSVOutput(*args, **kwargs)[source]¶ An output to generate CSV files (files with cols separated by comma).
-
class
onmydesk.core.outputs.TSVOutput(*args, **kwargs)[source]¶ An output to generate TSV files (files with cols separated by tabs).
onmydesk.core.reports¶
-
class
onmydesk.core.reports.BaseReport(params=None)[source]¶ An abstract representation of a report.
-
__init__(params=None)[source]¶ Parameters: params (dict) – Params to be used by report (a date range to fetch data from database, for example).
-
__weakref__¶ list of weak references to the object (if defined)
-
_write_content(outputs, items)[source]¶ Write a normal content in outputs
Parameters: - outputs (list) – A list of output objects.
- items (iterable) – Itens (rows) to be written in outputs.
Write a footer content in outputs
Parameters: outputs (list) – A list of output objects.
-
_write_header(outputs)[source]¶ Write a header in outputs
Parameters: outputs (list) – A list of output objects.
-
dataset¶ Returns: Dataset to be used by this report.
Report footer.
-
form= None¶ Django form class to enable user to fill some param.
-
header= None¶ Report header.
-
name= None¶ Report name. E.g.: Monthly sales.
-
outputs¶ Returns: A list of outputs to be used by this report.
-
params= None¶ Report params, it’s used to process report.
-
process()[source]¶ Process report and store output filepaths in
output_filepaths
-
-
class
onmydesk.core.reports.SQLReport(params=None)[source]¶ Report to be used with raw SQL’s.
E.g.:
class SalesReport(SQLReport): query = 'SELECT * FROM sales' report = SalesReport() report.process() print(report.output_filepaths) # --> Files with all rows from sales table.
-
db_alias= None¶ Database alias from django config to be used with queries
-
outputs= (<onmydesk.core.outputs.TSVOutput object at 0x7f5eb0459278>,)¶ Outputs list, default TSV.
-
query= None¶ Raw report query.
-
query_params= []¶ Params to be evaluated with query.
-