El 31/01/2014 18:37, "oscar" <[email protected]> va escriure: > > > El 31/01/14 12:15, Moises Escusa escribió: >> >> Hola Oscar, perdona: >> >> La función original que quiero sobreescribir es: >> >> def _group_lines_to_invoice_key(self, line): >> "The key to group lines" >> return (('product', line['product']), >> ('unit_price', line['unit_price']), >> ('description', line['description'])) > > Eso se llama sobrecarga de metodos y lo haces con: super > > http://stackoverflow.com/questions/576169/understanding-python-super-and-init-methods > > dependiendo de haces algo como: > > super(MYCLASE, self)._group_lines_to_invoice_key(line) > > al final de la linea o al principio dependiendo del orden de ejecucion que desees
El super es para que se ejecute el código origibal (y de todas las herencias previas que haya de la misma función). Casi siempre es necesario y recomendable llamarlo en algun punto de la función pero en este caso seguramente no. Pero lo importante es que llamar al super no va a solucionar el problema que comenta. >> del módulo 'project_invoice', y la parte que quiero modificar es la que está en rojo, ya que quiero que la descripción de la linea la coja de 'timesheet_line'. >> >> Si copio la función en mi módulo y la modifico, no me sobreecribe la original. ¿Que me falta? Seria interesante ver TU codigo (nos has puesto el de la funcion original) y los ficheros __init__.py y tryton.cfg Tiene pinta que, o no has definido el modelo (la herencia) correctamente o no lo has añadido a la llamada a register() en el __init__.py Salut! Guillem
