Metadata-Version: 2.0
Name: anthem
Version: 0.2.0
Summary: Make your Odoo scripts sing.
Home-page: https://github.com/camptocamp/anthem
Author: Camptocamp
Author-email: info@camptocamp.com
License: LGPLv3+
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2 :: Only
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: Implementation :: CPython

Anthem: make your Odoo scripts sing 🐜🎵
========================================

.. image:: https://travis-ci.org/camptocamp/anthem.svg?branch=master
    :target: https://travis-ci.org/camptocamp/anthem

Anthem is a tool to help scripting Odoo instances for automated setup,
upgrades, testing and more.

It should be an alternative to the other tools like ``oerpscenario``.


Make your own songs
-------------------

Writing your songs is as easy as creating a Python Package. The
songs functions called by anthem must have a positional ``ctx``
argument.

::

  ## songs/install.py

  def setup_company(ctx):
      """ Setup company """
      company = ctx.env.ref('base.main_company')
      company.name = 'My Company'


  def main(ctx):
      setup_company(ctx)


Execute your songs
------------------

Use the command line ``anthem``. Provided your songs and ``openerp`` are in the
``PYTHONPATH``::

  anthem songs.install::main -c path/to/openerp.cfg

Anthem will execute the function ``main`` of the module ``songs.install`` with
a ``ctx`` initialized with an Odoo ``env``.

Instead of using ``-c`` for the command line, you can export the environment
variable ``OPENERP_SERVER`` with the path of the configuration file.

::

  export OPENERP_SERVER=path/to/openerp.cfg
  anthem songs.install::main

In order to have ``openerp`` in the ``PYTHONPATH``, you might install it as a
package with ``pip install -e`` or directly modify the ``PYTHONPATH``.

In order to have your ``songs`` in the ``PYTHONPATH``, the better is to make a
Python package out of them.


Run the tests
-------------

To run ``anthem``'s tests, it is a good idea to to an *editable* install of it
in a virtualenv, and then intall and run ``pytest`` as follows::

  % git clone https://github.com/camptocamp/anthem.git
  Cloning into 'anthem'...
  % cd anthem
  % python2 -m virtualenv env
  % source env/bin/activate
  % pip install -e .
  % pip install pytest
  % py.test


.. :changelog:

Release History
---------------

Unreleased
++++++++++

0.2.0 (2016-07-22)
++++++++++++++++++

**Features**

* Ability to log descriptions and timings in songs with the
  context manager ``Context.log`` and the decorator ``anthem.log``.

  ::

    from anthem import log

    @log
    def setup_company(ctx):
        """ Setup company """
        # do stuff
        with ctx.log('other stuff'):
            # do other stuff

    @log
    def load_data(ctx):
        """ Load data """
        # load

    @log
    def main(ctx):
        setup_company(ctx)
        load_data(ctx)

  If we run anthem on ``main``, we will get:

  ::

    running... main
       running... Setup company
          running... other stuff
          other stuff: 0.850s
       Setup company: 1.100s
       running... Load data
       Load data: 2.900s
    main: 4.000s

0.1.3 (2016-07-07)
++++++++++++++++++

**Fixes**

- Correct lyric to create or update a record

0.1.2 (2016-07-07)
++++++++++++++++++

- Add a lyric to create a xmlid
- Add a lyric to create or update a record

0.1.1 (2016-06-23)
++++++++++++++++++

- Fixed crash on non-editable install.

0.1.0 (2016-06-23)
++++++++++++++++++

Initial release.


