this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'master' into refactor/add-pre-commit-hooks

+107 -106
care/facility/api/__init__.py

This is a binary file and will not be displayed.

-68
care/facility/api/serializers.py
··· 1 - from django.contrib.auth import get_user_model 2 - from django.db import transaction 3 - from drf_extra_fields.geo_fields import PointField 4 - from rest_framework import serializers 5 - 6 - from care.facility.models import FACILITY_TYPES, Ambulance, AmbulanceDriver, Facility 7 - from config.serializers import ChoiceField 8 - 9 - User = get_user_model() 10 - 11 - TIMESTAMP_FIELDS = ( 12 - "created_date", 13 - "modified_date", 14 - "deleted", 15 - ) 16 - 17 - 18 - class FacilitySerializer(serializers.ModelSerializer): 19 - """Serializer for facility.models.Facility.""" 20 - 21 - district = ChoiceField(choices=User.DISTRICT_CHOICES) 22 - facility_type = ChoiceField(choices=FACILITY_TYPES) 23 - # A valid location => { 24 - # "latitude": 49.8782482189424, 25 - # "longitude": 24.452545489 26 - # } 27 - location = PointField(required=False) 28 - 29 - class Meta: 30 - model = Facility 31 - fields = [ 32 - "id", 33 - "name", 34 - "district", 35 - "facility_type", 36 - "address", 37 - "location", 38 - "oxygen_capacity", 39 - "phone_number", 40 - ] 41 - 42 - 43 - class AmbulanceDriverSerializer(serializers.ModelSerializer): 44 - class Meta: 45 - model = AmbulanceDriver 46 - exclude = TIMESTAMP_FIELDS + ("ambulance",) 47 - 48 - 49 - class AmbulanceSerializer(serializers.ModelSerializer): 50 - drivers = serializers.ListSerializer(child=AmbulanceDriverSerializer()) 51 - 52 - class Meta: 53 - model = Ambulance 54 - exclude = TIMESTAMP_FIELDS 55 - 56 - def create(self, validated_data): 57 - with transaction.atomic(): 58 - drivers = validated_data.pop("drivers", []) 59 - ambulance = super(AmbulanceSerializer, self).create(validated_data) 60 - for d in drivers: 61 - d["ambulance"] = ambulance 62 - AmbulanceDriverSerializer().create(d) 63 - return ambulance 64 - 65 - def update(self, instance, validated_data): 66 - validated_data.pop("drivers", []) 67 - ambulance = super(AmbulanceSerializer, self).update(instance, validated_data) 68 - return ambulance
+1
care/facility/api/serializers/__init__.py
··· 1 + TIMESTAMP_FIELDS = ('created_date', 'modified_date', 'deleted',)
+33
care/facility/api/serializers/ambulance.py
··· 1 + from django.db import transaction 2 + from rest_framework import serializers 3 + 4 + from care.facility.api.serializers import TIMESTAMP_FIELDS 5 + from care.facility.models import Ambulance, AmbulanceDriver 6 + 7 + 8 + class AmbulanceDriverSerializer(serializers.ModelSerializer): 9 + class Meta: 10 + model = AmbulanceDriver 11 + exclude = TIMESTAMP_FIELDS + ("ambulance",) 12 + 13 + 14 + class AmbulanceSerializer(serializers.ModelSerializer): 15 + drivers = serializers.ListSerializer(child=AmbulanceDriverSerializer()) 16 + 17 + class Meta: 18 + model = Ambulance 19 + exclude = TIMESTAMP_FIELDS 20 + 21 + def create(self, validated_data): 22 + with transaction.atomic(): 23 + drivers = validated_data.pop("drivers", []) 24 + ambulance = super(AmbulanceSerializer, self).create(validated_data) 25 + for d in drivers: 26 + d["ambulance"] = ambulance 27 + AmbulanceDriverSerializer().create(d) 28 + return ambulance 29 + 30 + def update(self, instance, validated_data): 31 + validated_data.pop("drivers", []) 32 + ambulance = super(AmbulanceSerializer, self).update(instance, validated_data) 33 + return ambulance
+33
care/facility/api/serializers/facility.py
··· 1 + from django.contrib.auth import get_user_model 2 + from drf_extra_fields.geo_fields import PointField 3 + from rest_framework import serializers 4 + 5 + from care.facility.models import FACILITY_TYPES, Facility 6 + from config.serializers import ChoiceField 7 + 8 + User = get_user_model() 9 + 10 + 11 + class FacilitySerializer(serializers.ModelSerializer): 12 + """Serializer for facility.models.Facility.""" 13 + 14 + district = ChoiceField(choices=User.DISTRICT_CHOICES) 15 + facility_type = ChoiceField(choices=FACILITY_TYPES) 16 + # A valid location => { 17 + # "latitude": 49.8782482189424, 18 + # "longitude": 24.452545489 19 + # } 20 + location = PointField(required=False) 21 + 22 + class Meta: 23 + model = Facility 24 + fields = [ 25 + "id", 26 + "name", 27 + "district", 28 + "facility_type", 29 + "address", 30 + "location", 31 + "oxygen_capacity", 32 + "phone_number", 33 + ]
+4 -37
care/facility/api/views.py care/facility/api/viewsets/ambulance.py
··· 1 1 from django_filters import rest_framework as filters 2 2 from rest_framework import serializers, status 3 3 from rest_framework.decorators import action 4 - from rest_framework.mixins import ( 5 - CreateModelMixin, 6 - DestroyModelMixin, 7 - ListModelMixin, 8 - RetrieveModelMixin, 9 - UpdateModelMixin, 10 - ) 11 - from rest_framework.permissions import IsAuthenticated 4 + from rest_framework.mixins import ListModelMixin 12 5 from rest_framework.response import Response 13 - from rest_framework.viewsets import GenericViewSet 14 6 15 - from care.facility.api.serializers import ( 7 + from care.facility.api.serializers.ambulance import ( 16 8 AmbulanceDriverSerializer, 17 9 AmbulanceSerializer, 18 - FacilitySerializer, 19 10 ) 20 - from care.facility.models import Ambulance, Facility 21 - 22 - 23 - class FacilityBaseViewset(CreateModelMixin, RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin, GenericViewSet): 24 - """Base class for all endpoints related to Faclity model.""" 25 - 26 - permission_classes = (IsAuthenticated,) 27 - 28 - 29 - class FacilityViewSet(FacilityBaseViewset, ListModelMixin): 30 - """Viewset for facility CRUD operations.""" 31 - 32 - serializer_class = FacilitySerializer 33 - queryset = Facility.objects.filter(is_active=True) 34 - 35 - def get_queryset(self): 36 - user = self.request.user 37 - if user.is_superuser: 38 - return self.queryset 39 - return self.queryset.filter(created_by=user) 40 - 41 - def perform_create(self, serializer): 42 - serializer.save(created_by=self.request.user) 43 - 44 - def perform_update(self, serializer): 45 - serializer.save(created_by=self.request.user) 11 + from care.facility.api.viewsets import FacilityBaseViewset 12 + from care.facility.models import Ambulance 46 13 47 14 48 15 class AmbulanceFilterSet(filters.FilterSet):
+10
care/facility/api/viewsets/__init__.py
··· 1 + from rest_framework.mixins import CreateModelMixin, RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin 2 + from rest_framework.permissions import IsAuthenticated 3 + from rest_framework.viewsets import GenericViewSet 4 + 5 + 6 + class FacilityBaseViewset(CreateModelMixin, RetrieveModelMixin, 7 + UpdateModelMixin, DestroyModelMixin, GenericViewSet): 8 + """Base class for all endpoints related to Faclity model.""" 9 + 10 + permission_classes = (IsAuthenticated,)
+24
care/facility/api/viewsets/facility.py
··· 1 + from rest_framework.mixins import ListModelMixin 2 + 3 + from care.facility.api.serializers.facility import FacilitySerializer 4 + from care.facility.api.viewsets import FacilityBaseViewset 5 + from care.facility.models import Facility 6 + 7 + 8 + class FacilityViewSet(FacilityBaseViewset, ListModelMixin): 9 + """Viewset for facility CRUD operations.""" 10 + 11 + serializer_class = FacilitySerializer 12 + queryset = Facility.objects.filter(is_active=True) 13 + 14 + def get_queryset(self): 15 + user = self.request.user 16 + if user.is_superuser: 17 + return self.queryset 18 + return self.queryset.filter(created_by=user) 19 + 20 + def perform_create(self, serializer): 21 + serializer.save(created_by=self.request.user) 22 + 23 + def perform_update(self, serializer): 24 + serializer.save(created_by=self.request.user)
+2 -1
config/api_router.py
··· 1 1 from django.conf import settings 2 2 from rest_framework.routers import DefaultRouter, SimpleRouter 3 3 4 - from care.facility.api.views import AmbulanceViewSet, FacilityViewSet 4 + from care.facility.api.viewsets.ambulance import AmbulanceViewSet 5 + from care.facility.api.viewsets.facility import FacilityViewSet 5 6 from care.users.api.views import UserViewSet 6 7 7 8 if settings.DEBUG: