Example #1
0
def edit_song(tune_id):
    if 'username' not in session: return redirect(url_for('login'))
    if request.method == 'GET':
        image_path, title, composer, tune_type, timesig, key, file_ext, url, chord = tunes.retrieve(conn, int(tune_id))
        if title is None: title = ''
        if tune_type is not None:
            return redirect(url_for('edit_tune', tune_id=tune_id))
        timesig = '' if timesig is None else str(timesig / 10) + '/' + str(timesig % 10)
        if key is None: key = ''
        if chord is None: chord = ''
    else:
        title = request.form['title']
        composer = request.form['composer']
        timesig = request.form['timesig']
        if timesig is not None and timesig != '':
            s = timesig.split('/')
            ts = int(s[0])*10 + int(s[1])
        key = request.form['key']
        chord = request.form['chord']
        tunes.update(conn, tune_id, title, composer, None, ts, key, None, None, chord)
    return render_template('edit_song.html',
        title=uc(title),
        composer=uc(composer),
        timesig=timesig,
        key=key,
        chord=uc(chord),
        song_html=webchord.chopro2html(uc(chord)),
        tune_id=tune_id)
Example #2
0
def editSpecificTune(tune_id):
    if 'username' not in session: return redirect(url_for('login'))
    tune_id = int(tune_id)
    if request.method == 'GET':
        image_path, title, composer, tune_type, timesig, key, file_ext, url, abc = tunes.retrieve(conn, tune_id)
        if title is None: title = ''
        if tune_type is None: tune_type = ''
        timesig = '' if timesig is None else str(timesig / 10) + '/' + str(timesig % 10)
        if key is None: key = ''
        if url is None: url = ''
        if abc is None: abc = ''
        return render_template('edit_tune.html',
            tune_id=tune_id,
            title=title,
            tune_type=tune_type,
            timesig=timesig,
            key=key,
            url=url,
            abc=abc,
            image_path=image_path,
            ur=str(random.randint(1,999)))
    else:
        f = request.files['img']
        t = f.content_type
        file_ext = None
        fileUploaded = True
        if (t == 'image/jpeg'): file_ext = 'jpg'
        elif (t == 'image/png'): file_ext = 'png'
        else:
            fileUploaded = False
            tune_id = int(tune_id)
            image_path, title, composer, tune_type, timesig, key, file_ext, url, abc = tunes.retrieve(conn, tune_id)
        title = request.form['title']
        if title == '': title = None
        tune_type = request.form['type']
        if tune_type == '': tune_type = None
        timesig = request.form['timesig']
        if timesig is not None and timesig != '':
            s = timesig.split('/')
            timesig = int(s[0])*10 + int(s[1])
        else:
            timesig = None
        key = request.form['key']
        if key == '': key = None
        url = request.form['url']
        if url == '': url = None
        new_abc = request.form['abc']
        if new_abc == '': new_abc = None
        if fileUploaded:
            # user uploaded a new image for this tune; replace any old one
            tunes.update(conn, tune_id, title, None, tune_type, timesig, key, file_ext, url, new_abc)
            f.save('static/img/%d.%s' % (tune_id, file_ext))
        #elif new_abc != abc:
        #    # user did not upload a new tune image, but edited ABC; create new image
        #    file_ext = 'png'
        #    tunes.update(conn, tune_id, title, None, tune_type, timesig, key, file_ext, url, new_abc)
        #    scriptName = 'tune_image.bat' if platform.system() == 'Windows' else './tune_image.sh'
        #    subprocess.Popen([scriptName, str(tune_id), 'static/img'])
            
        return redirect(request.referrer)
Example #3
0
def json_set(set_number):
    book_name, set_name, wrap, wrap_to, tune_list = sets.retrieve(conn, set_number)
    tuneList = list()
    for (tune_id, repeats) in tune_list:
        image_path, title, composer, tune_type, timesig, key, file_ext, url, abc = tunes.retrieve(conn, tune_id)
        tuneList.append((image_path, title, repeats))
    return json.dumps([book_name, set_name, wrap, wrap_to, tuneList])
