Skip to content

Commit 7a2d8e3

Browse files
committed
Initial commit
0 parents  commit 7a2d8e3

File tree

120 files changed

+1080
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

120 files changed

+1080
-0
lines changed

.env

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
SECRET_KEY=django-insecure-3s_n0l!biz1k51ew02s#=qfk)g0j&&d6mj4e6__qqb*yz67+@l
2+
DEBUG=True
3+
DB_ENGINE=django.db.backends.postgresql_psycopg2
4+
DB_NAME=multisoft
5+
DB_USER=admin
6+
DB_PASSWORD=admin
7+
DB_HOST=localhost
8+
DB_PORT=5433

alugueis/__init__.py

Whitespace-only changes.
173 Bytes
Binary file not shown.
287 Bytes
Binary file not shown.
454 Bytes
Binary file not shown.
963 Bytes
Binary file not shown.
514 Bytes
Binary file not shown.
2.63 KB
Binary file not shown.

alugueis/admin.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from django.contrib import admin
2+
from .models import Aluguel
3+
4+
admin.site.register(Aluguel)

alugueis/api/__init__.py

Whitespace-only changes.
177 Bytes
Binary file not shown.
645 Bytes
Binary file not shown.
573 Bytes
Binary file not shown.

alugueis/api/serializers.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from rest_framework.serializers import ModelSerializer
2+
from alugueis.models import Aluguel
3+
4+
5+
class AluguelSerializer(ModelSerializer):
6+
class Meta:
7+
model = Aluguel
8+
fields = '__all__'

alugueis/api/viewsets.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from rest_framework.viewsets import ModelViewSet
2+
from alugueis.models import Aluguel
3+
from .serializers import AluguelSerializer
4+
5+
6+
class AluguelViewSet(ModelViewSet):
7+
queryset = Aluguel.objects.all()
8+
serializer_class = AluguelSerializer

alugueis/apps.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from django.apps import AppConfig
2+
3+
4+
class AlugueisConfig(AppConfig):
5+
default_auto_field = 'django.db.models.BigAutoField'
6+
name = 'alugueis'

alugueis/migrations/0001_initial.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Generated by Django 3.2 on 2021-04-21 23:00
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
initial = True
10+
11+
dependencies = [
12+
('filmes', '0001_initial'),
13+
('clientes', '0001_initial'),
14+
]
15+
16+
operations = [
17+
migrations.CreateModel(
18+
name='Aluguel',
19+
fields=[
20+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
21+
('dataAluguel', models.DateField(auto_now_add=True)),
22+
('dataDevolucao', models.DateField()),
23+
('preco', models.DecimalField(decimal_places=2, max_digits=7)),
24+
('concluido', models.BooleanField(blank=True, default=False)),
25+
('cliente', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='clientes.cliente')),
26+
('filme', models.ManyToManyField(to='filmes.Filme')),
27+
],
28+
),
29+
]

alugueis/migrations/__init__.py

Whitespace-only changes.
Binary file not shown.
Binary file not shown.

alugueis/models.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from django.db import models
2+
from filmes.models import Filme
3+
from clientes.models import Cliente
4+
5+
6+
class Aluguel(models.Model):
7+
filme = models.ManyToManyField(Filme)
8+
cliente = models.ForeignKey(Cliente, on_delete=models.PROTECT)
9+
dataAluguel = models.DateField(auto_now_add=True)
10+
dataDevolucao = models.DateField()
11+
preco = models.DecimalField(max_digits=7, decimal_places=2)
12+
concluido = models.BooleanField(default=False, blank=True)
13+
14+
def __str__(self):
15+
return str(self.cliente) + ' - Devolução: ' + str(self.dataDevolucao)

alugueis/tests.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from django.test import TestCase
2+
3+
# Create your tests here.

alugueis/urls.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from django.conf.urls import url
2+
from alugueis import views
3+
4+
urlpatterns = [
5+
url(r'^alugueis$', views.aluguel_list),
6+
url(r'^aluguel/(?P<pk>[0-9]+)$', views.aluguel_detail),
7+
url(r'^aluguel/create$', views.aluguel_create),
8+
url(r'^aluguel/update', views.aluguel_update),
9+
url(r'^aluguel/delete/(?P<pk>[0-9]+)$', views.aluguel_delete),
10+
]

