Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/71 crud user #2

Merged
merged 8 commits into from
Oct 3, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions settings/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,7 @@
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = ['localhost']

ALLOWED_HOSTS = ['localhost', '0.0.0.0']

# Application definition

Expand All @@ -37,8 +36,10 @@
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'rest_framework_swagger',
'rest_framework',
'user_service',
]

MIDDLEWARE = [
Expand Down
6 changes: 5 additions & 1 deletion settings/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,13 @@
"""
from rest_framework_swagger.views import get_swagger_view
from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from django.urls import path, include
from user_service.views import register_client, list_clients

urlpatterns = [
path ('', get_swagger_view('User Service API')),
path('admin/', admin.site.urls),
url(r'^', include('user_service.urls')),

]
25 changes: 25 additions & 0 deletions user_service/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Generated by Django 2.2.5 on 2019-10-01 13:25

from django.db import migrations, models


class Migration(migrations.Migration):

initial = True

dependencies = [
]

operations = [
migrations.CreateModel(
name='Client',
fields=[
('registro', models.IntegerField(primary_key=True, serialize=False)),
('first_name', models.CharField(max_length=20)),
('last_name', models.CharField(max_length=70)),
('email', models.CharField(max_length=50, unique=True)),
('password', models.CharField(max_length=400)),
('cpf', models.CharField(max_length=14)),
],
),
]
14 changes: 13 additions & 1 deletion user_service/models.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
from django.db import models
from django.conf import settings

# Create your models here.
class Client(models.Model):

registro = models.IntegerField(primary_key = True)
first_name = models.CharField(max_length=20)
last_name = models.CharField(max_length=70)
email = models.CharField(max_length=50, unique=True)
password = models.CharField(max_length=400)
cpf = models.CharField(max_length = 14)


def __str__(self):
return self.first_name + self.last_name
13 changes: 13 additions & 0 deletions user_service/serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from rest_framework import serializers
from .models import Client


class ClientSerializer(serializers.ModelSerializer):
class Meta:
model = Client
fields = '__all__'

class EditUserSerializer(serializers.ModelSerializer):
class Meta:
model = Client
fields = "__all__"
56 changes: 50 additions & 6 deletions user_service/tests.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,53 @@
from django.test import TestCase
from .models import Client
from rest_framework.test import APITestCase
import json
from django.core import serializers
from .serializers import ClientSerializer

# Create your tests here.
class UselessTest(TestCase):
def setUp(self):
print('Yay')
class CheckCLientAPITest(APITestCase):

def test_if_true_still_true(self):
self.assertEqual(True, True)
def test_register_client_with_correct_params(self):
# If user was successfully created
request_1 = {'registro':'123', 'first_name':'Matheus', 'last_name':'Blanco', 'email':'msallesblanco2gmail.com', 'password':'12345678', 'cpf':'065.822.021-70'}
response_1 = self.client.post('/register_client/', request_1)
self.assertEqual(response_1.status_code, 200)

def test_register_client_with_status_0(registro, status=0):

registro = 1
first_name = 'xiu'
last_name = 'xau'
email = 'xiuxau@gmail.com'
password = '12345698'
cpf = '065.922.021-70'


Client.objects.create(
registro = registro,
first_name = first_name,
last_name = last_name,
email = email,
password = password,
cpf = cpf
)

def test_delete_client_with_wrong_id(self):
request_1 = {'registro':'123', 'first_name':'Matheus', 'last_name':'Blanco', 'email':'msallesblanco2gmail.com', 'password':'12345678', 'cpf':'065.822.021-70'}
self.client.post('/delete_client/', request_1)

# INTERNAL REQUEST ERROR if order does not exist
request_2 = {'registro': 'p'}
response_2 = self.client.post('/delete_client/', request_2)
self.assertEqual(response_2.status_code, 404)

def test_list_clients(self):
request_1 = {}
response_1 = self.client.post('/list_clients/', request_1)
self.assertEqual(response_1.status_code, 200)

def test_edit_client_with_missing_params(self):
request_1 = {'registro':'123', 'first_name':'Matheus', 'last_name':'Blanco', 'email':'msallesblanco2gmail.com', 'password':'12345678', 'cpf':'065.822.021-70'}
response_1 = self.client.post('/register_client/', request_1)
response_1 = self.client.post('edit_client/', request_1)
self.assertEqual(response_1.status_code, 404)
13 changes: 13 additions & 0 deletions user_service/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from django.urls import path
from django.conf.urls import url
from user_service import views
from .views import register_client, list_clients, delete_client, edit_client


urlpatterns = [
path('register_client/', register_client, name='register_client'),
path('list_clients/', list_clients, name='list_clients'),
path('edit_client/<int:registro>', edit_client, name='edit_client'),
path('delete_client/<int:registro>', delete_client, name='delete_client')

]
83 changes: 82 additions & 1 deletion user_service/views.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,84 @@
from user_service.models import Client
from django.http import HttpResponse, JsonResponse
from rest_framework import permissions, generics
from rest_framework.response import Response
from rest_framework.decorators import action
from rest_framework.generics import CreateAPIView
from rest_framework.authtoken.models import Token
from django.shortcuts import render
from .serializers import ClientSerializer
from django.shortcuts import get_object_or_404
from rest_framework.decorators import api_view
from rest_framework.status import (
HTTP_403_FORBIDDEN,
HTTP_200_OK,
HTTP_404_NOT_FOUND,
HTTP_400_BAD_REQUEST,
)
class ClientList(generics.ListCreateAPIView):
queryset = Client.objects.all()
serializer_class = ClientSerializer

# Create your views here.
queryset = Client.objects.all()
class ClientDetail(generics.RetrieveUpdateDestroyAPIView):
serializer_class = ClientSerializer

@api_view(['POST'])
def register_client(request):
serializer = ClientSerializer(data=request.data)
data = {}

if serializer.is_valid():
order = serializer.save()
data['response'] = 'Usuário registrado com sucesso'

else:
data = serializer.errors

return Response(data)

@api_view(["POST"])
def list_clients(request):
clients = Client.objects.all().values()
return Response(data=clients)

@api_view(['DELETE'])
def delete_client(request, registro):

# If request is valid
client = Client.objects.get(pk=registro)
if (registro == None):
return Response({'error': 'Formulário inválido.'},
status=HTTP_400_BAD_REQUEST)
# If order exist
try:
client = Client.objects.get(pk=registro)
except:
return Response({'error': 'Produto não existe.'},
status=HTTP_404_NOT_FOUND)
client.delete()
return HttpResponse(status=204)


@api_view(["POST"])
def edit_client(request, registro):
client = Client.objects.get(pk=registro)
first_name = request.data.get('first_name')
last_name = request.data.get('last_name')
email = request.data.get('email')


if(registro == None):
return Response({'error':'Falha na requisição.'},status=HTTP_400_BAD_REQUEST)

try:
client = Client.objects.get(pk=registro)
except:
return Response({'error': 'Cliente não existe.'},
status=HTTP_404_NOT_FOUND)
serializer = ClientSerializer(client, request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
else:
return Response(serializer.errors, status=HTTP_400_BAD_REQUEST)