From 07f87c48c7b106ebacca8511f1cf8ed6edfb59c1 Mon Sep 17 00:00:00 2001 From: renzo Date: Thu, 11 Jul 2024 21:51:15 -0300 Subject: [PATCH] =?UTF-8?q?Inserida=20lib=20python=20decouple=20para=20lei?= =?UTF-8?q?tura=20de=20configura=C3=A7=C3=B5es=20de=20inst=C3=A2ncia?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit close #19 --- .github/workflows/backend.yml | 3 +++ backend/README.md | 11 ++++++++--- backend/devpro/settings.py | 9 +++++---- backend/poetry.lock | 13 ++++++++++++- backend/pyproject.toml | 1 + config/README.md | 12 +++++++++++- config/env-sample | 6 ++++++ 7 files changed, 46 insertions(+), 9 deletions(-) create mode 100644 config/env-sample diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml index 0d82066..695d285 100644 --- a/.github/workflows/backend.yml +++ b/.github/workflows/backend.yml @@ -41,5 +41,8 @@ jobs: - name: Run Linter run: poetry run flake8 . + - name: Copy instance config variables + run: cp ../config/env-sample .env + - name: Run backend Tests run: poetry run pytest --cache-clear \ No newline at end of file diff --git a/backend/README.md b/backend/README.md index 0df956c..6ff1e59 100644 --- a/backend/README.md +++ b/backend/README.md @@ -2,7 +2,7 @@ Nessa pasta se encontram os arquivos de backend do projeto Django. -Será usado o Poetry como gestor pacotes. +Será usado o Poetry como gestor pacotes. Por isso, para instalar o projeto com as dependência de desenvolvimento, dentro das pasta backend rode @@ -23,11 +23,11 @@ python manage.py runserver ``` ## Padrão de código + Para o backend esse projeto usa o flake8, com as seguintes customizações Tamanho de linha pode ter até 120 caracteres. Para ver o relatório do linter rode: - ```bash flake8 . ``` @@ -35,6 +35,11 @@ flake8 . # Usuário padrão Nesse projeto o usuário foi customizado. Ele não tem username nem last_name como o usuário padrão do Django. -Ele usa o login como identificador único. O usuário se encontra na app base para que você pode acrescentar acampos de +Ele usa o login como identificador único. O usuário se encontra na app base para que você pode acrescentar acampos de acordo com sua necessidade. +## Configurações de instância + +Para ler configurações de instância esse projeto usa a lib [python decouple](https://pypi.org/project/python-decouple/). +Ela é importada no arquivo settings.py + diff --git a/backend/devpro/settings.py b/backend/devpro/settings.py index 3ce9cb1..57cbecd 100644 --- a/backend/devpro/settings.py +++ b/backend/devpro/settings.py @@ -11,6 +11,7 @@ """ from pathlib import Path +from decouple import config, Csv import dj_database_url @@ -21,14 +22,14 @@ # See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'django-insecure-$yd9^=to3rg=(mf!022&vrfv*6tj6fb*kg41h4tdrr16))4ei0' +SECRET_KEY = config('BACKEND_SECRET_KEY') # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True +DEBUG = config('BACKEND_DEBUG', default=False, cast=bool) AUTH_USER_MODEL = 'base.User' -ALLOWED_HOSTS = [] +ALLOWED_HOSTS = config('BACKEND_ALLOWED_HOSTS', default='', cast=Csv()) # Application definition @@ -77,7 +78,7 @@ DATABASES = { "default": dj_database_url.parse( - 'postgres://postgres:postgres@localhost:5432/postgres', + config('DATABASE_URL'), conn_max_age=600, conn_health_checks=True, ) diff --git a/backend/poetry.lock b/backend/poetry.lock index 8f33be5..6acfc28 100644 --- a/backend/poetry.lock +++ b/backend/poetry.lock @@ -206,6 +206,17 @@ pytest = ">=7.0.0" docs = ["sphinx", "sphinx-rtd-theme"] testing = ["Django", "django-configurations (>=2.0)"] +[[package]] +name = "python-decouple" +version = "3.8" +description = "Strict separation of settings from code." +optional = false +python-versions = "*" +files = [ + {file = "python-decouple-3.8.tar.gz", hash = "sha256:ba6e2657d4f376ecc46f77a3a615e058d93ba5e465c01bbe57289bfb7cce680f"}, + {file = "python_decouple-3.8-py3-none-any.whl", hash = "sha256:d0d45340815b25f4de59c974b855bb38d03151d81b037d9e3f463b0c9f8cbd66"}, +] + [[package]] name = "sqlparse" version = "0.5.0" @@ -246,4 +257,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.12" -content-hash = "c89163390aa9879d826f9585723d6b4b8bec6e4d94686e23412189793acce951" +content-hash = "5dbcbba5f17b41c7a71f9faa7221bc63bfa4b4ba2f4e3b5ccccaff381d6ef958" diff --git a/backend/pyproject.toml b/backend/pyproject.toml index dd3f6a5..09a8a9e 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -11,6 +11,7 @@ python = "^3.12" django = ">4" psycopg2 = "^2.9.9" dj-database-url = "^2.2.0" +python-decouple = "^3.8" [tool.poetry.group.dev] diff --git a/config/README.md b/config/README.md index 34c8141..1eabf4a 100644 --- a/config/README.md +++ b/config/README.md @@ -1 +1,11 @@ -# Pasta de configurações \ No newline at end of file +# Pasta de configurações + +Para gestão das configurações o projeto usa um simples arquivo .env + +Para você não começar do zero, nessa pasta existe o arquivo env-sample com todas configurações definidas + +Basta então copiar este arquivo para a raiz do projeto: + +```bash +cp env-sample ../.env +``` \ No newline at end of file diff --git a/config/env-sample b/config/env-sample new file mode 100644 index 0000000..999a572 --- /dev/null +++ b/config/env-sample @@ -0,0 +1,6 @@ +BACKEND_SECRET_KEY=escolha-um-segredo-como-valor-para-o-django +# SECURITY WARNING: don't run with debug turned on in production! +BACKEND_DEBUG=False +# Configure os dominios ou ips que sua aplicação vai rodar, separadas por vírgula +BACKEND_ALLOWED_HOSTS=localhost,127.0.0.1 +DATABASE_URL=postgres://postgres:postgres@localhost:5432/postgres \ No newline at end of file