예제 #1
0
파일: app.py 프로젝트: dychen/dandora
def update_or_create(model, defaults={}, commit=True, **kwargs):
    """
    Equivalent of Django's update_or_create, with an additional option to
    commit the transaction (commits by default).
    @param model: Model to update, e.g. Song
    @param defaults: Parameters to update, e.g. {
        'playback_count': 1000, 'likes_count': 10
    }
    @param commit: Commit the transaction?
    @param **kwargs: Parameters to check uniqueness on, e.g. {
        'title': 'How We Do', 'artist': '50 Cent'
    }
    """
    model_instance = DB_SESSION.query(model).filter_by(**kwargs).first()
    if model_instance:
        for arg, value in defaults.iteritems():
            setattr(model_instance, arg, value)
        if commit:
            DB_SESSION.commit()
        return model_instance, True
    else:
        params = { k: v for k, v in kwargs.iteritems() }
        params.update(defaults)
        model_instance = model(**params)
        DB_SESSION.add(model_instance)
        if commit:
            DB_SESSION.commit()
        return model_instance, False
예제 #2
0
파일: app.py 프로젝트: dychen/dandora
def create_playlist(playlist_name, user_id):
    print 'Creating new playlist %s for user %s' % (playlist_name, user_id)
    new_playlist = Playlist(user_id=user_id, name=playlist_name)
    DB_SESSION.add(new_playlist)
    DB_SESSION.commit()
    # Seed soundcloud_songs database table
    map(populate_soundcloud_songs, get_similar_artists(playlist_name))
    return new_playlist
예제 #3
0
파일: app.py 프로젝트: dychen/dandora
def create_user(username, token, secret):
    new_account = User(username=username, token=token, secret=secret)
    DB_SESSION.add(new_account)
    DB_SESSION.commit()
    return new_account