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
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
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
def delete_playlist(playlist_name, user_id): playlist = (Playlist.query .filter_by(user_id=user.id, name=playlist_name) .one()) DB_SESSION.delete(playlist) DB_SESSION.commit()