ok, solucionado. Efectivamente crea un address vacio
Aquí el código funcional
party = Party()
party.name = partner.name
party.vat_number = 'XXX...XX'
party.vat_country = 'XX'
print partner.name
first = True # flag para detectar si es el primero
for address in partner.address: # con el debuger solo entra una vez pero
crea dos direcciones
address_new = Address()
address_new.name
<http://www.google.com/url?q=http%3A%2F%2Faddress_new.name&sa=D&sntz=1&usg=AFQjCNFdP9pu4e_JI_jZrHTY7YvW91ob8w>
= address.name
address_new.street = address.street
....
if first:
party.address[0] = address_new
first = False
else:
party.addresses.append(address_new)
party.save()
El lunes, 4 de mayo de 2015, 21:45:03 (UTC+1), Karla Stenger escribió:
>
>
>
> El 4 de mayo de 2015, 14:56, Antonio Roncero <[email protected]
> <javascript:>> escribió:
>
>> Gracias Raimon,
>>
>> pero la asignacion party.addresses = address_news lanza una excepcion de
>> "attribute error"
>>
>> El lunes, 4 de mayo de 2015, 18:36:27 (UTC+1), raimonesteve escribió:
>>
>>> 2015-05-04 19:26 GMT+02:00 Antonio Roncero <[email protected]>:
>>> > Hola,
>>> >
>>> > estoy usando proteus en un script para importar terceros. El tema es
>>> que
>>> > cuando genero un tercero que solo tiene una dirección, en tryton me
>>> aparecen
>>> > dos y si tiene dos, me aparecen tres.
>>> >
>>> > Esta es la parte involucrada de codigo
>>> >
>>> > party = Party()
>>> > party.name = partner.name
>>> > party.vat_number = 'XXX...XX'
>>> > party.vat_country = 'XX'
>>> > print partner.name
>>> address_news = []
>>> > for address in partner.address: # con el debuger solo entra una vez
>>> pero
>>> > crea dos direcciones
>>> > address_new = Address()
>>> > address_new.name = address.name
>>> > address_new.street = address.street
>>> address_news.append(address_new)
>>> > ....
>>> party.addresses = address_news
>>> > party.save()
>>> >
>>> > Alguna idea? gracias
>>>
>>> nota:
>>> sin testear
>>>
>>> Raimon
>>>
>>
> Hola,
> cuando estuve con eso descubrí que party.addresses tiene un elemento vacío
> desde el momento en que se hace party.save()
>
> Ahora, no logro entender si lo que te sucede es que te crea una address
> _duplicada_ (en cuyo caso mi descubrimiento no sirve de nada) o simplemente
> una address extra _vacía_.
>
> Si el caso es el segundo, es muy sencillo modificar la address vacía, o si
> ves que la address ya no está vacía, crear una nueva (en caso que tengas
> una party con mas de una address).
>
> Ojala te sirva de algo,
> Saludos,
> Karla.
>
> --
> -------------------------
> Karla Mª Stenger Sábat
> [email protected] <javascript:>
>