alugueis/views.py

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
import json
2+
3+
from django.shortcuts import render
4+
5+
from django.http.response import JsonResponse
6+
from rest_framework.parsers import JSONParser
7+
from rest_framework import status
8+
9+
from alugueis.models import Aluguel
10+
from alugueis.api.serializers import AluguelSerializer
11+
from rest_framework.decorators import api_view, permission_classes
12+
13+
from rest_framework.permissions import IsAuthenticated
14+
15+
from rest_framework.response import Response
16+
17+
# @permission_classes([IsAuthenticated])
18+
19+
20+
@api_view(['GET'])
21+
@permission_classes([IsAuthenticated])
22+
def aluguel_list(request):
23+
if request.method == 'GET':
24+
alugueis = Aluguel.objects.all()
25+
26+
nome = request.GET.get('nome', None)
27+
if nome is not None:
28+
alugueis = alugueis.filter(nome__icontains=nome)
29+
30+
alugueis_serializer = AluguelSerializer(alugueis, many=True)
31+
return JsonResponse(alugueis_serializer.data, safe=False)
32+
return JsonResponse({'message': 'Metodo inválido de buscas'})
33+
34+
@api_view(['GET'])
35+
@permission_classes([IsAuthenticated])
36+
def aluguel_detail(request, pk):
37+
try:
38+
aluguel = Aluguel.objects.get(pk=pk)
39+
except Aluguel.DoesNotExist:
40+
return JsonResponse({'message': 'O aluguel não existe'}, status=status.HTTP_404_NOT_FOUND)
41+
if request.method == 'GET':
42+
aluguel_serializer = AluguelSerializer(aluguel)
43+
return JsonResponse(aluguel_serializer.data)
44+
return JsonResponse({'message': 'Metodo inválido de buscas'})
45+
46+
@api_view(['POST'])
47+
@permission_classes([IsAuthenticated])
48+
def aluguel_create(request):
49+
aluguel_data = JSONParser().parse(request)
50+
aluguel_serializer = AluguelSerializer(data=aluguel_data)
51+
if aluguel_serializer.is_valid():
52+
aluguel_serializer.save()
53+
return JsonResponse(aluguel_serializer.data, status=status.HTTP_201_CREATED)
54+
return JsonResponse(aluguel_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
55+
56+
@api_view(['PUT','UPDATE'])
57+
@permission_classes([IsAuthenticated])
58+
def aluguel_update(request):
59+
aluguel_data = JSONParser().parse(request)
60+
try:
61+
aluguel = Aluguel.objects.get(id=aluguel_data['id'])
62+
except Aluguel.DoesNotExist:
63+
return JsonResponse({'message': 'O aluguel não existe'}, status=status.HTTP_404_NOT_FOUND)
64+
aluguel_serializer = AluguelSerializer(aluguel, data=aluguel_data)
65+
if aluguel_serializer.is_valid():
66+
aluguel_serializer.save()
67+
return JsonResponse(aluguel_serializer.data)
68+
return JsonResponse(aluguel_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
69+
70+
@api_view(['DELETE'])
71+
@permission_classes([IsAuthenticated])
72+
def aluguel_delete(request, pk):
73+
try:
74+
aluguel = Aluguel.objects.get(id=pk)
75+
except Aluguel.DoesNotExist:
76+
return JsonResponse({'message': 'O aluguel não existe'}, status=status.HTTP_404_NOT_FOUND)
77+
if request.method == 'DELETE':
78+
aluguel.delete()
79+
return JsonResponse({'message': 'O aluguel '+ aluguel.nome +' foi deletado'}) # , status=status.HTTP_204_NO_CONTENT
80+
return JsonResponse(aluguel_serializer.errors, status=status.HTTP_400_BAD_REQUEST)

clientes/__init__.py

Whitespace-only changes.
173 Bytes
Binary file not shown.
287 Bytes
Binary file not shown.
454 Bytes
Binary file not shown.
942 Bytes
Binary file not shown.
514 Bytes
Binary file not shown.
2.63 KB
Binary file not shown.

clientes/admin.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from django.contrib import admin
2+
from .models import Cliente
3+
4+
admin.site.register(Cliente)

clientes/api/__init__.py

Whitespace-only changes.
177 Bytes
Binary file not shown.
645 Bytes
Binary file not shown.
573 Bytes
Binary file not shown.

clientes/api/serializers.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from rest_framework.serializers import ModelSerializer
2+
from clientes.models import Cliente
3+
4+
5+
class ClienteSerializer(ModelSerializer):
6+
class Meta:
7+
model = Cliente
8+
fields = '__all__'

clientes/api/viewsets.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from rest_framework.viewsets import ModelViewSet
2+
from clientes.models import Cliente
3+
from .serializers import ClienteSerializer
4+
5+
6+
class ClienteViewSet(ModelViewSet):
7+
queryset = Cliente.objects.all()
8+
serializer_class = ClienteSerializer

clientes/apps.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from django.apps import AppConfig
2+
3+
4+
class ClientesConfig(AppConfig):
5+
default_auto_field = 'django.db.models.BigAutoField'
6+
name = 'clientes'

clientes/migrations/0001_initial.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Generated by Django 3.2 on 2021-04-21 23:00
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
initial = True
9+
10+
dependencies = [
11+
]
12+
13+
operations = [
14+
migrations.CreateModel(
15+
name='Cliente',
16+
fields=[
17+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18+
('nome', models.CharField(max_length=40)),
19+
('sobrenome', models.CharField(max_length=150)),
20+
('cpf', models.CharField(max_length=11, unique=True)),
21+
('rg', models.CharField(max_length=9, unique=True)),
22+
('dataNasc', models.DateField()),
23+
('endereco', models.CharField(max_length=100)),
24+
('email', models.CharField(blank=True, max_length=60, unique=True)),
25+
('telefone', models.CharField(max_length=15)),
26+
('dataCadastro', models.DateField(auto_now_add=True)),
27+
],
28+
),
29+
]
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Generated by Django 3.2 on 2021-04-21 23:05
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('enderecos', '0001_initial'),
11+
('clientes', '0001_initial'),
12+
]
13+
14+
operations = [
15+
migrations.AlterField(
16+
model_name='cliente',
17+
name='endereco',
18+
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='enderecos.endereco'),
19+
),
20+
]

