diff --git a/.devcontainer.json b/.devcontainer.json index 25e4c54..721570e 100644 --- a/.devcontainer.json +++ b/.devcontainer.json @@ -1,50 +1,49 @@ { - "name": "sso", - "dockerComposeFile": [ - "../docker-compose.yml" - ], - "service": "base-service", - "shutdownAction": "none", - "workspaceFolder": "/workspace/codeforlife-sso", - "mounts": [ - "source=./codeforlife-package-python,target=/workspace/codeforlife-package-python,type=bind,consistency=cached" - ], - "remoteUser": "root", - "features": { - "ghcr.io/devcontainers/features/python:1": { - "version": "3.8", - "installTools": false - }, - "ghcr.io/devcontainers-contrib/features/pipenv:2": { - "version": "2023.11.15" - } - }, "customizations": { "vscode": { - //TODO: Specify preferred settings and extensions once defined - "settings": { - "python.defaultInterpreterPath": "backend/.venv/bin/python" - }, "extensions": [ + "visualstudioexptteam.vscodeintellicode", "github.vscode-pull-request-github", "redhat.vscode-yaml", "davidanson.vscode-markdownlint", "bierner.markdown-mermaid", + "streetsidesoftware.code-spell-checker", + "dbaeumer.vscode-eslint", "ms-python.python", + "ms-python.debugpy", "ms-python.pylint", "ms-python.isort", "ms-python.vscode-pylance", "ms-python.mypy-type-checker", "ms-python.black-formatter", - "streetsidesoftware.code-spell-checker", - "tamasfe.even-better-toml", - "kevinrose.vsc-python-indent", - "batisteo.vscode-django", - "njpwerner.autodocstring", - "visualstudioexptteam.vscodeintellicode", - "wholroyd.jinja", - "qwtel.sqlite-viewer" + "qwtel.sqlite-viewer", + "njpwerner.autodocstring" ] } - } + }, + "dockerComposeFile": [ + "../docker-compose.yml" + ], + "features": { + "ghcr.io/devcontainers-contrib/features/pipenv:2": { + "version": "2023.11.15" + }, + "ghcr.io/devcontainers/features/node:1": { + "version": "18" + }, + "ghcr.io/devcontainers/features/python:1": { + "installTools": false, + "version": "3.8" + } + }, + "mounts": [ + "source=./codeforlife-package-javascript,target=/workspace/codeforlife-package-javascript,type=bind,consistency=cached", + "source=./codeforlife-package-python,target=/workspace/codeforlife-package-python,type=bind,consistency=cached" + ], + "name": "sso", + "postCreateCommand": "./setup", + "remoteUser": "root", + "service": "base-service", + "shutdownAction": "none", + "workspaceFolder": "/workspace/codeforlife-sso" } \ No newline at end of file diff --git a/.vscode/codeforlife.code-snippets b/.vscode/codeforlife.code-snippets new file mode 100644 index 0000000..e45c7bb --- /dev/null +++ b/.vscode/codeforlife.code-snippets @@ -0,0 +1,49 @@ +{ + "javascript.module.doccomment": { + "body": [ + "/**", + " * \u00a9 Ocado Group", + " * Created on $CURRENT_DATE/$CURRENT_MONTH/$CURRENT_YEAR at $CURRENT_HOUR:$CURRENT_MINUTE:$CURRENT_SECOND($CURRENT_TIMEZONE_OFFSET).", + " *", + " * ${1:__description__}", + " */" + ], + "prefix": [ + "/" + ], + "scope": "javascript,typescript,javascriptreact,typescriptreact" + }, + "python.module.docstring": { + "body": [ + "\"\"\"", + "\u00a9 Ocado Group", + "Created on $CURRENT_DATE/$CURRENT_MONTH/$CURRENT_YEAR at $CURRENT_HOUR:$CURRENT_MINUTE:$CURRENT_SECOND($CURRENT_TIMEZONE_OFFSET).", + "", + "${1:__description__}", + "\"\"\"" + ], + "prefix": [ + "\"\"\"", + "'''" + ], + "scope": "python" + }, + "python.mypy.ignore": { + "body": [ + "# type: ignore[${1:__code_name__}]" + ], + "prefix": [ + "# type" + ], + "scope": "python" + }, + "python.pylint.disable-next": { + "body": [ + "# pylint: disable-next=${1:__code_name__}" + ], + "prefix": [ + "# pylint" + ], + "scope": "python" + } +} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json index 90d8aa3..898e1c0 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,34 +1,46 @@ { - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", "configurations": [ { - "name": "Django Server", - "type": "python", + "console": "integratedTerminal", + "justMyCode": false, + "name": "Python: Current File", + "program": "${file}", "request": "launch", - "django": true, + "type": "debugpy" + }, + { "justMyCode": false, - "program": "${workspaceFolder}/backend/manage.py", + "name": "Pytest", + "presentation": { + "hidden": true + }, + "request": "test", + "type": "debugpy" + }, + { + "name": "React Dev Server", + "preLaunchTask": "start-react-dev-server", + "request": "launch", + "type": "chrome", + "url": "http://localhost:3000" + }, + { "args": [ "runserver", "localhost:8001" ], - "preLaunchTask": "migrate-db", + "django": true, "env": { "SERVICE_NAME": "sso", "SERVICE_PORT": "8001" - } - }, - { - "name": "Pytest", - "type": "python", - "request": "test", + }, "justMyCode": false, - "presentation": { - "hidden": true - } + "name": "Django Server", + "preLaunchTask": "migrate-db", + "program": "${workspaceFolder}/backend/manage.py", + "request": "launch", + "type": "debugpy" } - ] + ], + "version": "0.2.0" } \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 3f253e9..765e605 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,12 +1,79 @@ { + "[md]": { + "editor.tabSize": 4 + }, + "[python]": { + "editor.defaultFormatter": "ms-python.black-formatter", + "editor.tabSize": 4 + }, "black-formatter.args": [ "--config", - "backend/pyproject.toml" + "pyproject.toml" ], + "black-formatter.cwd": "${workspaceFolder}/backend", + "black-formatter.path": [ + ".venv/bin/python", + "-m", + "black" + ], + "cSpell.words": [ + "codeforlife", + "klass", + "ocado", + "kurono", + "pipenv" + ], + "editor.codeActionsOnSave": { + "source.organizeImports": "explicit" + }, + "editor.formatOnSave": true, + "editor.rulers": [ + 80 + ], + "editor.tabSize": 2, + "files.exclude": { + "**/.hypothesis": true, + "**/.mypy_cache": true, + "**/.pytest_cache": true, + "**/__pycache__": true + }, + "isort.args": [ + "--settings-file=backend/pyproject.toml" + ], + "isort.path": [ + "backend/.venv/bin/python", + "-m", + "isort" + ], + "mypy-type-checker.args": [ + "--config-file=pyproject.toml" + ], + "mypy-type-checker.cwd": "${workspaceFolder}/backend", + "mypy-type-checker.path": [ + ".venv/bin/python", + "-m", + "mypy" + ], + "pylint.args": [ + "--rcfile=pyproject.toml" + ], + "pylint.cwd": "${workspaceFolder}/backend", + "pylint.path": [ + ".venv/bin/python", + "-m", + "pylint" + ], + "python.analysis.extraPaths": [ + "../codeforlife-package-python" + ], + "python.defaultInterpreterPath": "backend/.venv/bin/python", + "python.testing.cwd": "${workspaceFolder}/backend", "python.testing.pytestArgs": [ - "-c=backend/pyproject.toml", - "backend" + "-n=auto", + "-c=pyproject.toml", + "." ], + "python.testing.pytestEnabled": true, "python.testing.unittestEnabled": false, - "python.testing.pytestEnabled": true + "typescript.preferences.quoteStyle": "single" } \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index e70337c..ed804e8 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -1,24 +1,37 @@ { - "version": "2.0.0", "tasks": [ { - "label": "install-dev-deps", - "type": "shell", + "isBackground": true, + "label": "start-react-dev-server", "options": { - "cwd": "${workspaceFolder}/backend" + "env": { + "BROWSER": "none" + } }, - "command": "pipenv install --dev" + "path": "frontend", + "problemMatcher": [], + "script": "start", + "type": "npm" }, { - "label": "migrate-db", - "type": "shell", + "command": "pipenv install --dev", + "label": "pipenv-install-dev", "options": { "cwd": "${workspaceFolder}/backend" }, + "type": "shell" + }, + { + "command": "pipenv run python ./manage.py migrate", "dependsOn": [ - "install-dev-deps" + "pipenv-install-dev" ], - "command": "pipenv run python ./manage.py migrate" + "label": "migrate-db", + "options": { + "cwd": "${workspaceFolder}/backend" + }, + "type": "shell" } - ] + ], + "version": "2.0.0" } \ No newline at end of file diff --git a/codeforlife.code-workspace b/codeforlife.code-workspace index aadce01..53f16f5 100644 --- a/codeforlife.code-workspace +++ b/codeforlife.code-workspace @@ -1,12 +1,18 @@ { "folders": [ { - "path": ".", - "name": "sso" + "name": "sso", + "path": "." }, { - "path": "../codeforlife-package-python", - "name": "package-python" + "name": "package-python", + "path": "../codeforlife-package-python" } - ] + ], + "settings": { + "autoDocstring.customTemplatePath": ".vscode/extensions/autoDocstring/docstring.mustache", + "workbench.colorCustomizations": { + "editorRuler.foreground": "#008000" + } + } } \ No newline at end of file