def getNode(self, id, dbsession):
		AddressBookNode = namedtuple('AddressBookNode', 'name, contact')
		AddressBookContact = namedtuple('AddressBookContact', 'email, phone_numbers')
		AddressBookPhone = namedtuple('AddressBookPhone', 'id, phone_type, number')
		for dbid, intid in self._ids_empresas.items():
			if intid == id:
				id_empresa = dbid
				empresa = dbsession.query(self.empresas.columns.Empresa).filter(self.empresas.columns.IDEmpresa == id_empresa).one()
				return AddressBookNode(empresa, None)
		for dbid, intid in self._ids_contactos.items():
			if intid == id:
				id_empresa = dbid
				contact = dbsession.query(self.contacts).filter(self.contacts.columns.IDContacto == id_empresa).one()
				phones = []
				for phone in dbsession.query(self.telefonos, self.direcciones.columns.CodCiudad, self.direcciones.columns.CodPais).filter(and_(self.telefonos.columns.IDref2 == id_empresa, self.direcciones.columns.RecID == self.telefonos.columns.IDDireccion)).all():
					id_phone = self._phone_ids.get(phone.RecID)
					if id_phone is None:
						self._last_id = self._last_id +1
						id_phone = self._last_id
						self._phone_ids[phone.RecID] = self._last_id
					phones.append(AddressBookPhone(id_phone, phone.Tipo, '%s %s %s' % (phone.CodPais, phone.CodCiudad, phone.numero)))
				email = ''
				try:
					email = dbsession.query(self.emails.columns.Direccion).filter(self.emails.columns.IDref == id_empresa).first()[0]
				except:
					pass
				c = AddressBookContact(email, phones)
				return AddressBookNode('%s %s'% (contact.Nombre, contact.Apellido), c)
	def public(self,dbsession):
		''' Return proper addressbook format (json) '''
		entries = AddressBookNode(0, 'Public Address Book', [])
		for empresa in dbsession.query(self.empresas).filter(self.empresas.columns.Calificacion=='DIRECTORIO').order_by(asc(self.empresas.columns.Empresa)).all():
			id_empresa = self._ids_empresas.get(empresa.IDEmpresa)
			if id_empresa is None:
				self._last_id = self._last_id +1
				id_empresa = self._last_id
				self._ids_empresas[empresa.IDEmpresa] = self._last_id

			contacts = []
			for c in dbsession.query(self.contacts).filter(and_(empresa.IDEmpresa == self.contacts.columns.IDEmpresa, self.contacts.columns.Bloqueado == 0)).all():
				print empresa.Empresa, c.Nombre, c.Apellido
				id_contacto = self._ids_contactos.get(c.IDContacto)
				if id_contacto is None:
					self._last_id = self._last_id +1
					id_contacto = self._last_id
					self._ids_contactos[c.IDContacto] = self._last_id

				phones = []
				email = ''
				try:
					email = dbsession.query(self.emails.columns.Direccion).filter(self.emails.columns.IDref == c.IDContacto).first()[0]
				except:
					pass
				contactObj = AddressBookContact(id_contacto, '%s %s' % (c.Nombre, c.Apellido), email, phones, id_contacto)
				for phone in dbsession.query(self.telefonos, self.direcciones.columns.CodCiudad, self.direcciones.columns.CodPais).filter(and_(self.telefonos.columns.IDref2 == c.IDContacto, self.direcciones.columns.RecID == self.telefonos.columns.IDDireccion)).all():
					id_phone = self._phone_ids.get(phone.RecID)
					if id_phone is None:
						self._last_id = self._last_id +1
						id_phone = self._last_id
						self._phone_ids[phone.RecID] = self._last_id

					print c.Nombre ,'%s %s %s' % (phone.CodPais, phone.CodCiudad, phone.numero)
					phones.append(AddressBookPhone(id_phone, phone.Tipo, '%s %s %s' % (phone.CodPais, phone.CodCiudad, phone.numero), contactObj, '%s %s %s' % (phone.CodPais, phone.CodCiudad, phone.numero)))
				contactObj.phone_numbers = phones
				contacts.append(contactObj)

			entries.children.append(AddressBookNode(id_empresa, empresa.Empresa, contacts))

		return entries