#!/usr/bin/env python

"""
 VCardWriter.py
 
 Classe per la scrittura delle informazioni
 contenute in un file VCard versione 2.1.
 
 Copyright (C) 2000-2003 Michele Ferretti
 black.bird@tiscali.it
 http://www.blackbirdblog.it

 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License
 as published by the Free Software Foundation; either version 2
 of the License, or any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

"""


class VCardWriter:

	nome 			= ''
	cognome 		= ''
	nickname 		= ''
	organizzazione 	= ''
	reparto 		= ''
	titolo 			= ''
	note 			= ''
	
	tel_lavoro			= ''
	tel_casa 			= ''
	tel_cellulare 		= ''
	tel_cercapersone 	= ''
	fax_lavoro 			= ''
	fax_casa 			= ''
	
	indirizzo_lavoro 	= ''
	citta_lavoro 		= ''
	provincia_lavoro 	= ''
	cap_lavoro 			= ''
	nazione_lavoro 		= ''
	
	indirizzo_casa 		= ''
	citta_casa			= ''
	provincia_casa 		= ''
	cap_casa			= ''
	nazione_casa 		= ''

	url_lavoro 			= ''
	url_casa 			= ''

	email_predefinita 	= ''
	emails 				= ''
		
	def __init__(self, **dati):
		if dati.has_key('nome'): self.nome 	= dati['nome']
		if dati.has_key('cognome'): self.cognome 				= dati['cognome']
		if dati.has_key('nickname'): self.nickname 				= dati['nickname']
		if dati.has_key('organizzazione'): self.organizzazione 	= dati['organizzazione']
		if dati.has_key('reparto'): self.reparto 				= dati['reparto']
		if dati.has_key('titolo'): self.titolo 					= dati['titolo']
		if dati.has_key('note'): self.note 						= dati['note']
		
		if dati.has_key('tel_lavoro'): self.tel_lavoro 				= dati['tel_lavoro']
		if dati.has_key('tel_casa'): self.tel_casa 					= dati['tel_casa']
		if dati.has_key('tel_cellulare'): self.tel_cellulare 		= dati['tel_cellulare']
		if dati.has_key('tel_cercapersone'): self.tel_cercapersone 	= dati['tel_cercapersone']
		if dati.has_key('fax_ufficio'): self.fax_ufficio 			= dati['fax_ufficio']
		if dati.has_key('fax_casa'): self.fax_casa 					= dati['fax_casa']
		
		if dati.has_key('indirizzo_lavoro'): self.indirizzo_lavoro 	= dati['indirizzo_lavoro']
		if dati.has_key('citta_lavoro'): self.citta_lavoro 			= dati['citta_lavoro']
		if dati.has_key('provincia_lavoro'): self.provincia_lavoro 	= dati['provincia_lavoro']
		if dati.has_key('cap_lavoro'): self.cap_lavoro 				= dati['cap_lavoro']
		if dati.has_key('nazione_lavoro'): self.nazione_lavoro 		= dati['nazione_lavoro']
		
		if dati.has_key('indirizzo_casa'): self.indirizzo_casa 		= dati['indirizzo_casa']
		if dati.has_key('citta_casa'): self.citta_casa				= dati['citta_casa']
		if dati.has_key('provincia_casa'): self.provincia_casa 		= dati['provincia_casa']
		if dati.has_key('cap_casa'): self.cap_casa					= dati['cap_casa']
		if dati.has_key('nazione_casa'): self.nazione_casa 			= dati['nazione_casa']

		if dati.has_key('url_lavoro'): self.url_lavoro 				= dati['url_lavoro']
		if dati.has_key('url_casa'): self.url_casa 					= dati['url_casa']

		if dati.has_key('email_predefinita'): self.email_predefinita 	= dati['email_predefinita']
		if dati.has_key('emails'): self.emails 							= dati['emails'] # prende in entrata una tuple
		
	
	def getVCard(self):
		strvcard = []	
		strvcard.append('BEGIN:VCARD')
		strvcard.append('VERSION:2.1')
		strvcard.append('N:%s;%s'% (self.cognome,self.nome))
		strvcard.append('FN:%s %s'% (self.nome,self.cognome))
		strvcard.append('NICKNAME:%s'% self.nickname)
		strvcard.append('ORG:%s;%s'% (self.organizzazione,self.reparto))
		strvcard.append('TITLE:%s'% self.titolo)
		strvcard.append('NOTE:%s'% self.note)
		strvcard.append('TEL;WORK;VOICE:%s'% self.tel_lavoro)
		strvcard.append('TEL;HOME;VOICE:%s'% self.tel_casa)
		strvcard.append('TEL;CELL;VOICE:%s'% self.tel_cellulare)
		strvcard.append('TEL;PAGER;VOICE:%s'% self.tel_cercapersone)
		strvcard.append('TEL;WORK;FAX:%s'% self.fax_lavoro)
		strvcard.append('TEL;HOME;FAX:%s'% self.fax_casa)
		strvcard.append('ADR;WORK;ENCODING=QUOTED-PRINTABLE:;;%s;%s;%s;%s;%s'% (self.indirizzo_lavoro,self.citta_lavoro,self.provincia_lavoro,self.cap_lavoro,self.nazione_lavoro))
		strvcard.append('LABEL;WORK;ENCODING=QUOTED-PRINTABLE:%s=0D=0A%s, %s %s=0D=0A%s'% (self.indirizzo_lavoro,self.citta_lavoro,self.provincia_lavoro,self.cap_lavoro,self.nazione_lavoro))
		strvcard.append('ADR;HOME;ENCODING=QUOTED-PRINTABLE:;;%s;%s;%s;%s;%s'% (self.indirizzo_lavoro,self.citta_lavoro,self.provincia_lavoro,self.cap_lavoro,self.nazione_lavoro))
		strvcard.append('LABEL;HOME;ENCODING=QUOTED-PRINTABLE:%s=0D=0A%s, %s %s=0D=0A%s'% (self.indirizzo_lavoro,self.citta_lavoro,self.provincia_lavoro,self.cap_lavoro,self.nazione_lavoro))
		strvcard.append('URL;HOME:%s'% self.url_casa)
		strvcard.append('URL;WORK:%s'% self.url_lavoro)
		strvcard.append('EMAIL;PREF;INTERNET:%s'% self.email_predefinita)
		for i in self.emails:
			strvcard.append('EMAIL;INTERNET:%s'% i)
		strvcard.append('REV:20021129T151049Z')
		strvcard.append('END:VCARD')
		
		return '\n'.join(strvcard)
		
		
if __name__ == '__main__':
	vc = VCardWriter(nome='Michele', cognome='Ferretti', emails=('sfd@sdgsdg','sdgsdg@sdsdh','sdgsgasdh'))
	print vc.getVCard()
