def new_application(): user = require_user() errors = [] title = 'New Application' if request.form.get('submit'): name = request.form.get('name') if not name: errors.append('Missing application name') version = request.form.get('version') if not version: errors.append('Missing version number') email = request.form.get('email') if not email: errors.append('Missing email address') if email and not is_valid_email(email): errors.append('Invalid email address') website = request.form.get('website') if website and not is_valid_url(website): errors.append('Invalid website URL') if not errors: insert_application(db.session.connection(), { 'name': name, 'version': version, 'email': email, 'website': website, 'account_id': user.id, }) db.session.commit() return redirect(url_for('.applications')) return render_template('new-application.html', title=title, form=request.form, errors=errors)
def new_application(): user = require_user() errors = [] title = 'New Application' if request.form.get('submit'): name = request.form.get('name') if not name: errors.append('Missing application name') version = request.form.get('version') if not version: errors.append('Missing version number') email = request.form.get('email') if email and not is_valid_email(email): errors.append('Invalid email address') website = request.form.get('website') if website and not is_valid_url(website): errors.append('Invalid website URL') if not errors: insert_application(db.session.connection(), { 'name': name, 'version': version, 'email': email, 'website': website, 'account_id': user.id, }) db.session.commit() return redirect(url_for('.applications')) return render_template('new-application.html', title=title, form=request.form, errors=errors)
def application(application_id): user = require_user() title = 'Your Application' conn = db.session.connection() application = conn.execute(""" SELECT * FROM application WHERE id = %s """, (application_id,)).fetchone() if application is None: abort(404) if user.id != application['account_id'] and not user.is_admin: abort(404) monthly_stats = conn.execute(""" SELECT date_trunc('month', date) AS month, sum(count_hits) + sum(count_nohits) AS lookups FROM stats_lookups WHERE application_id = %s GROUP BY date_trunc('month', date) ORDER BY date_trunc('month', date) DESC """, (application_id,)).fetchall() lookups = find_application_lookup_stats(conn, application_id) return render_template('application.html', title=title, app=application, monthly_stats=monthly_stats, lookups=lookups, lookups_json=json.dumps(prepare_chart_data(lookups)))
def applications(): user = require_user() title = 'Your Applications' applications = find_applications_by_account(db.session.connection(), user.id) return render_template('applications.html', title=title, applications=applications)
def toggle_track_mbid(): fingerprint_db = db.get_fingerprint_db() ingest_db = db.get_ingest_db() app_db = db.get_app_db() user = require_user() track_id = request.values.get('track_id', type=int) if track_id: query = sql.select([schema.track.c.gid], schema.track.c.id == track_id) track_gid = fingerprint_db.execute(query).scalar() else: track_gid = request.values.get('track_gid') track_id = resolve_track_gid(fingerprint_db, track_gid) state = bool(request.values.get('state', type=int)) mbid = request.values.get('mbid') if not track_id or not mbid or not track_gid: return redirect(url_for('general.index')) if not is_moderator(app_db, user.id): title = 'MusicBrainz account required' return render_template('toggle_track_mbid_login.html', title=title) query = sql.select([schema.track_mbid.c.id, schema.track_mbid.c.disabled], sql.and_(schema.track_mbid.c.track_id == track_id, schema.track_mbid.c.mbid == mbid)) rows = fingerprint_db.execute(query).fetchall() if not rows: return redirect(url_for('general.index')) id, current_state = rows[0] if state == current_state: return redirect(url_for('.track', track_id_or_gid=track_id)) if request.form.get('submit'): note = request.values.get('note') update_stmt = schema.track_mbid.update().where( schema.track_mbid.c.id == id).values(disabled=state) fingerprint_db.execute(update_stmt) insert_stmt = schema.track_mbid_change.insert().values( track_mbid_id=id, account_id=session['id'], disabled=state, note=note) ingest_db.execute(insert_stmt) db.session.commit() return redirect(url_for('.track', track_id_or_gid=track_id)) if state: title = 'Unlink MBID' else: title = 'Link MBID' return render_template('toggle_track_mbid.html', title=title, track_gid=track_gid, mbid=mbid, state=state, track_id=track_id)
def edit_application(application_id): user = require_user() conn = db.session.connection() application = conn.execute( """ SELECT * FROM application WHERE id = %s """, (application_id, )).fetchone() if application is None: abort(404) if user.id != application['account_id']: abort(404) errors = [] title = 'Edit Application' if request.form.get('submit'): form = request.form name = request.form.get('name') if not name: errors.append('Missing application name') version = request.form.get('version') if not version: errors.append('Missing version number') email = request.form.get('email') if email and not is_valid_email(email): errors.append('Invalid email address') website = request.form.get('website') if website and not is_valid_url(website): errors.append('Invalid website URL') if not errors: update_application( conn, application.id, { 'name': name, 'version': version, 'email': email, 'website': website, 'account_id': user.id, }) db.session.commit() return redirect( url_for('.application', application_id=application.id)) else: form = {} form['name'] = application['name'] form['version'] = application['version'] or '' form['email'] = application['email'] or '' form['website'] = application['website'] or '' return render_template('edit-application.html', title=title, form=form, errors=errors, app=application)
def edit_application(application_id): user = require_user() conn = db.session.connection() application = conn.execute(""" SELECT * FROM application WHERE id = %s """, (application_id,)).fetchone() if application is None: abort(404) if user.id != application['account_id']: abort(404) errors = [] title = 'Edit Applications' if request.form.get('submit'): form = request.form name = request.form.get('name') if not name: errors.append('Missing application name') version = request.form.get('version') if not version: errors.append('Missing version number') email = request.form.get('email') if email and not is_valid_email(email): errors.append('Invalid email address') website = request.form.get('website') if website and not is_valid_url(website): errors.append('Invalid website URL') if not errors: update_application(conn, application.id, { 'name': name, 'version': version, 'email': email, 'website': website, 'account_id': user.id, }) db.session.commit() return redirect(url_for('.applications')) else: form = {} form['name'] = application['name'] form['version'] = application['version'] or '' form['email'] = application['email'] or '' form['website'] = application['website'] or '' return render_template('edit-application.html', title=title, form=form, errors=errors, app=application)
def toggle_track_mbid(): conn = db.session.connection() user = require_user() track_id = request.values.get('track_id', type=int) if track_id: query = sql.select([schema.track.c.gid], schema.track.c.id == track_id) track_gid = conn.execute(query).scalar() else: track_gid = request.values.get('track_gid') track_id = resolve_track_gid(conn, track_gid) state = bool(request.values.get('state', type=int)) mbid = request.values.get('mbid') if not track_id or not mbid or not track_gid: return redirect(url_for('general.index')) if not is_moderator(conn, user.id): title = 'MusicBrainz account required' return render_template('toggle_track_mbid_login.html', title=title) query = sql.select([schema.track_mbid.c.id, schema.track_mbid.c.disabled], sql.and_(schema.track_mbid.c.track_id == track_id, schema.track_mbid.c.mbid == mbid)) rows = conn.execute(query).fetchall() if not rows: return redirect(url_for('general.index')) id, current_state = rows[0] if state == current_state: return redirect(url_for('.track', track_id=track_id)) if request.form.get('submit'): note = request.values.get('note') update_stmt = schema.track_mbid.update().where(schema.track_mbid.c.id == id).values(disabled=state) conn.execute(update_stmt) insert_stmt = schema.track_mbid_change.insert().values(track_mbid_id=id, account_id=session['id'], disabled=state, note=note) conn.execute(insert_stmt) db.session.commit() return redirect(url_for('.track', track_id=track_id)) if state: title = 'Unlink MBID' else: title = 'Link MBID' return render_template('toggle_track_mbid.html', title=title, track_gid=track_gid, mbid=mbid, state=state, track_id=track_id)
def new_api_key(): user = require_user() user.apikey = generate_api_key() db.session.commit() return redirect(url_for('.api_key'))
def api_key(): user = require_user() return render_template('apikey.html', title='Your API Key', apikey=user.apikey)