# odoorpc.report

This module provide the `Report` class to list available reports and to generate/download them.

class `odoorpc.report.``Report`(odoo)

  The Report class represents the report management service. It provides methods to list and download available reports from the server.

  Note

  This service have to be used through the `odoorpc.ODOO.report` property.

      >>> import odoorpc
      >>> odoo = odoorpc.ODOO('localhost', port=8069)
      >>> odoo.login('odoorpc_test', 'admin', 'password')
      >>> odoo.report
      <odoorpc.report.Report object at 0x7f82fe7a1d50>

  `download`(name, ids, datas=None, context=None)

    Download a report from the server and return it as a remote file. For instance, to download the “Quotation / Order” report of sale orders identified by the IDs `[2, 3]`:

        >>> report = odoo.report.download('sale.report_saleorder', [2, 3])

    Write it on the file system:

        >>> with open('sale_orders.pdf', 'wb') as report_file:
        ...     report_file.write(report.read())
        ...

    Python 2:

    Returns: | io.BytesIO
    Raise: | `odoorpc.error.RPCError` (wrong parameters)
    Raise: | ValueError (received invalid data)
    Raise: | urllib2.URLError (connection error)

    Python 3:

    Returns: | io.BytesIO
    Raise: | `odoorpc.error.RPCError` (wrong parameters)
    Raise: | ValueError (received invalid data)
    Raise: | urllib.error.URLError (connection error)

  `list`()

    List available reports from the server by returning a dictionary with reports classified by data model:

        >>> odoo.report.list()['account.invoice']
        [{'name': u'Duplicates',
          'report_name': u'account.account_invoice_report_duplicate_main',
          'report_type': u'qweb-pdf'},
         {'name': 'Invoices',
          'report_type': 'qweb-pdf',
          'report_name': 'account.report_invoice'}]

    Python 2:

    Returns: | list of dictionaries
    Raise: | urllib2.URLError (connection error)

    Python 3:

    Returns: | list of dictionaries
    Raise: | urllib.error.URLError (connection error)