You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.2 KiB
Python
66 lines
2.2 KiB
Python
from flask import Blueprint, render_template, send_from_directory
|
|
from flask import redirect, url_for, flash, request
|
|
from flask_login import logout_user, current_user
|
|
|
|
from suchwowx.models import User, Remote
|
|
from suchwowx.factory import db
|
|
from suchwowx import config
|
|
|
|
|
|
bp = Blueprint('meta', 'meta')
|
|
|
|
|
|
@bp.route('/uploads/<path:filename>')
|
|
def uploaded_file(filename):
|
|
"""
|
|
Retrieve an uploaded file from uploads directory.
|
|
"""
|
|
return send_from_directory(f'{config.DATA_FOLDER}/uploads', filename)
|
|
|
|
|
|
@bp.route('/about')
|
|
def about():
|
|
return render_template('about.html')
|
|
|
|
|
|
@bp.route('/disconnect')
|
|
def disconnect():
|
|
logout_user()
|
|
return redirect(url_for('meme.index'))
|
|
|
|
|
|
@bp.route('/remotes', methods=['GET', 'POST'])
|
|
def remotes():
|
|
if not current_user.is_authenticated or not current_user.is_moderator():
|
|
flash('You need to be moderator to access that page.', 'warning')
|
|
return redirect(url_for('meme.index'))
|
|
remotes = Remote.query.filter().order_by(Remote.create_date.asc())
|
|
ep = request.form.get('endpoint')
|
|
if ep:
|
|
if ep.startswith('http'):
|
|
if not Remote.query.filter(Remote.endpoint == ep).first():
|
|
r = Remote(endpoint=ep)
|
|
db.session.add(r)
|
|
db.session.commit()
|
|
flash('Added new remote server.', 'success')
|
|
else:
|
|
flash('That remote server already exists.', 'warning')
|
|
else:
|
|
flash('Incorrect endpoint provided, must start with http or https.', 'warning') # noqa
|
|
return render_template('remotes.html', remotes=remotes)
|
|
|
|
|
|
@bp.route('/remotes/delete/<int:remote_id>')
|
|
def delete_remote(remote_id):
|
|
existing = Remote.query.get(remote_id)
|
|
if not current_user.is_authenticated or not current_user.is_moderator():
|
|
flash('You need to be moderator to access that page.', 'warning')
|
|
return redirect(url_for('meme.index'))
|
|
if not existing:
|
|
flash('That remote does not exist', 'warning')
|
|
return redirect(url_for('meme.mod'))
|
|
db.session.delete(existing)
|
|
db.session.commit()
|
|
flash(f'Deleted remote server {existing}', 'success')
|
|
return redirect(url_for('meta.remotes'))
|