Create new L{Person}s for the given names and email addresses.
        Names and emails that already exist are ignored.

        @param addresses: a sequence of C{(name, email)} tuples
                          (as returned from L{_parseAddresses})
        @return: the names of people actually imported

def importAddresses(self, addresses):
        """
        Create new L{Person}s for the given names and email addresses.
        Names and emails that already exist are ignored.

        @param addresses: a sequence of C{(name, email)} tuples
                          (as returned from L{_parseAddresses})
        @return: the names of people actually imported
        """
        results = []
        for (name, address) in addresses:
            def txn():
                # Skip names and addresses that already exist.
                if self.organizer.personByEmailAddress(address) is not None:
                    return
                # XXX: Needs a better existence check.
                if self.store.query(Person, Person.name == name).count():
                    return

                try:
                    person = self.organizer.createPerson(name)
                    self.organizer.createContactItem(
                        EmailContactType(self.store), person,
                        dict(email=address))
                except ValueError, e:
                    # XXX: Granularity required;  see #711 and #2435
                    raise liveform.ConfigurationError(u'%r' % (e,))
                return person
            results.append(self.store.transact(txn))
        return [p.name for p in results if p is not None]