diff --git a/Makefile b/Makefile index 3648cf0..39b8c83 100644 --- a/Makefile +++ b/Makefile @@ -38,3 +38,5 @@ cover: teardown: docker-compose -f ${COMPOSE_ENV}.yml down -v + +recreate: teardown run diff --git a/tmh_registry/users/api/serializers.py b/tmh_registry/users/api/serializers.py index 9534a66..4e0e759 100644 --- a/tmh_registry/users/api/serializers.py +++ b/tmh_registry/users/api/serializers.py @@ -1,13 +1,14 @@ from django.contrib.auth import get_user_model from django.db import transaction -from rest_framework import serializers +from rest_framework.fields import CharField +from rest_framework.serializers import ModelSerializer, Serializer from tmh_registry.users.models import MedicalPersonnel User = get_user_model() -class UserSerializer(serializers.ModelSerializer): +class UserSerializer(ModelSerializer): class Meta: model = User fields = ["email"] @@ -21,27 +22,28 @@ def create(self, validated_data): return user -class UserReadSerializer(serializers.ModelSerializer): +class UserReadSerializer(ModelSerializer): class Meta: model = User fields = ["email"] -class MedicalPersonnelSerializer(serializers.ModelSerializer): +class MedicalPersonnelSerializer(ModelSerializer): user = UserSerializer() + level = CharField(source="get_level_display") class Meta: model = MedicalPersonnel - fields = ["user"] + fields = ["user", "level"] -class SignInSerializer(serializers.Serializer): +class SignInSerializer(Serializer): """ Serializer responsible for input validation of sign in view """ - username = serializers.CharField(required=True) - password = serializers.CharField(required=True) + username = CharField(required=True) + password = CharField(required=True) def update(self, instance, validated_data): # pragma: no cover pass @@ -50,12 +52,12 @@ def create(self, validated_data): # pragma: no cover pass -class SignInResponseSerializer(serializers.Serializer): +class SignInResponseSerializer(Serializer): """ Serializer responsible for output validation of sign in view """ - token = serializers.CharField(required=True) + token = CharField(required=True) user = UserReadSerializer() def update(self, instance, validated_data): # pragma: no cover diff --git a/tmh_registry/users/api/viewsets.py b/tmh_registry/users/api/viewsets.py index d282e14..c7736b6 100644 --- a/tmh_registry/users/api/viewsets.py +++ b/tmh_registry/users/api/viewsets.py @@ -11,10 +11,13 @@ from rest_framework.viewsets import GenericViewSet from tmh_registry.users.api.serializers import ( + MedicalPersonnelSerializer, UserReadSerializer, UserSerializer, ) +from ..models import MedicalPersonnel + User = get_user_model() @@ -36,3 +39,10 @@ def get_serializer_class(self): def me(self, request): serializer = UserSerializer(request.user, context={"request": request}) return Response(status=status.HTTP_200_OK, data=serializer.data) + + +class MedicalPersonnelViewSet( + RetrieveModelMixin, ListModelMixin, GenericViewSet +): + queryset = MedicalPersonnel.objects.all() + serializer_class = MedicalPersonnelSerializer diff --git a/tmh_registry/users/urls.py b/tmh_registry/users/urls.py index b953772..de5fd75 100644 --- a/tmh_registry/users/urls.py +++ b/tmh_registry/users/urls.py @@ -1,7 +1,13 @@ -from django.urls import path +from django.urls import include, path +from rest_framework.routers import DefaultRouter from tmh_registry.users.api.views import SignInView +from tmh_registry.users.api.viewsets import MedicalPersonnelViewSet + +router = DefaultRouter() +router.register(r"medical-personnel", MedicalPersonnelViewSet) urlpatterns = [ path(r"sign-in/", SignInView.as_view()), + path(r"", include(router.urls)), ]