skip to navigation
skip to content

Not Logged In

openerp-sane 0.1

Small utilities to ease OpenERP development

Latest Version: 0.2.1

openerp-sane is a collection of small utilities, making OpenERP development seem less like ancient warfare with blood and guts everywhere, and more like Python.

For now, there's just one utility: the @oemeth method decorator which straightens out our we manage the famous ids argument in our model methods. Example:

def myaction(self, cr, uid, ids, context=None): pass

Normally, ids is supposed to be a list of int, but sometimes, just, sometimes, we get a naked int, then our method crashes. We have to add code like:

if isinstance(ids, (int, long)):
    ids = [ids]

On top of that, there's another annoyance: why, oh why do all my methods have to handle cases with multiple ids? When I have an action for some button in a form, I know it's only ever going to handle one id at a time. I can do ids[0] easily enough, but if I really want to be on the safe side, I'll make sure that ids is a list first. Aren't you tired of that ridiculous dance? Well, that's why we have @oemeth

Usage

@oemeth is a method decorator that takes 2 (optional, default to False) arguments: single and browse. By default, it simply makes sure that ids is a list:

from openerp_sane import oemeth

# [...]

@oemeth
def myaction(self, cr, uid, ids, context=None):
    # Write code that assumes ids is a list

With single to True, we enforce a single int id:

@oemeth(single=True)
def myaction(self, cr, uid, objid, context=None):
    # objid is an ``int``.
    # WARNING: Use this only when you're sure that you'll only ever have single arguments.
    # If the input is a list with a len() != 1, an exception is raised.

With browse to True, we wrap our id(s) in a self.browse() call:

@oemeth(browse=True)
def myaction(self, cr, uid, objs, context=None):
    # objs is a list of browse records

Install

You can't wait to start using it in your modules, right? openerp-sane can be installed from PyPI:

$ pip install openerp-sane

When you use it in a module, you can document its dependency to it in your __openerp__.py:

{
    # [...]
    'external_dependencies': {
        'python': ['openerp_sane'],
    },
    # [...]
}
 
File Type Py Version Uploaded on Size
openerp-sane-0.1.tar.gz (md5) Source 2014-01-10 13KB
  • Downloads (All Versions):
  • 4 downloads in the last day
  • 65 downloads in the last week
  • 300 downloads in the last month