from rest_framework import generics
from .models import *
from .serializers import *
from django_filters import rest_framework as filters
from django_filters.rest_framework import DjangoFilterBackend
from common.views import *

# Create your views here.

# Bumpie


class BumpieListMobileView(SubscriptionPlanMixin, generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, MobileTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    queryset = Bumpie.objects.all()
    serializer_class = BumpieSerializer


class BumpieDetailMobileView(
    SubscriptionPlanMixin, generics.RetrieveUpdateDestroyAPIView
):
    authentication_classes = [APIKeyAuthentication, MobileTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    lookup_field = "id"
    queryset = Bumpie.objects.all()
    serializer_class = BumpieSerializer


class BumpieListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    pagination_class = StandardSetPagination
    queryset = Bumpie.objects.all()
    serializer_class = BumpieSerializer


class BumpieDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    lookup_field = "id"
    queryset = Bumpie.objects.all()
    serializer_class = BumpieSerializer


# Symptom Group


class SymptomGroupListMobileView(SubscriptionPlanMixin, generics.ListCreateAPIView):
    authentication_classes = [
        APIKeyAuthentication,
        MobileTokenAuthentication,
    ]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    pagination_class = StandardSetPagination
    queryset = SymptomGroup.objects.order_by("-date")
    serializer_class = SymptomGroupSerializer


class SymptomGroupDetailMobileView(SubscriptionPlanMixin, generics.DestroyAPIView):
    authentication_classes = [
        APIKeyAuthentication,
        MobileTokenAuthentication,
    ]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    lookup_field = "id"
    queryset = SymptomGroup.objects.all()
    serializer_class = SymptomGroupSerializer


# Symptom Row


class SymptomRowListMobileView(generics.ListCreateAPIView):
    authentication_classes = [
        APIKeyAuthentication,
        MobileTokenAuthentication,
    ]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["symptomGroupId", "symptomTypeId"]
    queryset = SymptomRow.objects.all()
    serializer_class = SymptomRowSerializer


class SymptomRowDetailMobileView(generics.DestroyAPIView):
    authentication_classes = [
        APIKeyAuthentication,
        MobileTokenAuthentication,
    ]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["symptomGroupId", "symptomTypeId"]
    lookup_field = "id"
    queryset = SymptomRow.objects.all()
    serializer_class = SymptomRowSerializer


# Kick Tracker Group


class KickTrackerFilter(filters.FilterSet):
    date = filters.DateFilter(field_name="date__date", lookup_expr="exact")

    class Meta:
        model = KickTrackerGroup
        fields = [
            "medicalProfileId",
            "date",
        ]


class KickTrackerGroupListMobileView(SubscriptionPlanMixin, generics.ListCreateAPIView):
    authentication_classes = [
        APIKeyAuthentication,
        MobileTokenAuthentication,
    ]
    filter_backends = [DjangoFilterBackend]
    filterset_class = KickTrackerFilter
    pagination_class = StandardSetPagination
    queryset = KickTrackerGroup.objects.order_by("-date")
    serializer_class = KickTrackerGroupSerializer


class KickTrackerGroupDetailMobileView(SubscriptionPlanMixin, generics.DestroyAPIView):
    authentication_classes = [
        APIKeyAuthentication,
        MobileTokenAuthentication,
    ]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    lookup_field = "id"
    queryset = KickTrackerGroup.objects.all()
    serializer_class = KickTrackerGroupSerializer


# Kick Tracker Row


class KickTrackerRowListMobileView(SubscriptionPlanMixin, generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, MobileTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["kickTrackerGroupId"]
    pagination_class = StandardSetPagination
    queryset = KickTrackerRow.objects.order_by("-date")
    serializer_class = KickTrackerRowSerializer


class KickTrackerRowDetailMobileView(SubscriptionPlanMixin, generics.DestroyAPIView):
    authentication_classes = [
        APIKeyAuthentication,
        MobileTokenAuthentication,
    ]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["kickTrackerGroupId"]
    lookup_field = "id"
    queryset = KickTrackerRow.objects.all()
    serializer_class = KickTrackerRowSerializer


# Ovluation Calculator


class OvulationListMobileView(SubscriptionPlanMixin, generics.ListCreateAPIView):
    authentication_classes = [
        APIKeyAuthentication,
        MobileTokenAuthentication,
    ]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    pagination_class = StandardSetPagination
    queryset = Ovulation.objects.order_by("-id")
    serializer_class = OvulationSerializer


class OvulationDetailMobileView(SubscriptionPlanMixin, generics.DestroyAPIView):
    authentication_classes = [
        APIKeyAuthentication,
        MobileTokenAuthentication,
    ]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    lookup_field = "id"
    queryset = Ovulation.objects.order_by("-id")
    serializer_class = OvulationSerializer


class OvulationListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    pagination_class = StandardSetPagination
    queryset = Ovulation.objects.order_by("-id")
    serializer_class = OvulationSerializer


class OvulationDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    lookup_field = "id"
    queryset = Ovulation.objects.order_by("-id")
    serializer_class = OvulationSerializer


# Memory


class MemoryListMobileView(SubscriptionPlanMixin, generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, MobileTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    pagination_class = StandardSetPagination
    queryset = Memory.objects.all().order_by("-id")
    serializer_class = MemorySerializer


class MemoryDetailMobileView(
    SubscriptionPlanMixin, generics.RetrieveUpdateDestroyAPIView
):
    authentication_classes = [APIKeyAuthentication, MobileTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = Memory.objects.all()
    serializer_class = MemorySerializer


class MemoryListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    pagination_class = StandardSetPagination
    queryset = Memory.objects.all()
    serializer_class = MemorySerializer


class MemoryDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = Memory.objects.all()
    serializer_class = MemorySerializer


# Due Date Calculator


class DueDateCalculatorListMobileView(
    SubscriptionPlanMixin, generics.ListCreateAPIView
):
    authentication_classes = [
        APIKeyAuthentication,
        MobileTokenAuthentication,
    ]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]

    pagination_class = StandardSetPagination
    queryset = DueDateCalculator.objects.all().order_by('-createdDate')
    serializer_class = DueDateCalculatorSerializer


class DueDateCalculatorDetailMobileView(
    SubscriptionPlanMixin, generics.RetrieveUpdateDestroyAPIView
):
    authentication_classes = [
        APIKeyAuthentication,
        MobileTokenAuthentication,
    ]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]

    lookup_field = "id"
    queryset = DueDateCalculator.objects.all().order_by('-createdDate')
    serializer_class = DueDateCalculatorSerializer


class DueDateCalculatorListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    pagination_class = StandardSetPagination
    queryset = DueDateCalculator.objects.all().order_by('-createdDate')
    serializer_class = DueDateCalculatorSerializer


class DueDateCalculatorDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    lookup_field = "id"
    queryset = DueDateCalculator.objects.all().order_by('-createdDate')
    serializer_class = DueDateCalculatorSerializer


# Weight Gain


class WeightGainListMobileView(SubscriptionPlanMixin, generics.ListCreateAPIView):
    authentication_classes = [
        APIKeyAuthentication,
        MobileTokenAuthentication,
    ]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]

    pagination_class = StandardSetPagination
    queryset = WeightGain.objects.order_by("-createdDate")
    serializer_class = WeightGainSerializer


class WeightGainDetailMobileView(SubscriptionPlanMixin, generics.DestroyAPIView):
    authentication_classes = [
        APIKeyAuthentication,
        MobileTokenAuthentication,
    ]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]

    lookup_field = "id"
    queryset = WeightGain.objects.all()
    serializer_class = WeightGainSerializer


# Pregnancy Care Category


class PregnancyCareCategoryListMobileView(SubscriptionPlanMixin, generics.ListAPIView):
    authentication_classes = [APIKeyAuthentication, MobileTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = PregnancyCareCategory.objects.all()
    serializer_class = PregnancyCareCategorySerializer


class PregnancyCareCategoryListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = PregnancyCareCategory.objects.all()
    serializer_class = PregnancyCareCategorySerializer


class PregnancyCareCategoryDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = PregnancyCareCategory.objects.all()
    serializer_class = PregnancyCareCategorySerializer


class PregnancyCareCategoryLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = PregnancyCareCategoryLanguage.objects.all()
    serializer_class = PregnancyCareCategoryLanguageSerializer


class PregnancyCareCategoryLanguageDetailDashboardView(
    generics.RetrieveUpdateDestroyAPIView
):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = PregnancyCareCategoryLanguage.objects.all()
    serializer_class = PregnancyCareCategoryLanguageSerializer


# Pregnancy Care Item


class PregnancyCareItemListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = PregnancyCareItem.objects.all()
    serializer_class = PregnancyCareItemSerializer


class PregnancyCareItemDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = PregnancyCareItem.objects.all()
    serializer_class = PregnancyCareItemSerializer


class PregnancyCareItemLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = PregnancyCareItemLanguage.objects.all()
    serializer_class = PregnancyCareItemLanguageSerializer


class PregnancyCareItemLanguageDetailDashboardView(
    generics.RetrieveUpdateDestroyAPIView
):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = PregnancyCareItemLanguage.objects.all()
    serializer_class = PregnancyCareItemLanguageSerializer


# Reminder


# Checkup


class CheckUpListMobileView(SubscriptionPlanMixin, generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, MobileTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    pagination_class = StandardSetPagination
    queryset = CheckUp.objects.all().order_by("-id")
    serializer_class = CheckUpSerializer


class CheckUpDetailMobileView(
    SubscriptionPlanMixin, generics.RetrieveUpdateDestroyAPIView
):
    authentication_classes = [APIKeyAuthentication, MobileTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    lookup_field = "id"
    queryset = CheckUp.objects.all().order_by("-id")
    serializer_class = CheckUpSerializer


class CheckUpListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    pagination_class = StandardSetPagination
    queryset = CheckUp.objects.all().order_by("-id")
    serializer_class = CheckUpSerializer


class CheckUpDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    lookup_field = "id"
    queryset = CheckUp.objects.all().order_by("-id")
    serializer_class = CheckUpSerializer


# Pregnancy Shopping Category


class PregnancyShoppingCategoryListMobileView(
    SubscriptionPlanMixin, generics.ListAPIView
):
    authentication_classes = [APIKeyAuthentication, MobileTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = PregnancyShoppingCategory.objects.all()
    serializer_class = PregnancyShoppingCategorySerializer


class PregnancyShoppingCategoryListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = PregnancyShoppingCategory.objects.all()
    serializer_class = PregnancyShoppingCategorySerializer


class PregnancyShoppingCategoryDetailDashboardView(
    generics.RetrieveUpdateDestroyAPIView
):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = PregnancyShoppingCategory.objects.all()
    serializer_class = PregnancyShoppingCategorySerializer


class PregnancyShoppingCategoryLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = PregnancyShoppingCategoryLanguage.objects.all()
    serializer_class = PregnancyShoppingCategoryLanguageSerializer


class PregnancyShoppingCategoryLanguageDetailDashboardView(
    generics.RetrieveUpdateDestroyAPIView
):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = PregnancyShoppingCategoryLanguage.objects.all()
    serializer_class = PregnancyShoppingCategoryLanguageSerializer


# Pregnancy Shopping Item


class PregnancyShoppingItemListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = PregnancyShoppingItem.objects.all()
    serializer_class = PregnancyShoppingItemSerializer


class PregnancyShoppingItemDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = PregnancyShoppingItem.objects.all()
    serializer_class = PregnancyShoppingItemSerializer


class PregnancyShoppingItemLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = PregnancyShoppingItemLanguage.objects.all()
    serializer_class = PregnancyShoppingItemLanguageSerializer


class PregnancyShoppingItemLanguageDetailDashboardView(
    generics.RetrieveUpdateDestroyAPIView
):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = PregnancyShoppingItemLanguage.objects.all()
    serializer_class = PregnancyShoppingItemLanguageSerializer


# Pregnancy Shopping Check Item


class PregnancyShoppingCheckItemListMobileView(
    SubscriptionPlanMixin, generics.ListCreateAPIView
):
    authentication_classes = [APIKeyAuthentication, MobileTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId", "pregnancyShoppingItemId"]
    queryset = PregnancyShoppingCheckItem.objects.all()
    serializer_class = PregnancyShoppingCheckItemSerializer


class PregnancyShoppingCheckItemDetailMobileView(generics.DestroyAPIView):
    authentication_classes = [APIKeyAuthentication, MobileTokenAuthentication]
    lookup_field = "id"
    queryset = PregnancyShoppingCheckItem.objects.all()
    serializer_class = PregnancyShoppingCheckItemSerializer


class PregnancyShoppingCheckItemListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = PregnancyShoppingCheckItem.objects.all()
    serializer_class = PregnancyShoppingCheckItemSerializer


class PregnancyShoppingCheckItemDetailDashboardView(
    generics.RetrieveUpdateDestroyAPIView
):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = PregnancyShoppingCheckItem.objects.all()
    serializer_class = PregnancyShoppingCheckItemSerializer


# Diaper


# Notes


class NotesListMobileView(SubscriptionPlanMixin, generics.ListCreateAPIView):
    authentication_classes = [
        APIKeyAuthentication,
        MobileTokenAuthentication,
    ]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    pagination_class = StandardSetPagination
    queryset = Notes.objects.all().order_by("-id")
    serializer_class = NotesSerializer


class NotesDetailMobileView(
    SubscriptionPlanMixin, generics.RetrieveUpdateDestroyAPIView
):
    authentication_classes = [APIKeyAuthentication, MobileTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]

    lookup_field = "id"
    queryset = Notes.objects.all()
    serializer_class = NotesSerializer


class NotesListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    pagination_class = StandardSetPagination
    queryset = Notes.objects.all()
    serializer_class = NotesSerializer


class NotesDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    lookup_field = "id"
    queryset = Notes.objects.all()
    serializer_class = NotesSerializer


# Appointments


class AppointmentListMobileView(SubscriptionPlanMixin, generics.ListCreateAPIView):
    authentication_classes = [
        APIKeyAuthentication,
        MobileTokenAuthentication,
    ]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]

    pagination_class = StandardSetPagination
    queryset = Appointment.objects.all().order_by("dateTime").order_by("isDone")
    serializer_class = AppointmentSerializer


class AppointmentDetailMobileView(
    SubscriptionPlanMixin, generics.RetrieveUpdateDestroyAPIView
):
    authentication_classes = [
        APIKeyAuthentication,
        MobileTokenAuthentication,
    ]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]

    lookup_field = "id"
    queryset = Appointment.objects.all()
    serializer_class = AppointmentSerializer


class AppointmentListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]

    pagination_class = StandardSetPagination
    queryset = Appointment.objects.all().order_by("dateTime").order_by("isDone")
    serializer_class = AppointmentSerializer


class AppointmentDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]

    lookup_field = "id"
    queryset = Appointment.objects.all()
    serializer_class = AppointmentSerializer


# Contraction Timer Group
class ContractionTimerGroupListMobileView(SubscriptionPlanMixin,generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, MobileTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    pagination_class = StandardSetPagination
    queryset = ContractionTimerGroup.objects.order_by("-date")
    serializer_class = ContractionTimerGroupSerializer

class ContractionTimerGroupDetailMobileView(SubscriptionPlanMixin,generics.DestroyAPIView):
    authentication_classes = [APIKeyAuthentication, MobileTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["medicalProfileId"]
    lookup_field = "id"
    queryset = ContractionTimerGroup.objects.all()
    serializer_class = ContractionTimerGroupSerializer

class ContractionTimerGroupListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    pagination_class = StandardSetPagination
    queryset = ContractionTimerGroup.objects.all()
    serializer_class = ContractionTimerGroupSerializer

class ContractionTimerGroupDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = ContractionTimerGroup.objects.all()
    serializer_class = ContractionTimerGroupSerializer

# Contraction Timer Row

class ContractionTimerRowListMobileView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, MobileTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["contractionTimerGroupId"]
    pagination_class = StandardSetPagination
    queryset = ContractionTimerRow.objects.all()
    serializer_class = ContractionTimerRowSerializer

class ContractionTimerRowDetailMobileView(generics.DestroyAPIView):
    authentication_classes = [APIKeyAuthentication, MobileTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["contractionTimerGroupId"]
    lookup_field = "id"
    queryset = ContractionTimerRow.objects.all()
    serializer_class = ContractionTimerRowSerializer

class ContractionTimerRowListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    pagination_class = StandardSetPagination
    queryset = ContractionTimerRow.objects.all()
    serializer_class = ContractionTimerRowSerializer

class ContractionTimerRowDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = ContractionTimerRow.objects.all()
    serializer_class = ContractionTimerRowSerializer

