def person_from_data(person_data, event): user = User.find_first(~User.is_deleted, User.all_emails.contains(person_data['email'].lower())) if user: return EventPerson.for_user(user, event) person = EventPerson.find_first(event_new=event, email=person_data['email'].lower()) if not person: person = EventPerson(event_new=event, **person_data) return person
def _get_event_person(self, data): person_type = data.get('_type') if person_type is None: if data.get('email'): email = data['email'].lower() user = User.find_first(~User.is_deleted, User.all_emails.contains(email)) if user: return self._get_event_person_for_user(user) else: person = self.event.persons.filter_by(email=email).first() if person: return person # We have no way to identify an existing event person with the provided information return self._create_event_person(data) elif person_type == 'Avatar': return self._get_event_person_for_user(self._convert_principal(data)) elif person_type == 'EventPerson': return self.event.persons.filter_by(id=data['id']).one() elif person_type == 'PersonLink': return self.event.persons.filter_by(id=data['personId']).one() else: raise ValueError(_("Unknown person type '{}'").format(person_type))
def _get_event_person(self, data): person_type = data.get('_type') if person_type is None: if data.get('email'): email = data['email'].lower() user = User.find_first(~User.is_deleted, User.all_emails.contains(email)) if user: return self._get_event_person_for_user(user) elif self.event: person = self.event.persons.filter_by(email=email).first() if person: return person # We have no way to identify an existing event person with the provided information return self._create_event_person(data) elif person_type == 'Avatar': return self._get_event_person_for_user(self._convert_principal(data)) elif person_type == 'EventPerson': return self.event.persons.filter_by(id=data['id']).one() elif person_type == 'PersonLink': return self.event.persons.filter_by(id=data['personId']).one() else: raise ValueError(_("Unknown person type '{}'").format(person_type))