Reference

onmydesk.models

Required models to handle and store generated reports.

class onmydesk.models.Report(*args, **kwargs)[source]

Report model to store generated reports

get_params()[source]

Params to be used to process report.

Returns:Report params
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().

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
set_params(params)[source]

Set params to be used when report is processed

Parameters:params (dict) – Dictionary with params to be used to process report.
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_params()[source]

Params to be used to process report.

Returns:Report params
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
process(reference_date=None)[source]

Process scheduler creating and returing a report. After processing, this method tries to notify e-mails filled in notify_emails field.

Returns:Report result
Return type:Report
set_params(params)[source]

Set params to be used when report is processed

Parameters:params (dict) – Dictionary with params to be used to process report.
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.utils.my_import(class_name)[source]

Usage example:

Report = my_import('myclass.models.Report')

model_instance = Report()
model_instance.name = 'Test'
model_instance.save()
Parameters:class_name (str) – Class name
Returns:Class object
onmydesk.utils.str_to_date(value, reference_date)[source]

Convert a string like ‘D-1’ to a “reference_date - timedelta(days=1)”

Parameters:
  • value (str) – String like ‘D-1’, ‘D+1’, ‘D’...
  • reference_date (date) – Date to be used as ‘D’
Returns:

Result date

Return type:

date

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)
__enter__()[source]

Enter from context manager to lock some resource (for example).

__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)

iterate(params=None)[source]

It must returns any iterable object.

Parameters:params (dict) – Parameters to be used by dataset
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])
__enter__()[source]

Enter from context manager to open a cursor with database

__exit__(type, value, traceback)[source]

Exit from context manager to close cursor with database

__init__(query, query_params=[], db_alias=None)[source]
Parameters:
  • query (str) – Raw sql query.
  • query_params (list) – Params to be evaluated with query.
  • db_alias (str) – Database alias from django settings. Optional.
iterate(params=None)[source]
Parameters:params (dict) – Parameters to be used by dataset.
Returns:Rows from query result.
Return type:Iterator with OrderedDict items.

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().

footer(content)[source]

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
header(content)[source]

Output a header content :param mixed content: Content to be written

name = None

Name used to compose output filename

out(content)[source]

Output a normal content :param mixed content: Content to be written

class onmydesk.core.outputs.CSVOutput(*args, **kwargs)[source]

An output to generate CSV files (files with cols separated by comma).

class onmydesk.core.outputs.SVOutput(*args, **kwargs)[source]

Abstract separated values output

class onmydesk.core.outputs.TSVOutput(*args, **kwargs)[source]

An output to generate TSV files (files with cols separated by tabs).

class onmydesk.core.outputs.XLSXOutput[source]

Output to generate XLSX files.

footer(content)[source]

Output a footer content :param mixed content: Content to be written

header(content)[source]

Output a header content :param mixed content: Content to be written

min_width = 8.43

Min width used to set column widths

out(content)[source]

Output a normal content :param mixed content: Content to be written

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.
footer = None

Report footer.

form = None

Django form class to enable user to fill some param.

classmethod get_form()[source]
Returns:Form to be used with this report in admin creation screen.
header = None

Report header.

name = None

Report name. E.g.: Monthly sales.

output_filepaths = []

Output files filled by process().

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

row_cleaner(row)[source]

Method used to handle line by line of the report. It’s useful to convert some data or do some sanitization.

Parameters:row – Line to be rendered in the report.
Returns:Line after some processing with it.
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.