Skip to content

Commit 7a33d3e

Browse files
committed
add initial curatedurl apis
1 parent 0f57932 commit 7a33d3e

File tree

3 files changed

+64
-1
lines changed

3 files changed

+64
-1
lines changed

sde_collections/serializers.py

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,46 @@ class Meta:
155155
"url",
156156
"title",
157157
"document_type",
158-
"hash",
158+
"file_extension",
159+
"tree_root",
160+
)
161+
162+
def get_document_type(self, obj):
163+
if obj.document_type is not None:
164+
return obj.get_document_type_display()
165+
elif obj.collection.document_type is not None:
166+
return obj.collection.get_document_type_display()
167+
else:
168+
return "Unknown"
169+
170+
def get_title(self, obj):
171+
return obj.generated_title if obj.generated_title else obj.scraped_title
172+
173+
def get_file_extension(self, obj):
174+
return obj.fileext
175+
176+
def get_tree_root(self, obj):
177+
if obj.collection.is_multi_division:
178+
if obj.division:
179+
return f"/{obj.get_division_display()}/{obj.collection.name}/"
180+
else:
181+
return f"/{obj.collection.get_division_display()}/{obj.collection.name}/"
182+
else:
183+
return obj.collection.tree_root
184+
185+
186+
class CuratedURLAPISerializer(serializers.ModelSerializer):
187+
document_type = serializers.SerializerMethodField()
188+
title = serializers.SerializerMethodField()
189+
file_extension = serializers.SerializerMethodField()
190+
tree_root = serializers.SerializerMethodField()
191+
192+
class Meta:
193+
model = CuratedUrl
194+
fields = (
195+
"url",
196+
"title",
197+
"document_type",
159198
"file_extension",
160199
"tree_root",
161200
)

sde_collections/urls.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,5 +60,11 @@
6060
view=views.DeltaURLAPIView.as_view(),
6161
name="delta-url-api",
6262
),
63+
path("curated-urls-api/<str:config_folder>/", view=views.CuratedURLAPIView.as_view(), name="curated-url-api"),
64+
path(
65+
"candidate-url-api/<str:config_folder>/",
66+
view=views.CuratedURLAPIView.as_view(),
67+
name="candidate-url-api",
68+
),
6369
path("titles-and-errors/", views.TitlesAndErrorsView.as_view(), name="titles-and-errors-list"),
6470
]

sde_collections/views.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
from .serializers import (
4343
CollectionReadSerializer,
4444
CollectionSerializer,
45+
CuratedURLAPISerializer,
4546
CuratedURLSerializer,
4647
DeltaURLAPISerializer,
4748
DeltaURLBulkCreateSerializer,
@@ -360,6 +361,23 @@ def get_queryset(self):
360361
return queryset
361362

362363

364+
class CuratedURLAPIView(ListAPIView):
365+
serializer_class = CuratedURLAPISerializer
366+
367+
def get(self, request, *args, **kwargs):
368+
config_folder = kwargs.get("config_folder")
369+
self.config_folder = config_folder
370+
return super().get(request, *args, **kwargs)
371+
372+
def get_queryset(self):
373+
queryset = (
374+
CuratedUrl.objects.filter(collection__config_folder=self.config_folder)
375+
.with_exclusion_status()
376+
.filter(excluded=False)
377+
)
378+
return queryset
379+
380+
363381
class ExcludePatternViewSet(CollectionFilterMixin, viewsets.ModelViewSet):
364382
queryset = DeltaExcludePattern.objects.all()
365383
serializer_class = ExcludePatternSerializer

0 commit comments

Comments
 (0)