Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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()
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
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'))
Ejemplo n.º 5
0
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')