From 353acf7ae66d0e31a8f6871c900cc9bdf197c3dc Mon Sep 17 00:00:00 2001
From: itdominator <1itdominator@gmail.com>
Date: Sat, 11 Feb 2023 20:25:13 -0600
Subject: [PATCH] Restructuring file layout, import cleanup
---
linux-requirements.txt | 2 ++
src/core/__builtins__.py | 3 ++-
src/core/__init__.py | 14 +++++++++++---
src/core/config.py | 10 +++++-----
src/core/forms.py | 14 ++++++++++++--
src/core/models.py | 5 +++--
src/core/routes/CRUD.py | 5 -----
src/core/routes/Favorites.py | 4 ----
src/core/routes/Images.py | 8 +++-----
src/core/routes/Routes.py | 11 ++---------
src/core/routes/pages/Flask_Login.py | 19 ++++++++++++++-----
src/core/routes/pages/Flask_Register.py | 15 ++++++++++-----
src/core/routes/pages/OIDC_Login.py | 10 ++++++----
src/core/routes/pages/OIDC_Register.py | 14 +++++++++-----
.../js/{ => libs}/color-mode-toggler.js | 0
.../static/js/{ => libs}/cookie-manager.js | 0
src/core/static/js/{ => webfm}/ajax.js | 0
.../js/{ => webfm}/backgrounds-manager.js | 0
.../static/js/{ => webfm}/context-menu.js | 7 +++++--
.../js/{ => webfm}/events-privileged.js | 0
src/core/static/js/{ => webfm}/events.js | 0
src/core/static/js/{ => webfm}/post-ajax.js | 0
.../static/js/{ => webfm}/privileged-logic.js | 0
.../static/js/{ => webfm}/react-ui-logic.js | 4 +---
src/core/static/js/{ => webfm}/ui-logic.js | 0
.../static/js/{ => webfm}/video-events.js | 0
src/core/templates/layout.html | 8 ++++----
src/core/templates/pages/index.html | 17 +++++++++--------
src/core/utils/Logger.py | 3 ++-
src/core/utils/MessageHandler.py | 1 +
30 files changed, 101 insertions(+), 73 deletions(-)
rename src/core/static/js/{ => libs}/color-mode-toggler.js (100%)
rename src/core/static/js/{ => libs}/cookie-manager.js (100%)
rename src/core/static/js/{ => webfm}/ajax.js (100%)
rename src/core/static/js/{ => webfm}/backgrounds-manager.js (100%)
rename src/core/static/js/{ => webfm}/context-menu.js (89%)
rename src/core/static/js/{ => webfm}/events-privileged.js (100%)
rename src/core/static/js/{ => webfm}/events.js (100%)
rename src/core/static/js/{ => webfm}/post-ajax.js (100%)
rename src/core/static/js/{ => webfm}/privileged-logic.js (100%)
rename src/core/static/js/{ => webfm}/react-ui-logic.js (98%)
rename src/core/static/js/{ => webfm}/ui-logic.js (100%)
rename src/core/static/js/{ => webfm}/video-events.js (100%)
diff --git a/linux-requirements.txt b/linux-requirements.txt
index 756b651..2dd87cf 100644
--- a/linux-requirements.txt
+++ b/linux-requirements.txt
@@ -3,6 +3,7 @@ certifi==2022.12.7
charset-normalizer==3.0.1
click==7.1.2
dnspython==1.16.0
+ecdsa==0.18.0
email-validator==1.1.2
eventlet==0.30.1
Flask==1.1.2
@@ -26,6 +27,7 @@ pyasn1-modules==0.2.8
pycairo==1.23.0
PyGObject==3.42.2
pyparsing==2.4.7
+pywebpush==1.14.0
pyxdg==0.28
requests==2.28.2
rsa==4.7
diff --git a/src/core/__builtins__.py b/src/core/__builtins__.py
index 30e4e11..19bc464 100644
--- a/src/core/__builtins__.py
+++ b/src/core/__builtins__.py
@@ -11,6 +11,7 @@ from flask import session
# Application imports
from core import app
from core.utils import Logger
+from core.utils import MessageHandler # Get simple message processor
@@ -51,7 +52,7 @@ builtins.BG_IMGS_PATH = ROOT_FILE_PTH + "/static/imgs/backgrounds/"
builtins.BG_FILE_TYPE = (".webm", ".mp4", ".gif", ".jpg", ".png", ".webp")
builtins.valid_fname_pat = re.compile(r"[a-z0-9A-Z-_\[\]\(\)\| ]{4,20}")
builtins.logger = Logger().get_logger()
-
+builtins.json_message = MessageHandler()
# NOTE: Need threads defined befor instantiating
diff --git a/src/core/__init__.py b/src/core/__init__.py
index fb9ce5b..cafddee 100644
--- a/src/core/__init__.py
+++ b/src/core/__init__.py
@@ -6,7 +6,11 @@ from flask import Flask
from flask_oidc import OpenIDConnect
# Flask Login Path
from flask_bcrypt import Bcrypt
-from flask_login import current_user, login_user, logout_user, LoginManager
+from flask_login import current_user
+from flask_login import login_user
+from flask_login import logout_user
+from flask_login import LoginManager
+
app = Flask(__name__)
app.config.from_object("core.config.ProductionConfig")
@@ -36,10 +40,14 @@ app.jinja_env.globals['oidc_isAdmin'] = oidc_isAdmin
app.jinja_env.globals['TITLE'] = app.config["TITLE"]
-from core.models import db, User, Favorites
+from core.models import db
+from core.models import User
+from core.models import Favorites
+
db.init_app(app)
with app.app_context():
db.create_all()
-from core.forms import RegisterForm, LoginForm
+from core.forms import RegisterForm
+from core.forms import LoginForm
from core import routes
diff --git a/src/core/config.py b/src/core/config.py
index acd6569..bdb3b7f 100644
--- a/src/core/config.py
+++ b/src/core/config.py
@@ -1,14 +1,14 @@
# System import
-import os, secrets
+import os
+import secrets
from datetime import timedelta
-
# Lib imports
-
# Apoplication imports
+
# Configs
APP_NAME = 'WebFM'
ROOT_FILE_PTH = os.path.dirname(os.path.realpath(__file__))
@@ -44,8 +44,8 @@ class Config(object):
# We are overiding some of the the shellmen view settings with these to make it all work with flask.
# These are passed along to the shellmen view from the Routes file upon the window controller creation.
ABS_THUMBS_PTH = f"{STATIC_FPTH}/imgs/thumbnails" # Used for thumbnail generation
- REMUX_FOLDER = f"{STATIC_FPTH}/remuxs" # Remuxed files folder
- FFMPG_THUMBNLR = f"{STATIC_FPTH}/ffmpegthumbnailer" # Thumbnail generator binary
+ REMUX_FOLDER = f"{STATIC_FPTH}/remuxs" # Remuxed files folder
+ FFMPG_THUMBNLR = f"{STATIC_FPTH}/ffmpegthumbnailer" # Thumbnail generator binary
diff --git a/src/core/forms.py b/src/core/forms.py
index 12ba62b..3fe3127 100644
--- a/src/core/forms.py
+++ b/src/core/forms.py
@@ -1,9 +1,19 @@
from flask_wtf import FlaskForm
-from wtforms import StringField, PasswordField, SubmitField
-from wtforms.validators import DataRequired, Length, Email, EqualTo, ValidationError
+
+from wtforms import StringField
+from wtforms import PasswordField
+from wtforms import SubmitField
+
+from wtforms.validators import DataRequired
+from wtforms.validators import Length
+from wtforms.validators import Email
+from wtforms.validators import EqualTo
+from wtforms.validators import ValidationError
+
from core import User
+
class RegisterForm(FlaskForm):
username = StringField('Username', validators=[DataRequired(), Length(min=4, max=24)])
email = StringField('Email', validators=[DataRequired(), Email()])
diff --git a/src/core/models.py b/src/core/models.py
index 2429bf0..1360f85 100644
--- a/src/core/models.py
+++ b/src/core/models.py
@@ -1,11 +1,12 @@
# System imports
# Lib imports
+from flask_login import UserMixin
from flask_sqlalchemy import SQLAlchemy
# App imports
-from . import app, login_manager
-from flask_login import UserMixin
+from . import app
+from . import login_manager
db = SQLAlchemy(app)
diff --git a/src/core/routes/CRUD.py b/src/core/routes/CRUD.py
index 52c7ffd..c3770c6 100644
--- a/src/core/routes/CRUD.py
+++ b/src/core/routes/CRUD.py
@@ -9,7 +9,6 @@ from flask_uploads import ALL
from flask_uploads import configure_uploads
from flask_uploads import UploadSet
-
# App imports
# Get from __init__
from core import app
@@ -17,10 +16,6 @@ from core import db
from core import Favorites
from core import oidc
-from core.utils import MessageHandler # Get simple message processor
-
-json_message = MessageHandler()
-
@app.route('/api/delete/<_hash>', methods=['GET', 'POST'])
diff --git a/src/core/routes/Favorites.py b/src/core/routes/Favorites.py
index 5f76298..b449e21 100644
--- a/src/core/routes/Favorites.py
+++ b/src/core/routes/Favorites.py
@@ -7,10 +7,6 @@ from flask import request
from core import app
from core import db
from core import Favorites # Get from __init__
-from core.utils import MessageHandler # Get simple message processor
-
-
-json_message = MessageHandler()
diff --git a/src/core/routes/Images.py b/src/core/routes/Images.py
index fe832d7..ea94ade 100644
--- a/src/core/routes/Images.py
+++ b/src/core/routes/Images.py
@@ -6,17 +6,15 @@ import shutil
# Lib imports
from flask import request
-
# App imports
# Get from __init__
from core import app
-
-from core.utils import MessageHandler # Get simple message processor
from core.utils.tmdbscraper import scraper # Get media art scraper
-json_message = MessageHandler()
-tmdb = scraper.get_tmdb_scraper()
+
+tmdb = scraper.get_tmdb_scraper()
+
@app.route('/api/get-background-poster-trailer', methods=['GET', 'POST'])
diff --git a/src/core/routes/Routes.py b/src/core/routes/Routes.py
index e162009..7fd581c 100644
--- a/src/core/routes/Routes.py
+++ b/src/core/routes/Routes.py
@@ -5,21 +5,16 @@ import os
from flask import redirect
from flask import request
from flask import render_template
+from flask import session
from flask import send_from_directory
# App imports
- # Get from __init__
+ # Get from __init__
from core import app
from core import db
from core import Favorites
from core import oidc
-from core.utils import MessageHandler # Get simple message processor
-
-
-
-json_message = MessageHandler()
-
@app.route('/', methods=['GET', 'POST'])
@@ -34,7 +29,6 @@ def home():
message = 'Must use GET request type...')
-
@app.route('/api/list-files/<_hash>', methods=['GET', 'POST'])
def listFiles(_hash = None):
if request.method == 'POST':
@@ -75,7 +69,6 @@ def listFiles(_hash = None):
return json_message.create("danger", msg)
-
@app.route('/api/file-manager-action/<_type>/<_hash>', methods=['GET', 'POST'])
def fileManagerAction(_type, _hash = None):
view = get_view()
diff --git a/src/core/routes/pages/Flask_Login.py b/src/core/routes/pages/Flask_Login.py
index 6d33a83..1b1ae2e 100644
--- a/src/core/routes/pages/Flask_Login.py
+++ b/src/core/routes/pages/Flask_Login.py
@@ -1,15 +1,24 @@
# Python imports
# Lib imports
-from flask import request, render_template, flash, redirect, url_for
-from flask_login import current_user, login_user, logout_user
+from flask import request
+from flask import render_template
+from flask import flash
+from flask import redirect
+from flask import url_for
+
+from flask_login import current_user
+from flask_login import login_user
+from flask_login import logout_user
# App imports
-from core import app, bcrypt, db, User, LoginForm
-from core.utils import MessageHandler # Get simple message processor
+from core import app
+from core import bcrypt
+from core import db
+from core import User
+from core import LoginForm
-msgHandler = MessageHandler()
@app.route('/app-login', methods=['GET', 'POST'])
def app_login():
diff --git a/src/core/routes/pages/Flask_Register.py b/src/core/routes/pages/Flask_Register.py
index 21398e6..dc25a88 100644
--- a/src/core/routes/pages/Flask_Register.py
+++ b/src/core/routes/pages/Flask_Register.py
@@ -1,16 +1,21 @@
# Python imports
# Lib imports
-from flask import request, render_template, url_for, redirect, flash
+from flask import render_template
+from flask import url_for
+from flask import redirect
+from flask import flash
# App imports
-from core import app, bcrypt, db, current_user, RegisterForm # Get from __init__
+ # Get from __init__
+from core import app
+from core import bcrypt
+from core import db
+from core import current_user
+from core import RegisterForm
from core.models import User
-from core.utils import MessageHandler # Get simple message processor
-msgHandler = MessageHandler()
-
@app.route('/app-register', methods=['GET', 'POST'])
def app_register():
diff --git a/src/core/routes/pages/OIDC_Login.py b/src/core/routes/pages/OIDC_Login.py
index b9f4a9b..1c087ee 100644
--- a/src/core/routes/pages/OIDC_Login.py
+++ b/src/core/routes/pages/OIDC_Login.py
@@ -1,17 +1,19 @@
# Python imports
# Lib imports
-from flask import request, redirect, flash
-
+from flask import request
+from flask import redirect
+from flask import flash
# App imports
-from ... import app, oidc
+from ... import app
+from ... import oidc
+
@app.route('/oidc-login', methods=['GET', 'POST'])
@oidc.require_login
def oidc_login():
- print(request)
return redirect("/")
diff --git a/src/core/routes/pages/OIDC_Register.py b/src/core/routes/pages/OIDC_Register.py
index a5b02cd..6ac2924 100644
--- a/src/core/routes/pages/OIDC_Register.py
+++ b/src/core/routes/pages/OIDC_Register.py
@@ -1,15 +1,19 @@
# Python imports
# Lib imports
-from flask import request, render_template, url_for, redirect, flash
+from flask import request
+from flask import render_template
+from flask import url_for
+from flask import redirect
+from flask import flash
# App imports
-from ... import app, oidc, db # Get from __init__
-from ...utils import MessageHandler # Get simple message processor
+ # Get from __init__
+from ... import app
+from ... import oidc
+from ... import db
-msgHandler = MessageHandler()
-
@app.route('/oidc-register', methods=['GET', 'POST'])
def oidc_register():
diff --git a/src/core/static/js/color-mode-toggler.js b/src/core/static/js/libs/color-mode-toggler.js
similarity index 100%
rename from src/core/static/js/color-mode-toggler.js
rename to src/core/static/js/libs/color-mode-toggler.js
diff --git a/src/core/static/js/cookie-manager.js b/src/core/static/js/libs/cookie-manager.js
similarity index 100%
rename from src/core/static/js/cookie-manager.js
rename to src/core/static/js/libs/cookie-manager.js
diff --git a/src/core/static/js/ajax.js b/src/core/static/js/webfm/ajax.js
similarity index 100%
rename from src/core/static/js/ajax.js
rename to src/core/static/js/webfm/ajax.js
diff --git a/src/core/static/js/backgrounds-manager.js b/src/core/static/js/webfm/backgrounds-manager.js
similarity index 100%
rename from src/core/static/js/backgrounds-manager.js
rename to src/core/static/js/webfm/backgrounds-manager.js
diff --git a/src/core/static/js/context-menu.js b/src/core/static/js/webfm/context-menu.js
similarity index 89%
rename from src/core/static/js/context-menu.js
rename to src/core/static/js/webfm/context-menu.js
index 487e99a..518e067 100644
--- a/src/core/static/js/context-menu.js
+++ b/src/core/static/js/webfm/context-menu.js
@@ -15,11 +15,13 @@ const setPosition = ({ top, left }) => {
};
-window.addEventListener("click", e => {
+document.body.addEventListener("click", e => {
if(menuVisible) toggleMenu("hide");
});
-window.addEventListener("contextmenu", e => {
+document.body.addEventListener("contextmenu", e => {
+ e.preventDefault();
+
let target = e.target;
let elm = target;
while (elm.nodeName != "BODY") {
@@ -50,6 +52,7 @@ window.addEventListener("contextmenu", e => {
left: posX,
top: posY
};
+
setPosition(origin);
return false;
});
diff --git a/src/core/static/js/events-privileged.js b/src/core/static/js/webfm/events-privileged.js
similarity index 100%
rename from src/core/static/js/events-privileged.js
rename to src/core/static/js/webfm/events-privileged.js
diff --git a/src/core/static/js/events.js b/src/core/static/js/webfm/events.js
similarity index 100%
rename from src/core/static/js/events.js
rename to src/core/static/js/webfm/events.js
diff --git a/src/core/static/js/post-ajax.js b/src/core/static/js/webfm/post-ajax.js
similarity index 100%
rename from src/core/static/js/post-ajax.js
rename to src/core/static/js/webfm/post-ajax.js
diff --git a/src/core/static/js/privileged-logic.js b/src/core/static/js/webfm/privileged-logic.js
similarity index 100%
rename from src/core/static/js/privileged-logic.js
rename to src/core/static/js/webfm/privileged-logic.js
diff --git a/src/core/static/js/react-ui-logic.js b/src/core/static/js/webfm/react-ui-logic.js
similarity index 98%
rename from src/core/static/js/react-ui-logic.js
rename to src/core/static/js/webfm/react-ui-logic.js
index 8221959..750150b 100644
--- a/src/core/static/js/react-ui-logic.js
+++ b/src/core/static/js/webfm/react-ui-logic.js
@@ -53,9 +53,7 @@ class FilesList extends React.Component {
for (let file of files) {
const name = file[0];
- if (name == "000.jpg") {
- continue
- }
+ if (name == "000.jpg") { continue }
const hash = file[1];
const fsize = file[2];
diff --git a/src/core/static/js/ui-logic.js b/src/core/static/js/webfm/ui-logic.js
similarity index 100%
rename from src/core/static/js/ui-logic.js
rename to src/core/static/js/webfm/ui-logic.js
diff --git a/src/core/static/js/video-events.js b/src/core/static/js/webfm/video-events.js
similarity index 100%
rename from src/core/static/js/video-events.js
rename to src/core/static/js/webfm/video-events.js
diff --git a/src/core/templates/layout.html b/src/core/templates/layout.html
index d404a03..e6611dc 100644
--- a/src/core/templates/layout.html
+++ b/src/core/templates/layout.html
@@ -117,10 +117,10 @@
{% block body_scripts_additional %}
{% endblock body_scripts_additional%}
-
-
-
-
+
+
+
+
{% endblock %}