Example #4
0
def preview_set(set_number):
    book_name, set_name, wrap, wrap_to, tune_list = sets.retrieve(conn, set_number)
    tuneList = list()
    for (tune_id, repeats) in tune_list:
        image_path, title, composer, tune_type, timesig, key, file_ext, url, abc = tunes.retrieve(conn, tune_id)
        tuneList.append((image_path, title, repeats))
    return render_template('set_preview.html', book_name=book_name, set_name=set_name, wrap=wrap, wrap_to=wrap_to, tune_list=tuneList)
Example #5
0
def edit_song(tune_id):
    if 'username' not in session: return redirect(url_for('login'))
    if request.method == 'GET':
        image_path, title, composer, tune_type, timesig, key, file_ext, url, chord = tunes.retrieve(
            conn, int(tune_id))
        if title is None: title = ''
        if tune_type is not None:
            return redirect(url_for('edit_tune', tune_id=tune_id))
        timesig = '' if timesig is None else str(timesig /
                                                 10) + '/' + str(timesig % 10)
        if key is None: key = ''
        if chord is None: chord = ''
    else:
        title = request.form['title']
        composer = request.form['composer']
        timesig = request.form['timesig']
        if timesig is not None and timesig != '':
            s = timesig.split('/')
            ts = int(s[0]) * 10 + int(s[1])
        key = request.form['key']
        chord = request.form['chord']
        tunes.update(conn, tune_id, title, composer, None, ts, key, None, None,
                     chord)
    return render_template('edit_song.html',
                           title=uc(title),
                           composer=uc(composer),
                           timesig=timesig,
                           key=key,
                           chord=uc(chord),
                           song_html=webchord.chopro2html(uc(chord)),
                           tune_id=tune_id)
Example #6
0
def edit_tune_abc(tune_id):
    if 'username' not in session: return redirect(url_for('login'))
    if request.method == 'GET':
        image_path, title, composer, tune_type, timesig, key, file_ext, url, abc = tunes.retrieve(conn, int(tune_id))
        if title is None: title = ''
        if tune_type is None: tune_type = ''
        timesig = '' if timesig is None else str(timesig / 10) + '/' + str(timesig % 10)
        if key is None: key = ''
        if abc is None: abc = ''
    else:
        title = request.form['title']
        tune_type = request.form['type']
        timesig = request.form['timesig']
        if timesig is not None and timesig != '':
            s = timesig.split('/')
            its = int(s[0])*10 + int(s[1])
        key = request.form['key']
        abc = request.form['abc']
        if abc == '': return "ABC field must be filled"
        idata = request.form['imgdata'].decode("utf-8")
        idata = idata.replace('data:image/png;base64,', '')
        idata = idata.replace(' ', '+')
        idata = base64.b64decode(idata)
        tunes.update(conn, tune_id, title, None, tune_type, its, key, 'png', '', abc)
        f = open('static/img/' + tune_id + '.png', 'wb')
        f.write(idata)
        f.close()
    return render_template('edit_tune_abc.html',
        title=title,
        tune_type=tune_type,
        timesig=timesig,
        key=key,
        abc=abc,
        tune_id=tune_id)
Example #7
0
def json_set(set_number):
    book_name, set_name, wrap, wrap_to, tune_list = sets.retrieve(
        conn, set_number)
    tuneList = list()
    for (tune_id, repeats) in tune_list:
        image_path, title, composer, tune_type, timesig, key, file_ext, url, abc = tunes.retrieve(
            conn, tune_id)
        tuneList.append((image_path, title, repeats))
    return json.dumps([book_name, set_name, wrap, wrap_to, tuneList])
