Skip to content
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
2 changes: 2 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,5 @@ cover:

teardown:
docker-compose -f ${COMPOSE_ENV}.yml down -v

recreate: teardown run
22 changes: 12 additions & 10 deletions tmh_registry/users/api/serializers.py
Original file line number Diff line number Diff line change
@@ -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"]
Expand All @@ -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
Expand All @@ -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
Expand Down
10 changes: 10 additions & 0 deletions tmh_registry/users/api/viewsets.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()


Expand All @@ -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
8 changes: 7 additions & 1 deletion tmh_registry/users/urls.py
Original file line number Diff line number Diff line change
@@ -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)),
]