mirror of
https://github.com/MOIS3Y/logs-collector.git
synced 2025-09-13 05:03:01 +02:00
Add: whitenoise to manage staticfiles
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Before Width: | Height: | Size: 7.0 KiB |
Binary file not shown.
Before Width: | Height: | Size: 23 KiB |
Binary file not shown.
Before Width: | Height: | Size: 6.9 KiB |
Binary file not shown.
Before Width: | Height: | Size: 495 B |
Binary file not shown.
Before Width: | Height: | Size: 930 B |
Binary file not shown.
Before Width: | Height: | Size: 15 KiB |
@@ -1 +0,0 @@
|
|||||||
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,90 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Color mode toggler for Bootstrap's docs (https://getbootstrap.com/)
|
|
||||||
* Copyright 2011-2023 The Bootstrap Authors
|
|
||||||
* Licensed under the Creative Commons Attribution 3.0 Unported License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
;(() => {
|
|
||||||
"use strict"
|
|
||||||
|
|
||||||
const getStoredTheme = () => localStorage.getItem("theme")
|
|
||||||
const setStoredTheme = (theme) => localStorage.setItem("theme", theme)
|
|
||||||
|
|
||||||
const getPreferredTheme = () => {
|
|
||||||
const storedTheme = getStoredTheme()
|
|
||||||
if (storedTheme) {
|
|
||||||
return storedTheme
|
|
||||||
}
|
|
||||||
|
|
||||||
return window.matchMedia("(prefers-color-scheme: dark)").matches
|
|
||||||
? "dark"
|
|
||||||
: "light"
|
|
||||||
}
|
|
||||||
|
|
||||||
const setTheme = (theme) => {
|
|
||||||
if (
|
|
||||||
theme === "auto" &&
|
|
||||||
window.matchMedia("(prefers-color-scheme: dark)").matches
|
|
||||||
) {
|
|
||||||
document.documentElement.setAttribute("data-bs-theme", "dark")
|
|
||||||
} else {
|
|
||||||
document.documentElement.setAttribute("data-bs-theme", theme)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
setTheme(getPreferredTheme())
|
|
||||||
|
|
||||||
const showActiveTheme = (theme, focus = false) => {
|
|
||||||
const themeSwitcher = document.querySelector("#bd-theme")
|
|
||||||
|
|
||||||
if (!themeSwitcher) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
const themeSwitcherText = document.querySelector("#bd-theme-text")
|
|
||||||
const activeThemeIcon = document.querySelector(".theme-icon-active use")
|
|
||||||
const btnToActive = document.querySelector(
|
|
||||||
`[data-bs-theme-value="${theme}"]`
|
|
||||||
)
|
|
||||||
const svgOfActiveBtn = btnToActive
|
|
||||||
.querySelector("svg use")
|
|
||||||
.getAttribute("href")
|
|
||||||
|
|
||||||
document.querySelectorAll("[data-bs-theme-value]").forEach((element) => {
|
|
||||||
element.classList.remove("active")
|
|
||||||
element.setAttribute("aria-pressed", "false")
|
|
||||||
})
|
|
||||||
|
|
||||||
btnToActive.classList.add("active")
|
|
||||||
btnToActive.setAttribute("aria-pressed", "true")
|
|
||||||
activeThemeIcon.setAttribute("href", svgOfActiveBtn)
|
|
||||||
const themeSwitcherLabel = `${themeSwitcherText.textContent} (${btnToActive.dataset.bsThemeValue})`
|
|
||||||
themeSwitcher.setAttribute("aria-label", themeSwitcherLabel)
|
|
||||||
|
|
||||||
if (focus) {
|
|
||||||
themeSwitcher.focus()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
window
|
|
||||||
.matchMedia("(prefers-color-scheme: dark)")
|
|
||||||
.addEventListener("change", () => {
|
|
||||||
const storedTheme = getStoredTheme()
|
|
||||||
if (storedTheme !== "light" && storedTheme !== "dark") {
|
|
||||||
setTheme(getPreferredTheme())
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
window.addEventListener("DOMContentLoaded", () => {
|
|
||||||
showActiveTheme(getPreferredTheme())
|
|
||||||
|
|
||||||
document.querySelectorAll("[data-bs-theme-value]").forEach((toggle) => {
|
|
||||||
toggle.addEventListener("click", () => {
|
|
||||||
const theme = toggle.getAttribute("data-bs-theme-value")
|
|
||||||
setStoredTheme(theme)
|
|
||||||
setTheme(theme)
|
|
||||||
showActiveTheme(theme, true)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})()
|
|
@@ -34,6 +34,7 @@ INSTALLED_APPS = [
|
|||||||
'django.contrib.contenttypes',
|
'django.contrib.contenttypes',
|
||||||
'django.contrib.sessions',
|
'django.contrib.sessions',
|
||||||
'django.contrib.messages',
|
'django.contrib.messages',
|
||||||
|
'whitenoise.runserver_nostatic',
|
||||||
'django.contrib.staticfiles',
|
'django.contrib.staticfiles',
|
||||||
'collector.apps.CollectorConfig', # main app
|
'collector.apps.CollectorConfig', # main app
|
||||||
'account.apps.AccountConfig', # account app
|
'account.apps.AccountConfig', # account app
|
||||||
@@ -60,6 +61,7 @@ MIDDLEWARE = [
|
|||||||
'django_otp.middleware.OTPMiddleware',
|
'django_otp.middleware.OTPMiddleware',
|
||||||
'django.contrib.messages.middleware.MessageMiddleware',
|
'django.contrib.messages.middleware.MessageMiddleware',
|
||||||
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||||
|
'whitenoise.middleware.WhiteNoiseMiddleware',
|
||||||
]
|
]
|
||||||
|
|
||||||
ROOT_URLCONF = 'logs_collector.urls'
|
ROOT_URLCONF = 'logs_collector.urls'
|
||||||
@@ -127,11 +129,10 @@ USE_TZ = True
|
|||||||
|
|
||||||
# Static files (CSS, JavaScript, Images)
|
# Static files (CSS, JavaScript, Images)
|
||||||
# https://docs.djangoproject.com/en/4.2/howto/static-files/
|
# https://docs.djangoproject.com/en/4.2/howto/static-files/
|
||||||
|
# Whitenoise:
|
||||||
|
# https://whitenoise.readthedocs.io/en/stable/django.html
|
||||||
STATIC_URL = 'static/'
|
STATIC_URL = 'static/'
|
||||||
STATICFILES_DIRS = [
|
STATIC_ROOT = BASE_DIR / 'static'
|
||||||
BASE_DIR / "static",
|
|
||||||
]
|
|
||||||
|
|
||||||
# Default primary key field type
|
# Default primary key field type
|
||||||
# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field
|
# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field
|
||||||
|
16
poetry.lock
generated
16
poetry.lock
generated
@@ -679,7 +679,21 @@ files = [
|
|||||||
{file = "uritemplate-4.1.1.tar.gz", hash = "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0"},
|
{file = "uritemplate-4.1.1.tar.gz", hash = "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0"},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "whitenoise"
|
||||||
|
version = "6.5.0"
|
||||||
|
description = "Radically simplified static file serving for WSGI applications"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.7"
|
||||||
|
files = [
|
||||||
|
{file = "whitenoise-6.5.0-py3-none-any.whl", hash = "sha256:16468e9ad2189f09f4a8c635a9031cc9bb2cdbc8e5e53365407acf99f7ade9ec"},
|
||||||
|
{file = "whitenoise-6.5.0.tar.gz", hash = "sha256:15fe60546ac975b58e357ccaeb165a4ca2d0ab697e48450b8f0307ca368195a8"},
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.extras]
|
||||||
|
brotli = ["Brotli"]
|
||||||
|
|
||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "2.0"
|
lock-version = "2.0"
|
||||||
python-versions = "^3.10"
|
python-versions = "^3.10"
|
||||||
content-hash = "69aa50d072f03697f4d11a333694d01f2528e433185216e3dc8d32b2debe7432"
|
content-hash = "c21036adbe6e2d18dc8f4ee814e36bb56e20aa5edf6c9dce464d49a00eccb309"
|
||||||
|
@@ -19,6 +19,7 @@ markdown = "^3.4.4"
|
|||||||
django-filter = "^23.2"
|
django-filter = "^23.2"
|
||||||
drf-spectacular = "^0.26.4"
|
drf-spectacular = "^0.26.4"
|
||||||
django-two-factor-auth = {extras = ["phonenumberslite"], version = "^1.15.3"}
|
django-two-factor-auth = {extras = ["phonenumberslite"], version = "^1.15.3"}
|
||||||
|
whitenoise = "^6.5.0"
|
||||||
|
|
||||||
[tool.poetry.group.dev.dependencies]
|
[tool.poetry.group.dev.dependencies]
|
||||||
flake8 = "^6.0.0"
|
flake8 = "^6.0.0"
|
||||||
|
Reference in New Issue
Block a user