Example #8
0
def preview_set(set_number):
    book_name, set_name, wrap, wrap_to, tune_list = sets.retrieve(
        conn, set_number)
    tuneList = list()
    for (tune_id, repeats) in tune_list:
        image_path, title, composer, tune_type, timesig, key, file_ext, url, abc = tunes.retrieve(
            conn, tune_id)
        tuneList.append((image_path, title, repeats))
    return render_template('set_preview.html',
                           book_name=book_name,
                           set_name=set_name,
                           wrap=wrap,
                           wrap_to=wrap_to,
                           tune_list=tuneList)
Example #9
0
def show_set(set_number):
    book_name, set_name, wrap, wrap_to, tune_list = sets.retrieve(conn, set_number)
    tuneList = list()
    wrap_title = ""
    # once through the tune list
    for (tune_id, repeats) in tune_list:
        image_path, title, composer, tune_type, timesig, key, file_ext, url, abc = tunes.retrieve(conn, tune_id)
        tuneList.append((image_path, title, repeats))
    if wrap:
        wrap_title = tuneList[wrap_to][1]
        tune_count = len(tuneList)
        for i in xrange(29):
            # 30 more times through the repeated portion
            for j in xrange(wrap_to, tune_count):
                image_path, title, repeats = tuneList[j]
                tuneList.append((image_path, title, repeats))
    return render_template('set_show.html', set_name=set_name, tune_list=tuneList, wrap=wrap, wrap_title=wrap_title)
Example #10
0
def show_set(set_number):
    book_name, set_name, wrap, wrap_to, tune_list = sets.retrieve(
        conn, set_number)
    tuneList = list()
    wrap_title = ""
    # once through the tune list
    for (tune_id, repeats) in tune_list:
        image_path, title, composer, tune_type, timesig, key, file_ext, url, abc = tunes.retrieve(
            conn, tune_id)
        tuneList.append((image_path, title, repeats))
    if wrap:
        wrap_title = tuneList[wrap_to][1]
        tune_count = len(tuneList)
        for i in xrange(29):
            # 30 more times through the repeated portion
            for j in xrange(wrap_to, tune_count):
                image_path, title, repeats = tuneList[j]
                tuneList.append((image_path, title, repeats))
    return render_template('set_show.html',
                           set_name=set_name,
                           tune_list=tuneList,
                           wrap=wrap,
                           wrap_title=wrap_title)
Example #11
0
def edit_tune_abc(tune_id):
    if 'username' not in session: return redirect(url_for('login'))
    if request.method == 'GET':
        image_path, title, composer, tune_type, timesig, key, file_ext, url, abc = tunes.retrieve(
            conn, int(tune_id))
        if title is None: title = ''
        if tune_type is None: tune_type = ''
        timesig = '' if timesig is None else str(timesig /
                                                 10) + '/' + str(timesig % 10)
        if key is None: key = ''
        if abc is None: abc = ''
    else:
        title = request.form['title']
        tune_type = request.form['type']
        timesig = request.form['timesig']
        if timesig is not None and timesig != '':
            s = timesig.split('/')
            its = int(s[0]) * 10 + int(s[1])
        key = request.form['key']
        abc = request.form['abc']
        if abc == '': return "ABC field must be filled"
        idata = request.form['imgdata'].decode("utf-8")
        idata = idata.replace('data:image/png;base64,', '')
        idata = idata.replace(' ', '+')
        idata = base64.b64decode(idata)
        tunes.update(conn, tune_id, title, None, tune_type, its, key, 'png',
                     '', abc)
        f = open('static/img/' + tune_id + '.png', 'wb')
        f.write(idata)
        f.close()
    return render_template('edit_tune_abc.html',
                           title=title,
                           tune_type=tune_type,
                           timesig=timesig,
                           key=key,
                           abc=abc,
                           tune_id=tune_id)
Example #12
0
def show_song(tune_id):
    tune_id = int(tune_id)
    image_path, title, composer, tune_type, timesig, key, file_ext, url, chord = tunes.retrieve(conn, tune_id)
    return render_template('show_song.html', song_html=webchord.chopro2html(uc(chord)))
