Ridefinizione funzione python
Riecocmi. In effetti questa combinazione non l'avevo provata e non da errore ma ancora non "eredito". Ho provato così:
from odoo.addons.maintenance_plan.models.maintenance_plan import get_relativedelta
def get_relativedelta_new(interval, step):
result = get_relativedelta(interval, step)
return result
get_relativedelta = get_relativedelta_new
Ma quando viene chiamata la funzione nel metodo del modulo originale (maintenance_plan) non passa per la mia ridefinizione
7 Replies
qui trovi un esempio, per ridefinirla (e non richiamarla per usarla) importa l'intero .py, vedi https://github.com/sergiocorato/e-efatto/blob/428a84d289680b95c77d9a035d60ef3bf6cc05b5/report_py3o_address_multiline_fix/models/_py3o_parser_context.py
GitHub
e-efatto/_py3o_parser_context.py at 428a84d289680b95c77d9a035d60ef3...
Logicizzazione italiana di Odoo. Contribute to sergiocorato/e-efatto development by creating an account on GitHub.
Quindi, non riesco a "ereditarla" per usarla similmente a super() ma devo riscriverla ex novo, magari copiando il codice originale e aggiungendo il mio.
Questo significa che devo allineare il mio codice quando/se viene modificato il codice originale. Giusto per avere conferma.
Non è in una classe, quindi non funziona l'ereditarietà classica
Mannaggia, apro PR. grazie
prg, posta il link qui se vuoi
GitHub
[11.0][REF] convert get_relativedelta function to MaintenancePlan c...
As pointed out in #182, for me is better to have get_relativedelta as a MaintenancePlan method to allow hineritance.
PS. Proposed for v11.0 because I'm working here, but in case of success ...
mmm, non credo che qualcuno possa approvare una PR senza una motivazione tecnica del cambiamento, con solo un 'per me è meglio così', anche perchè va a crashare moduli che usano quella funzione o che la modificano con il sistema che accennavo sopra