WhyNotHugo/django-afip

Problemas con load_metadata y loaddata

GonzaPromo14 opened this issue · 4 comments

Hola! Actualicé el módulo django-afip a la nueva versión. Lo que implicó cambiar el método populate_all() por load_metadata(). El problema es que en este método no me toma la base de datos correspondiente a AFIP (porque mi sistema utiliza múltiples bases de datos). Por lo que vi, el método load_metadata() llama al comando "loaddata". El tema es que el comando loaddata pide un argumento "--database" y en el caso en que no le mando ese argumento, toma la base de datos por default. Eso hace que se me rompa el sistema. Yo hice un routers.py que redirecciona la base de datos cada vez que se trabaja con los models de afip. El tema, es que el comando loaddata no lo hace porque le asigna la base de datos por defecto, y me tira problemas con el transaction.atomic(using=bd). El problema es que en el método load_metadata() no me permite enviarle la base de datos para que la utilice el método "loaddata".

Gracias

Hmm, una vez más no tuve en cuenta sistemas multi-db. 🤔

De momento te recomiendo correr el equivalente a mano:

MY_DB=XXX
django-admin loaddata --database $MY_DB --app afip receipttype
django-admin loaddata --database $MY_DB --app afip concepttype
django-admin loaddata --database $MY_DB --app afip documenttype
django-admin loaddata --database $MY_DB --app afip vattype
django-admin loaddata --database $MY_DB --app afip taxtype
django-admin loaddata --database $MY_DB --app afip currencytype

Mientras voy a ir pensando la mejor solución para esto. Capaz lo correcto sea poner todo en un sólo fixture para hacerlo más fácil de importar a mano así.

Ah bueno. Muchas gracias por la solución parcial! Me solucionaste un dolor de cabeza jaja

Sigo pensando en como resolver esto de la mejor manera.

Si incluyese todos estos modelos en un migración, te sería problmático?

No sé si sería problemático che, pero te consulto. Por qué no se podría agregar en el método load_metadata() un atributo que sea db, que en el caso que no se pase use la default por defecto?