Beispiel #1
0
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