clientes/migrations/__init__.py

Whitespace-only changes.
Binary file not shown.
Binary file not shown.
Binary file not shown.

clientes/models.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from django.db import models
2+
from enderecos.models import Endereco
3+
4+
class Cliente(models.Model):
5+
nome = models.CharField(max_length=40)
6+
sobrenome = models.CharField(max_length=150)
7+
cpf = models.CharField(max_length=11, unique=True)
8+
rg = models.CharField(max_length=9, unique=True)
9+
dataNasc = models.DateField()
10+
endereco = models.ForeignKey(Endereco, on_delete=models.PROTECT)
11+
email = models.CharField(max_length=60, unique=True, blank=True)
12+
telefone = models.CharField(max_length=15)
13+
dataCadastro = models.DateField(auto_now_add=True)
14+
15+
def __str__(self):
16+
return self.nome + ' ' + self.sobrenome + ' - ' + self.cpf

clientes/tests.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from django.test import TestCase
2+
3+
# Create your tests here.

clientes/urls.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from django.conf.urls import url
2+
from clientes import views
3+
4+
urlpatterns = [
5+
url(r'^clientes$', views.cliente_list),
6+
url(r'^cliente/(?P<pk>[0-9]+)$', views.cliente_detail),
7+
url(r'^cliente/create$', views.cliente_create),
8+
url(r'^cliente/update', views.cliente_update),
9+
url(r'^cliente/delete/(?P<pk>[0-9]+)$', views.cliente_delete),
10+
]

