diff --git a/feedvault/settings.py b/feedvault/settings.py index 3304ccd..f3cfea5 100644 --- a/feedvault/settings.py +++ b/feedvault/settings.py @@ -4,6 +4,7 @@ import os import sys from pathlib import Path +from django.utils import timezone from dotenv import find_dotenv, load_dotenv load_dotenv(dotenv_path=find_dotenv(), verbose=True) @@ -33,20 +34,29 @@ EMAIL_TIMEOUT = 10 DEFAULT_FROM_EMAIL: str = os.getenv(key="EMAIL_HOST_USER", default="webmaster@localhost") SERVER_EMAIL: str = os.getenv(key="EMAIL_HOST_USER", default="webmaster@localhost") USE_X_FORWARDED_HOST = True -INTERNAL_IPS: list[str] = ["127.0.0.1", "localhost"] +INTERNAL_IPS: list[str] = ["127.0.0.1", "localhost", "192.168.1.143"] DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" SITE_ID = 1 PASSWORD_HASHERS: list[str] = ["django.contrib.auth.hashers.Argon2PasswordHasher"] ROOT_URLCONF = "feedvault.urls" WSGI_APPLICATION = "feedvault.wsgi.application" NINJA_PAGINATION_PER_PAGE = 1000 +STATIC_URL = "static/" +STATIC_ROOT = BASE_DIR / "static" +MEDIA_URL = "media/" +MEDIA_ROOT = BASE_DIR / "media" +LOGIN_REDIRECT_URL = "/" +LOGOUT_REDIRECT_URL = "/" + # Is True when running tests, used for not spamming Discord when new users are created TESTING: bool = len(sys.argv) > 1 and sys.argv[1] == "test" INSTALLED_APPS: list[str] = [ "feedvault.apps.FeedVaultConfig", + "debug_toolbar", "django.contrib.auth", + "django.contrib.staticfiles", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages", @@ -54,6 +64,7 @@ INSTALLED_APPS: list[str] = [ ] MIDDLEWARE: list[str] = [ + "debug_toolbar.middleware.DebugToolbarMiddleware", "django.middleware.security.SecurityMiddleware", "django.contrib.sessions.middleware.SessionMiddleware", "django.middleware.common.CommonMiddleware", @@ -120,3 +131,41 @@ TEMPLATES = [ }, }, ] + + +# Create data/logs folder if it doesn't exist +log_folder: Path = BASE_DIR / "data" / "logs" +log_folder.mkdir(parents=True, exist_ok=True) + +LOGGING = { + "version": 1, + "disable_existing_loggers": False, + "handlers": { + "console": { + "level": "DEBUG", + "class": "logging.StreamHandler", + }, + "file": { + "level": "DEBUG", + "class": "logging.FileHandler", + "filename": BASE_DIR / "data" / "logs" / f"{timezone.now().strftime('%Y%m%d')}.log", + }, + }, + "loggers": { + "django": { + "handlers": ["console", "file"], + "level": "INFO", + "propagate": True, + }, + "django.utils.autoreload": { + "handlers": ["console"], + "level": "INFO", + "propagate": True, + }, + "": { + "handlers": ["console", "file"], + "level": "DEBUG", + "propagate": True, + }, + }, +} diff --git a/feedvault/urls.py b/feedvault/urls.py index 79fbf86..7673d0d 100644 --- a/feedvault/urls.py +++ b/feedvault/urls.py @@ -2,7 +2,7 @@ from __future__ import annotations from django.contrib.sitemaps import GenericSitemap from django.contrib.sitemaps.views import sitemap -from django.urls import URLPattern, path +from django.urls import include, path from django.views.decorators.cache import cache_page from feedvault import views @@ -19,8 +19,9 @@ sitemaps = { "domains": GenericSitemap({"queryset": Domain.objects.all(), "date_field": "created_at"}), } -urlpatterns: list[URLPattern] = [ +urlpatterns: list = [ path(route="", view=views.IndexView.as_view(), name="index"), + path("__debug__/", include("debug_toolbar.urls")), path(route="feed//", view=views.FeedView.as_view(), name="feed"), path(route="feeds/", view=views.FeedsView.as_view(), name="feeds"), path(route="add", view=views.AddView.as_view(), name="add"), diff --git a/poetry.lock b/poetry.lock index eb2b768..bff69a9 100644 --- a/poetry.lock +++ b/poetry.lock @@ -356,6 +356,21 @@ tzdata = {version = "*", markers = "sys_platform == \"win32\""} argon2 = ["argon2-cffi (>=19.1.0)"] bcrypt = ["bcrypt"] +[[package]] +name = "django-debug-toolbar" +version = "4.3.0" +description = "A configurable set of panels that display various debug information about the current request/response." +optional = false +python-versions = ">=3.8" +files = [ + {file = "django_debug_toolbar-4.3.0-py3-none-any.whl", hash = "sha256:e09b7dcb8417b743234dfc57c95a7c1d1d87a88844abd13b4c5387f807b31bf6"}, + {file = "django_debug_toolbar-4.3.0.tar.gz", hash = "sha256:0b0dddee5ea29b9cb678593bc0d7a6d76b21d7799cb68e091a2148341a80f3c4"}, +] + +[package.dependencies] +django = ">=3.2.4" +sqlparse = ">=0.2" + [[package]] name = "django-ninja" version = "1.1.0" @@ -1012,4 +1027,4 @@ zstd = ["zstandard (>=0.18.0)"] [metadata] lock-version = "2.0" python-versions = "^3.12" -content-hash = "4ad21c4b598e168cb8df3e8970ad48b1427dab627303eea66d7cf1b55f817ed0" +content-hash = "acbd2c335db0529781e85823f05985272bce298add5c02bf2ddc990d478205db" diff --git a/pyproject.toml b/pyproject.toml index b408198..764f848 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,6 +14,7 @@ gunicorn = "^21.2.0" dateparser = "^1.2.0" discord-webhook = "^1.3.1" django-ninja = "^1.1.0" +django-debug-toolbar = "^4.3.0" [tool.poetry.group.dev.dependencies] ruff = "^0.3.0"