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

Responder a