Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating a multiple phone vCard using vObject

im using vObject to create a vCard. Everything works well except I can't add multiple phone numbers.

Right now i'm doing this:

v.add('tel')
v.tel.type_param = 'WORK'
v.tel.value = employee.office_phone

v.add('tel')
v.tel.type_param = 'FAX'
v.tel.value = employee.fax

As it's working as a key value, the work phone is overwritten by the fax number.

Any idea on who to do it right?

Thanks!

like image 315
Emmet Brown Avatar asked Nov 25 '12 16:11

Emmet Brown


1 Answers

The add() method returns a specific object which can be used to fill in more data:

import vobject

j = vobject.vCard()
o = j.add('fn')
o.value = "Meiner Einer"

o = j.add('n')
o.value = vobject.vcard.Name( family='Einer', given='Meiner' )

o = j.add('tel')
o.type_param = "cell"
o.value = '+321 987 654321'

o = j.add('tel')
o.type_param = "work"
o.value = '+01 88 77 66 55'

o = j.add('tel')
o.type_param = "home"
o.value = '+49 181 99 00 00 00'

print(j.serialize())

Output:

BEGIN:VCARD
VERSION:3.0
FN:Meiner Einer
N:Einer;Meiner;;;
TEL;TYPE=cell:+321 987 654321
TEL;TYPE=work:+01 88 77 66 55
TEL;TYPE=home:+49 181 99 00 00 00
END:VCARD
like image 135
Andreas Florath Avatar answered Nov 15 '22 21:11

Andreas Florath