Skip to content

Commit

Permalink
missing migration
Browse files Browse the repository at this point in the history
  • Loading branch information
delcroip committed Oct 2, 2024
1 parent 34ae42e commit cbb74a9
Show file tree
Hide file tree
Showing 6 changed files with 44 additions and 14 deletions.
34 changes: 31 additions & 3 deletions api_fhir_r4/mixins.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,16 @@
from django.core.exceptions import ObjectDoesNotExist, FieldError
from django.http import Http404

from rest_framework.mixins import RetrieveModelMixin
from api_fhir_r4.model_retrievers import GenericModelRetriever
from rest_framework.response import Response

from core.models import HistoryModel
from api_fhir_r4.multiserializer.mixins import MultiSerializerUpdateModelMixin, MultiSerializerRetrieveModelMixin
from rest_framework.mixins import (
CreateModelMixin as RestCreateModelMixin,
UpdateModelMixin as RestUpdateModelMixin,
ListModelMixin as RestListModelMixin
ListModelMixin as RestListModelMixin,
DestroyModelMixin as RestDestroyModelMixin,
RetrieveModelMixin as RestRetrieveModelMixin,
)

logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -71,6 +72,33 @@ def list(self, request, *args, **kwargs):
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)

class DestroyModelMixin(RestDestroyModelMixin):
"""
Destroy a model instance.
"""
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
self.user = request.user
self.perform_destroy(instance)
return Response(status=status.HTTP_204_NO_CONTENT)

def perform_destroy(self, instance):
if issubclass(instance.__class__, HistoryModel):
instance.delete(user=self.user)
else:
instance.delete()


class RetrieveModelMixin(RestRetrieveModelMixin):
"""
Retrieve a model instance.
"""
def retrieve(self, request, *args, **kwargs):
self.user = request.user
instance = self.get_object()
serializer = self.get_serializer(instance, user=self.user)
return Response(serializer.data)


class GenericMultiIdentifierMixin(ABC):
lookup_field = 'identifier'
Expand Down
8 changes: 4 additions & 4 deletions api_fhir_r4/subscriptions/subscriptionSerializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@
FHIRApiHealthServicePermissions
from api_fhir_r4.serializers import BaseFHIRSerializer
from api_fhir_r4.services import SubscriptionService
from api_fhir_r4.mixins import RetrieveModelMixin


class SubscriptionSerializer(BaseFHIRSerializer):
class SubscriptionSerializer(BaseFHIRSerializer, RetrieveModelMixin):
fhirConverter = SubscriptionConverter
_error_while_saving = 'Error while saving a subscription: %(msg)s'

Expand All @@ -24,7 +24,7 @@ class SubscriptionSerializer(BaseFHIRSerializer):
}

def create(self, validated_data):
user = self.context['request'].user
user = self.user or self.context['request'].user
self.check_resource_rights(user, validated_data)
service = SubscriptionService(user)
copied_data = deepcopy(validated_data)
Expand All @@ -36,7 +36,7 @@ def create(self, validated_data):
return self.get_result_object(result)

def update(self, instance, validated_data):
user = self.context['request'].user
user = self.user or self.context['request'].user
self.check_instance_id(instance, validated_data)
self.check_object_owner(user, instance)
self.check_resource_rights(user, validated_data)
Expand Down
5 changes: 4 additions & 1 deletion api_fhir_r4/views/fhir/base/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,19 @@
from api_fhir_r4.mixins import (
UpdateModelMixin,
ListModelMixin,
CreateModelMixin
CreateModelMixin,
DestroyModelMixin
)


class BaseFHIRView(
CreateModelMixin,
UpdateModelMixin,
DestroyModelMixin,
APIView,

):
user = None
pagination_class = FhirBundleResultsSetPagination
permission_classes = (FHIRApiPermissions,)
authentication_classes = [CsrfExemptSessionAuthentication] + APIView.settings.DEFAULT_AUTHENTICATION_CLASSES
Expand Down
2 changes: 1 addition & 1 deletion api_fhir_r4/views/fhir/contract.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import datetime

from django.db.models import Prefetch
from rest_framework.mixins import RetrieveModelMixin, ListModelMixin
from rest_framework.viewsets import GenericViewSet
from api_fhir_r4.permissions import FHIRApiCoverageRequestPermissions
from api_fhir_r4.serializers import ContractSerializer
from api_fhir_r4.views.fhir.base import BaseFHIRView
from api_fhir_r4.mixins import RetrieveModelMixin, ListModelMixin
from api_fhir_r4.views.filters import ValidityFromRequestParameterFilter
from insuree.models import InsureePolicy
from policy.models import Policy
Expand Down
5 changes: 2 additions & 3 deletions api_fhir_r4/views/fhir/coverage_request.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import datetime

from rest_framework.mixins import RetrieveModelMixin

from rest_framework.viewsets import GenericViewSet
from api_fhir_r4.mixins import ListModelMixin
from api_fhir_r4.mixins import ListModelMixin, RetrieveModelMixin
from api_fhir_r4.permissions import FHIRApiCoverageRequestPermissions
from api_fhir_r4.serializers.coverageSerializer import CoverageSerializer
from api_fhir_r4.views.fhir.base import BaseFHIRView
Expand Down
4 changes: 2 additions & 2 deletions api_fhir_r4/views/fhir/subscription.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from api_fhir_r4.subscriptions.subscriptionSerializer import SubscriptionSerializerSchema
from api_fhir_r4.views.fhir.base import BaseFHIRView
from api_fhir_r4.views.filters import DateUpdatedRequestParameterFilter
from api_fhir_r4.mixins import ListModelMixin
from api_fhir_r4.mixins import ListModelMixin, RetrieveModelMixin

@extend_schema_view(
list=extend_schema(responses={(200, 'application/json'): SubscriptionSerializerSchema()}),
Expand All @@ -28,7 +28,7 @@
),
destroy=extend_schema(responses={204: None})
)
class SubscriptionViewSet(BaseFHIRView, ListModelMixin, ModelViewSet):
class SubscriptionViewSet(BaseFHIRView, ListModelMixin, RetrieveModelMixin, ModelViewSet):
_error_while_deleting = 'Error while deleting a subscription: %(msg)s'
serializer_class = SubscriptionSerializer
http_method_names = ('get', 'post', 'put', 'delete')
Expand Down

0 comments on commit cbb74a9

Please sign in to comment.