This repository has been archived on 2025-04-11. You can view files and clone it, but cannot push or open issues or pull requests.
uwu-me/uwume/views.py

140 lines
4.4 KiB
Python

try:
from .lib.helpers import get_static_paths, get_content_text
from .lib.classUser import User
except:
from lib.classUser import User
from lib.helpers import get_static_paths, get_content_text
from . import app
from flask import Flask, render_template, redirect, url_for, request, flash
from flask_login import LoginManager, UserMixin, login_required, login_user, current_user, logout_user
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = "login"
'''
@login_manager.user_loader
def load_user(request):
token = request.headers.get('Authorization')
if(token is None):
token = request.args.get('token')
if(token is not None):
username, password = token.split(':') # naive token
user_entry = User.get(username)
if(user_entry is not None):
user = User(user_entry[0], user_entry[1])
if(user.password == password):
return user
return None
'''
@login_manager.user_loader
def load_user(request):
return User(request, User.user_database[request][1])
@app.route('/user/<username>/getCurval', methods=['GET'])
def get_curval(username):
error = ''
if(request.method == 'GET'):
try:
return f'{User.user_database[username][2].curval}'
except Exception as e:
error = f'{e}'
return f'ERROR: {error}'
@app.route('/user/<username>', methods=['POST', 'GET'])
def user_page(username):
error = ''
if(request.method == 'GET'):
if(username in User.user_database.keys()):
return render_template('user/index.html', this_user=username, user_curval=str(User.user_database[username][2].curval), static_paths=get_static_paths(), content_text=get_content_text())
else:
error = 'User doesn\'t exist.'
elif(request.method == 'POST'):
try:
User.user_database[username][2].increment()
print('test')
return f'{User.user_database[username][2].curval}'
except Exception as e:
error = f'{e}'
return f'ERROR: {error}'
@app.route('/home/getCurval', methods=['GET'])
@login_required
def home_get_curval():
error = ''
if(request.method == 'GET'):
try:
return f'{User.user_database[current_user.id][2].curval}'
except Exception as e:
error = f'{e}'
return f'ERROR: {error}'
@app.route('/home', methods=['GET'])
@login_required
def home():
return render_template('home/index.html', user_curval=str(User.user_database[current_user.id][2].curval), static_paths=get_static_paths(), content_text=get_content_text())
@app.route('/signup', methods=['GET', 'POST'])
def signup():
error = 'Invalid method.'
if(request.method == 'POST'):
username = request.form['username']
password = request.form['password']
if(not username in User.user_database.keys()):
userClass = User(username, password)
User.user_database[username] = (username, password)
return redirect('/')
else:
flash('It looks like a user already exists with that name.')
return redirect('/signup')
elif(request.method == 'GET'):
return render_template('signup/index.html', static_paths=get_static_paths(), content_text=get_content_text())
return f'ERROR: {error}'
@app.route('/login', methods=['GET', 'POST'])
def login():
error = 'Invalid method.'
if(request.method == 'POST'):
username = request.form['username']
password = request.form['password']
if(username in User.user_database.keys() and password == User.user_database.get(username)[1]):
userClass = User(username, password)
login_user(userClass)
return redirect('home')
else:
error = 'Invalid credentials.'
elif(request.method == 'GET'):
return render_template('login/index.html', static_paths=get_static_paths(), content_text=get_content_text())
return f'ERROR: {error}'
@app.route('/logout', methods=['GET', 'POST'])
def logout():
error = 'Invalid method.'
if(request.method == 'GET'):
logout_user()
return redirect('/')
return f'ERROR: {error}'
@app.route('/', methods=['GET'])
def hello():
if(not current_user.is_active):
return render_template('homepage.html', static_paths=get_static_paths(), content_text=get_content_text())
else:
return redirect('home')
def main():
app.run(host='0.0.0.0', debug=True)