Example #13
0
def expand_sets(book):
    if type(book) is list:
        name, chapters = book
        expandedChapters = list()
        for chapter in chapters:
            expandedChapters.append(expand_sets(chapter))
        return [name, expandedChapters]
    else:
        set_id = int(book)
        book_name, set_name, wrap, wrap_to, tune_list = sets.retrieve(conn, set_id)
        tuneList = list()
        for (tune_id, repeats) in tune_list:
            image_path, title, composer, tune_type, timesig, key, file_ext, url, abc = tunes.retrieve(conn, tune_id)
            tuneList.append([image_path, title, repeats])
        return [set_name, wrap, wrap_to, tuneList]
Example #14
0
def expand_sets(book):
    if type(book) is list:
        name, chapters = book
        expandedChapters = list()
        for chapter in chapters:
            expandedChapters.append(expand_sets(chapter))
        return [name, expandedChapters]
    else:
        set_id = int(book)
        book_name, set_name, wrap, wrap_to, tune_list = sets.retrieve(
            conn, set_id)
        tuneList = list()
        for (tune_id, repeats) in tune_list:
            image_path, title, composer, tune_type, timesig, key, file_ext, url, abc = tunes.retrieve(
                conn, tune_id)
            tuneList.append([image_path, title, repeats])
        return [set_name, wrap, wrap_to, tuneList]
Example #15
0
def show_song(tune_id):
    tune_id = int(tune_id)
    image_path, title, composer, tune_type, timesig, key, file_ext, url, chord = tunes.retrieve(
        conn, tune_id)
    return render_template('show_song.html',
                           song_html=webchord.chopro2html(uc(chord)))
Example #16
0
def editSpecificTune(tune_id):
    if 'username' not in session: return redirect(url_for('login'))
    tune_id = int(tune_id)
    if request.method == 'GET':
        image_path, title, composer, tune_type, timesig, key, file_ext, url, abc = tunes.retrieve(
            conn, tune_id)
        if title is None: title = ''
        if tune_type is None: tune_type = ''
        timesig = '' if timesig is None else str(timesig /
                                                 10) + '/' + str(timesig % 10)
        if key is None: key = ''
        if url is None: url = ''
        if abc is None: abc = ''
        return render_template('edit_tune.html',
                               tune_id=tune_id,
                               title=title,
                               tune_type=tune_type,
                               timesig=timesig,
                               key=key,
                               url=url,
                               abc=abc,
                               image_path=image_path,
                               ur=str(random.randint(1, 999)))
    else:
        f = request.files['img']
        t = f.content_type
        file_ext = None
        fileUploaded = True
        if (t == 'image/jpeg'): file_ext = 'jpg'
        elif (t == 'image/png'): file_ext = 'png'
        else:
            fileUploaded = False
            tune_id = int(tune_id)
            image_path, title, composer, tune_type, timesig, key, file_ext, url, abc = tunes.retrieve(
                conn, tune_id)
        title = request.form['title']
        if title == '': title = None
        tune_type = request.form['type']
        if tune_type == '': tune_type = None
        timesig = request.form['timesig']
        if timesig is not None and timesig != '':
            s = timesig.split('/')
            timesig = int(s[0]) * 10 + int(s[1])
        else:
            timesig = None
        key = request.form['key']
        if key == '': key = None
        url = request.form['url']
        if url == '': url = None
        new_abc = request.form['abc']
        if new_abc == '': new_abc = None
        if fileUploaded:
            # user uploaded a new image for this tune; replace any old one
            tunes.update(conn, tune_id, title, None, tune_type, timesig, key,
                         file_ext, url, new_abc)
            f.save('static/img/%d.%s' % (tune_id, file_ext))
        #elif new_abc != abc:
        #    # user did not upload a new tune image, but edited ABC; create new image
        #    file_ext = 'png'
        #    tunes.update(conn, tune_id, title, None, tune_type, timesig, key, file_ext, url, new_abc)
        #    scriptName = 'tune_image.bat' if platform.system() == 'Windows' else './tune_image.sh'
        #    subprocess.Popen([scriptName, str(tune_id), 'static/img'])

        return redirect(request.referrer)