def associate_account_with_person(account_id): account = Account.query.filter(Account.id == account_id)[0] if account.person is not None: return account.person #For now do naive thing and assume we won't have name collisions names = account.name.split(' ') name_matches = Person.query.filter(Person.first_name == names[0], Person.last_name == names[-1], Person.is_user == False) person_id = -1 if name_matches.count() == 0: # Create a person print("creating a person for the account") person = Person() person.first_name = names[0] person.last_name = names[-1] person.name = account.name person.slug = person.create_slug() person.photo_url = account.photo_url person.is_user = True db.session.add(person) db.session.commit() person_id = person.id account.add_person(person_id) db.session.add(account) db.session.commit() elif name_matches.count() == 1: # Associate account with person # TODO make it so you can have multiple accounts associated # with the same person print("associating single person with account") person = name_matches[0] person.is_user = True if person.photo_url is None or len(person.photo_url) is 0: person.photo_url = account.photo_url person.updated = datetime.now() db.session.add(person) db.session.commit() person_id = person.id account.add_person(person_id) db.session.add(account) db.session.commit() elif name_matches.count() > 1: print("Multiple people with same name") return person_id