@action(detail=False, methods=['POST'], url_path='admin/create_sessionstreak') def create_sessionstreak(self, request, *args, **kwargs): serializer = AdminSessionstreakSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) @action(detail=False, methods=['get'], url_path='admin/get_sessionstreak') def get_sessionstreak(self, request, *args, **kwargs): sessionstreak = Sessionstreak.objects.all() serializer = AdminSessionstreakSerializer(sessionstreak, many=True) return Response(serializer.data, status=status.HTTP_200_OK) @action(detail=False, methods=['GET'], url_path='admin/get_sessionstreak_by_id') def get_sessionstreak_by_id(self, request): try: sessionstreak_id = request.data.get('id') sessionstreak_instance = Sessionstreak.objects.get(id=sessionstreak_id) if not sessionstreak_instance: return Response({"detail": "Session streak not found"}, status=status.HTTP_400_BAD_REQUEST) sessionstreak_serializer_data = AdminSessionstreakSerializer(sessionstreak_instance) return Response({"payload":sessionstreak_serializer_data.data, "status": status.HTTP_200_OK}) except Sessionstreak.DoesNotExist: return Response({"error": "Session streak not found", "status": status.HTTP_404_NOT_FOUND}) @action(detail=False, methods=['PATCH'], url_path='admin/update_sessionstreak') def update_sessionstreak(self, request, *args, **kwargs): sessionstreak_id = request.data.get('id') try: instance = Sessionstreak.objects.get(id=sessionstreak_id) except Sessionstreak.DoesNotExist: return Response({"error":"Session streak not found"}, status=status.HTTP_400_BAD_REQUEST) serializer = AdminSessionstreakSerializer(instance, data=request.data, partial=True) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) @action(detail=False, methods=['DELETE'], url_path='admin/delete_sessionstreak') def delete_sessionstreak(self, request, *args, **kwargs): sessionstreak_id = request.data.get('id') try: instance = Sessionstreak.objects.get(id=sessionstreak_id) except Sessionstreak.DoesNotExist: return Response({"error":"Session streak not found"}, status=status.HTTP_400_BAD_REQUEST) instance.delete() return Response(status=status.HTTP_204_NO_CONTENT) class AdminSessionstreakSerializer(serializers.ModelSerializer): class Meta: model = Sessionstreak fields = ['id','user', 'last_login_time','current_streak','best_streak','active'] read_only_fields = ['id']