158 lines
5.2 KiB
Python
158 lines
5.2 KiB
Python
try:
|
|
from .lib.helpers import get_static_paths, get_content_text
|
|
from .lib.classUser import User
|
|
from .lib.classUwuCounter import UwuCounter
|
|
from .lib.databaseMethods import get_table, get_count, update_count, get_users, get_users_list, get_all, check_password
|
|
except:
|
|
from lib.classUser import User
|
|
from lib.helpers import get_static_paths, get_content_text
|
|
from lib.classUwuCounter import UwuCounter
|
|
from lib.databaseMethods import get_table, get_count, update_count, get_users, get_all, check_password
|
|
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
|
|
from math import ceil
|
|
|
|
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.get(request)
|
|
|
|
|
|
@app.route('/explore/<page>', methods=['GET'])
|
|
def explore_users_list(page):
|
|
return render_template('explore/index.html', user_page_current=int(page), user_page_list=get_users_list(int(page)), user_pages_length=ceil(len(get_users())/10), static_paths=get_static_paths(), content_text=get_content_text())
|
|
|
|
|
|
@app.route('/explore', methods=['GET'])
|
|
def explore_users():
|
|
return redirect('/explore/0')
|
|
|
|
|
|
@app.route('/user/<username>/getCurval', methods=['GET'])
|
|
def get_curval(username):
|
|
error = ''
|
|
if(request.method == 'GET'):
|
|
try:
|
|
new_count = User.get(username).count.curval
|
|
update_count(username, new_count)
|
|
return f'{new_count}'
|
|
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 get_users()):
|
|
return render_template('user/index.html', this_user=username, user_curval=f'{User.get(username).count.curval}', static_paths=get_static_paths(), content_text=get_content_text())
|
|
else:
|
|
error = f'User doesn\'t exist.\n{username}\n{get_users()}'
|
|
elif(request.method == 'POST'):
|
|
try:
|
|
User.get(username).count.increment()
|
|
return f'{User.get(username).count.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:
|
|
new_count = User.get(current_user.id).count.curval
|
|
update_count(current_user.id, new_count)
|
|
return f'{new_count}'
|
|
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.get(current_user.id).count.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 get_users()):
|
|
User.load_user(User(username, password))
|
|
#User.user_database[username] = (username, password, UwuCounter(0))
|
|
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 get_users() and check_password(username, password)):
|
|
userClass = User.get(username)
|
|
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)
|