|
33 | 33 | DeltaIncludePattern,
|
34 | 34 | DeltaTitlePattern,
|
35 | 35 | )
|
36 |
| -from .models.delta_url import DeltaResolvedTitle, DeltaResolvedTitleError, DeltaUrl |
| 36 | +from .models.delta_url import ( |
| 37 | + CuratedUrl, |
| 38 | + DeltaResolvedTitle, |
| 39 | + DeltaResolvedTitleError, |
| 40 | + DeltaUrl, |
| 41 | +) |
37 | 42 | from .serializers import (
|
38 | 43 | CollectionReadSerializer,
|
39 | 44 | CollectionSerializer,
|
| 45 | + CuratedURLSerializer, |
40 | 46 | DeltaURLAPISerializer,
|
41 | 47 | DeltaURLBulkCreateSerializer,
|
42 | 48 | DeltaURLSerializer,
|
@@ -284,6 +290,36 @@ def update_division(self, request, pk=None):
|
284 | 290 | return Response(status=status.HTTP_400_BAD_REQUEST, data={"error": "Division is required."})
|
285 | 291 |
|
286 | 292 |
|
| 293 | +class CuratedURLViewSet(CollectionFilterMixin, viewsets.ModelViewSet): |
| 294 | + queryset = CuratedUrl.objects.all() |
| 295 | + serializer_class = CuratedURLSerializer |
| 296 | + |
| 297 | + def _filter_by_is_excluded(self, queryset, is_excluded): |
| 298 | + if is_excluded == "false": |
| 299 | + queryset = queryset.filter(excluded=False) |
| 300 | + elif is_excluded == "true": |
| 301 | + queryset = queryset.exclude(excluded=False) |
| 302 | + return queryset |
| 303 | + |
| 304 | + def get_queryset(self): |
| 305 | + queryset = super().get_queryset() |
| 306 | + if self.request.method == "GET": |
| 307 | + # Filter based on exclusion status |
| 308 | + is_excluded = self.request.GET.get("is_excluded") |
| 309 | + if is_excluded: |
| 310 | + queryset = self._filter_by_is_excluded(queryset, is_excluded) |
| 311 | + return queryset.order_by("url") |
| 312 | + |
| 313 | + def update_division(self, request, pk=None): |
| 314 | + delta_url = get_object_or_404(CuratedUrl, pk=pk) |
| 315 | + division = request.data.get("division") |
| 316 | + if division: |
| 317 | + delta_url.division = division |
| 318 | + delta_url.save() |
| 319 | + return Response(status=status.HTTP_200_OK) |
| 320 | + return Response(status=status.HTTP_400_BAD_REQUEST, data={"error": "Division is required."}) |
| 321 | + |
| 322 | + |
287 | 323 | class DeltaURLBulkCreateView(generics.ListCreateAPIView):
|
288 | 324 | queryset = DeltaUrl.objects.all()
|
289 | 325 | serializer_class = DeltaURLBulkCreateSerializer
|
|
0 commit comments