clientes/views.py

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
import json
2+
3+
from django.shortcuts import render
4+
5+
from django.http.response import JsonResponse
6+
from rest_framework.parsers import JSONParser
7+
from rest_framework import status
8+
9+
from clientes.models import Cliente
10+
from clientes.api.serializers import ClienteSerializer
11+
from rest_framework.decorators import api_view, permission_classes
12+
13+
from rest_framework.permissions import IsAuthenticated
14+
15+
from rest_framework.response import Response
16+
17+
# @permission_classes([IsAuthenticated])
18+
19+
20+
@api_view(['GET'])
21+
@permission_classes([IsAuthenticated])
22+
def cliente_list(request):
23+
if request.method == 'GET':
24+
clientes = Cliente.objects.all()
25+
26+
nome = request.GET.get('nome', None)
27+
if nome is not None:
28+
clientes = clientes.filter(nome__icontains=nome)
29+
30+
clientes_serializer = ClienteSerializer(clientes, many=True)
31+
return JsonResponse(clientes_serializer.data, safe=False)
32+
return JsonResponse({'message': 'Metodo inválido de buscas'})
33+
34+
@api_view(['GET'])
35+
@permission_classes([IsAuthenticated])
36+
def cliente_detail(request, pk):
37+
try:
38+
cliente = Cliente.objects.get(pk=pk)
39+
except Cliente.DoesNotExist:
40+
return JsonResponse({'message': 'O cliente não existe'}, status=status.HTTP_404_NOT_FOUND)
41+
if request.method == 'GET':
42+
cliente_serializer = ClienteSerializer(cliente)
43+
return JsonResponse(cliente_serializer.data)
44+
return JsonResponse({'message': 'Metodo inválido de buscas'})
45+
46+
@api_view(['POST'])
47+
@permission_classes([IsAuthenticated])
48+
def cliente_create(request):
49+
cliente_data = JSONParser().parse(request)
50+
cliente_serializer = ClienteSerializer(data=cliente_data)
51+
if cliente_serializer.is_valid():
52+
cliente_serializer.save()
53+
return JsonResponse(cliente_serializer.data, status=status.HTTP_201_CREATED)
54+
return JsonResponse(cliente_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
55+
56+
@api_view(['PUT','UPDATE'])
57+
@permission_classes([IsAuthenticated])
58+
def cliente_update(request):
59+
cliente_data = JSONParser().parse(request)
60+
try:
61+
cliente = Cliente.objects.get(id=cliente_data['id'])
62+
except Cliente.DoesNotExist:
63+
return JsonResponse({'message': 'O cliente não existe'}, status=status.HTTP_404_NOT_FOUND)
64+
cliente_serializer = ClienteSerializer(cliente, data=cliente_data)
65+
if cliente_serializer.is_valid():
66+
cliente_serializer.save()
67+
return JsonResponse(cliente_serializer.data)
68+
return JsonResponse(cliente_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
69+
70+
@api_view(['DELETE'])
71+
@permission_classes([IsAuthenticated])
72+
def cliente_delete(request, pk):
73+
try:
74+
cliente = Cliente.objects.get(id=pk)
75+
except Cliente.DoesNotExist:
76+
return JsonResponse({'message': 'O cliente não existe'}, status=status.HTTP_404_NOT_FOUND)
77+
if request.method == 'DELETE':
78+
cliente.delete()
79+
return JsonResponse({'message': 'O cliente '+ cliente.nome +' foi deletado'}) # , status=status.HTTP_204_NO_CONTENT
80+
return JsonResponse(cliente_serializer.errors, status=status.HTTP_400_BAD_REQUEST)

enderecos/__init__.py

Whitespace-only changes.
174 Bytes
Binary file not shown.
289 Bytes
Binary file not shown.
457 Bytes
Binary file not shown.
798 Bytes
Binary file not shown.
526 Bytes
Binary file not shown.
2.65 KB
Binary file not shown.

enderecos/admin.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from django.contrib import admin
2+
from .models import Endereco
3+
4+
admin.site.register(Endereco)

enderecos/api/__init__.py

Whitespace-only changes.
178 Bytes
Binary file not shown.
Binary file not shown.
578 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)