def create_or_update_numu_release(mb_release): """Parse an MB release and turn it into a release object. Returns (unsaved) release object.""" numu_date = get_numu_date(mb_release.get('first-release-date')) if numu_date is None or mb_release.get('artist-credit') is None: return None release = get_numu_release(mb_release.get('id')) if release is None: release = Release() release.mbid = mb_release.get('id') release.title = mb_release.get('title') release.type = get_numu_type(mb_release) release.date_release = numu_date release.artists_string = mb_release.get('artist-credit-phrase') release.date_updated = func.now() db.session.add(release) db.session.commit() for mb_artist in mb_release.get('artist-credit'): if type(mb_artist) == dict and mb_artist['artist']: artist = get_numu_artist_by_mbid(mb_artist['artist']['id']) if artist is None: artist = add_numu_artist_from_mb( artist_mbid=mb_artist['artist']['id']) if artist and artist not in release.artists: release.artists.append(artist) db.session.add(release) db.session.commit() return release
def record_artists_and_releases(): """Create skeleton records in artists and releases tables from given directory. Assume that directory structure is artist/albums/tracks a la itunes library. """ total_artists = 0 total_releases = 0 session = Session() artists = [] for artist_dir in glob.glob(DIRECTORY + '*'): artist = Artist(name=os.path.basename(artist_dir)) total_artists += 1 for release_dir in glob.glob(artist_dir + '/*'): release = Release(title=os.path.basename(release_dir)) artist.releases.append(release) total_releases += 1 artists.append(artist) logger.info('Adding {} artists with {} releases'.format( total_artists, total_releases)) session.add_all(artists) session.commit()
def create_release(payload): try: name = request.get_json()['name'] artist_id = request.get_json()['artist_id'] price = request.get_json()['price'] new_release = Release( name=name, artist_id=artist_id, price=price ) new_release.insert() return jsonify({ 'success': True, 'name': new_release.name, 'artist_id': new_release.artist_id, 'price': new_release.price }) except: abort(422)
def release(): if request.method == 'GET': return render_template('release.html') else: title = request.form.get('title') content = request.form.get('content') Release(title=title, content=content) user_id = session.get('user_id') user = User.query.filter(User.id == user_id).first() release.author = user db.session(release) db.session.commit() return redirect(url_for('index'))
def release(questionnaire_id): def get_security(): def to_int(string): try: return int(string) except ValueError: return None security = {} if 'is_allow_anonymous' not in request.form: is_allow_anonymous = False else: is_allow_anonymous = True if 'limit_num_participants' not in request.form: limit_num_participants = None elif not request.form['limit_num_participants']: limit_num_participants = None else: limit_num_participants = to_int( request.form['limit_num_participants']) if 'limit_num_ip' not in request.form: limit_num_ip = None elif not request.form['limit_num_ip']: limit_num_ip = None else: limit_num_ip = to_int(request.form['limit_num_ip']) if 'special_participants' not in request.form: special_participants = None else: data = request.form['special_participants'] if not data: special_participants = None else: special_participants = data.split(',') for i in special_participants: i = i.strip() security['anonymous'] = is_allow_anonymous security['limit_per_user'] = limit_num_participants security['limit_per_ip'] = limit_num_ip security['limit_participants'] = special_participants return security if request.method == 'POST': start_time = request.form['start_time'] end_time = request.form['end_time'] if start_time < end_time: security = get_security() dumped_security = pickle.dumps(security, protocol=2) release = Release( ques_id=questionnaire_id, start_time=datetime.strptime(start_time, '%Y-%m-%d %H:%M:%S'), end_time=datetime.strptime(end_time, '%Y-%m-%d %H:%M:%S'), security=dumped_security, is_closed=False) db.session.add(release) db.session.commit() return render_template('release_success.html', g=g, q_id=questionnaire_id, message='Release successfully') else: flash("Start time is later then end time", 'error') return render_template('release.html')