diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index fbb8855..b096688 100755 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -25,7 +25,7 @@ "remoteEnv": { "LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}", "WORKSPACE_FOLDER": "${containerWorkspaceFolder}", - "UV_LINK_MODE": "copy" + "UV_LINK_MODE": "copy", }, "mounts": [ { diff --git a/.devcontainer/onCreate.sh b/.devcontainer/onCreate.sh index ba35f3b..1afdaf6 100755 --- a/.devcontainer/onCreate.sh +++ b/.devcontainer/onCreate.sh @@ -3,8 +3,15 @@ sudo apt update -y sudo apt upgrade -y +sudo apt install -y postgresql-common +sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh -y +sudo apt upgrade -y +sudo apt install -y postgresql-client + + git config --global --add safe.directory ${WORKSPACE_FOLDER} sudo chown $(id -u):$(id -g) -fR \ + ${WORKSPACE_FOLDER} \ ${WORKSPACE_FOLDER}/.venv \ ${WORKSPACE_FOLDER}/node_modules @@ -12,3 +19,6 @@ cd ${WORKSPACE_FOLDER} uv python install uv venv --allow-existing + +uv tool install rust-just +uv tool install ruff diff --git a/dockerfiles/devcontainer.dockerfile b/dockerfiles/devcontainer.dockerfile index d507a6e..7a40a7d 100755 --- a/dockerfiles/devcontainer.dockerfile +++ b/dockerfiles/devcontainer.dockerfile @@ -23,4 +23,7 @@ RUN \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update -y \ && apt-get install -y --no-install-recommends \ - caddy \ No newline at end of file + caddy + +RUN mkdir -p /workspaces/kredens && chown vscode:vscode /workspaces +WORKDIR /workspaces/kredens diff --git a/justfile b/justfile new file mode 100644 index 0000000..51cca6b --- /dev/null +++ b/justfile @@ -0,0 +1,2 @@ +watch: + docker compose up --watch diff --git a/kredens/auth/__init__.py b/kredens/auth/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/kredens/auth/apps.py b/kredens/auth/apps.py new file mode 100644 index 0000000..6fe2c82 --- /dev/null +++ b/kredens/auth/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + +class KredensAuthConfig(AppConfig): + name = "kredens.auth" + label = "kredens_auth" \ No newline at end of file diff --git a/kredens/auth/management/__init__.py b/kredens/auth/management/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/kredens/auth/management/commands/__init__.py b/kredens/auth/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/kredens/auth/management/commands/bootstrap.py b/kredens/auth/management/commands/bootstrap.py new file mode 100644 index 0000000..61f914e --- /dev/null +++ b/kredens/auth/management/commands/bootstrap.py @@ -0,0 +1,14 @@ +import os + +from django.core.management.base import BaseCommand, CommandError +from django.contrib.auth import get_user_model + +class Command(BaseCommand): + help = "Create a superuser with a preset password" + + def handle(self, *args, **options): + get_user_model().objects.create_superuser( + username=os.environ["SUPERUSER_NAME"], + email=os.environ["SUPERUSER_EMAIL"], + password=os.environ["SUPERUSER_PASSWORD"] + ) \ No newline at end of file diff --git a/kredens/settings.py b/kredens/settings.py index 188a2f8..debc4be 100644 --- a/kredens/settings.py +++ b/kredens/settings.py @@ -39,6 +39,7 @@ INSTALLED_APPS = [ "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", + "kredens.auth", ] MIDDLEWARE = [ @@ -51,6 +52,10 @@ MIDDLEWARE = [ "django.middleware.clickjacking.XFrameOptionsMiddleware", ] +CSRF_TRUSTED_ORIGINS = [ + "https://localhost" +] + ROOT_URLCONF = "kredens.urls" TEMPLATES = [ diff --git a/pyproject.toml b/pyproject.toml index 8b6afe4..6d8c42f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ description = "Add your description here" readme = "README.md" requires-python = ">=3.13" dependencies = [ - "dj-database-url", - "django", + "dj-database-url>=2.3.0", + "django>=5.1.5", "psycopg[binary]>=3.2.4", ] diff --git a/uv.lock b/uv.lock index 38b006a..b69050f 100644 --- a/uv.lock +++ b/uv.lock @@ -49,8 +49,8 @@ dependencies = [ [package.metadata] requires-dist = [ - { name = "dj-database-url" }, - { name = "django" }, + { name = "dj-database-url", specifier = ">=2.3.0" }, + { name = "django", specifier = ">=5.1.5" }, { name = "psycopg", extras = ["binary"], specifier = ">=3.2.4" }, ]