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)
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)
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])
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)
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)
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)
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])
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)
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)
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)
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)
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)))
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]
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]
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)))
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)