| Home | Atividade 6
- Nesta página está descrito os passos para aplicar SGBD para PostgreSQL e prover restrição de acesso aos métodos
- Ativar novamente o Ambiente Virtual e cadastrar usuário admin:
$ env\Scripts\activate
$ python manage.py createsuperuser --email [email protected] --username admin
- Acessa o admin no navegador
- Cadastrar um usuário sem privilégios de administração
- Nome: user
- Senha: pass.123
- Atribuir para ele a permissão ovino | ovino | Can add ovino
- Ajusta o idioma do projeto Django, atualizando a variável LANGUAGE_CODE no agrovinos/settings.py
LANGUAGE_CODE = 'pt-br'
- Adicione a aplicação tag ao projeto agrovinos
$ python manage.py startapp tag
- Casdatre ela na variável INSTALLED_APPS no agrovinos/settings.py
# Application definition
INSTALLED_APPS = [
'ovino.apps.OvinoConfig',
'tag.apps.TagConfig',
- Criar o modelo Tag na nova aplicação, no tag/models.py
from django.db import models
import uuid
class Tag(models.Model):
serial = models.CharField(max_length=16, unique=True)
id = models.UUIDField( primary_key=True,default=uuid.uuid4,null=False,blank=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.serial
- Adicionar a tag no modelo do ovino em ovino/models.py
from django.db import models
from tag.models import Tag
class Ovino(models.Model):
tag = models.OneToOneField(Tag, on_delete=models.SET_NULL, null=True)
- Adicionar a tag no formulário em ovino/forms.py
fields = [
"identificador",
"peso",
"nascimento",
"raca",
"cor",
"genero",
"tag",
]
- Atualizar os migrations
$ python manage.py makemigrations
- Atializa a base de dados
$ python manage.py migrate
- Registrar a aplicação tag no Django Admin, no tag/admins.py
from django.contrib import admin
from .models import *
# Register your models here.
admin.site.register(Tag)
- Acesse novamente o admin para ver o CRUD da aplciação Tag.
- Vamos cadastrar algumas tags e ovinos
- Gerar um seed
$ python manage.py dumpdata auth tag ovino > data.json
- Carregar um seed
$ del db.sqlite3
$ python manage.py migrate
$ python manage.py loaddata data.json
- Adicionar dependencias do postgres no docker-compose.yml
env_file:
- ./.env.dev
depends_on:
- banco
banco:
container_name: banco
hostname: banco
image: postgres:14.6-alpine
restart: unless-stopped
volumes:
- postgres_data:/var/lib/postgresql/data/
ports:
- 19000:5432
environment:
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=pass.2023
- POSTGRES_DB=argovinos
- TZ=GMT-3
volumes:
postgres_data:
- Adicionar configurrações od banco no arquivo .env.dev
SQL_ENGINE=django.db.backends.postgresql
SQL_DATABASE=argovinos
SQL_USER=admin
SQL_PASSWORD=pass.2023
SQL_HOST=banco
SQL_PORT=5432
- Atualizar a variável DATABASES no agrovinos/settings.py
DATABASES = {
"default": {
"ENGINE": os.environ.get("SQL_ENGINE", "django.db.backends.sqlite3"),
"NAME": os.environ.get("SQL_DATABASE", os.path.join(BASE_DIR, 'db.sqlite3')),
"USER": os.environ.get("SQL_USER", "admin"),
"PASSWORD": os.environ.get("SQL_PASSWORD", "1234"),
"HOST": os.environ.get("SQL_HOST", "localhost"),
"PORT": os.environ.get("SQL_PORT", "5432"),
}
}
- Adicionar instalação do driver no Dockerfile
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# install psycopg2 dependencies
RUN apk update \
&& apk add postgresql-dev gcc python3-dev musl-dev
- Aplicar o driver no final do requirements.txt
psycopg2-binary==2.9.5
- Recompilar e erguer o container
$ docker-compose up -d --build
- Aplicar os migrations
docker compose exec portal python manage.py migrate --no-input
- Efetuar commit
$ git add .
$ git commit -m "Finalizando Atividade 6"
- Realizar push de Branch com o SEU NOME
(env)$ git push origin HEAD:**<NOME_SOBRENOME>**
- Caso o Pull Request da atividade anterior não tenha se atualizado automaticamente, crie um novo para o repositorio de origem do fork.