Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion ohmg/core/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,10 @@
SessionSchema,
AnnotationSetSchema,
PlaceSchema,
LayerSchema,
)
from ohmg.loc_insurancemaps.models import Volume
from ohmg.georeference.models import SessionBase, AnnotationSet
from ohmg.georeference.models import SessionBase, AnnotationSet, Layer
from ohmg.places.models import Place

logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -175,3 +176,12 @@ def get_places_geojson(request):
geojson['features'].append(feature)

return geojson

@api.get('layers/', response=List[LayerSchema], url_name="layers")
def layer(request, map: str):

vol = Volume.objects.get(pk=map).serialize()
layer_ids = [i['slug'] for i in vol['items']['layers']]
layers = Layer.objects.filter(slug__in=layer_ids).prefetch_related('vrs')

return layers
34 changes: 34 additions & 0 deletions ohmg/core/schemas.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from datetime import datetime
from typing import List, Optional, Any, Union
from django.conf import settings
from django.urls import reverse
from ninja import (
Field,
Expand Down Expand Up @@ -143,6 +144,10 @@ class LayerSchema(Schema):
slug: str
detail_url: str
thumb_url: str = ''
geotiff_url: Optional[str]
image_url: Optional[str]
mask: Optional[dict]
gcps_geojson: Optional[dict]

@staticmethod
def resolve_thumb_url(obj):
Expand All @@ -153,6 +158,35 @@ def resolve_thumb_url(obj):
def resolve_detail_url(obj):
return reverse("resource_detail", args=(obj.pk, ))

@staticmethod
def resolve_mask(obj):
if obj.vrs and obj.vrs.multimask and obj.slug in obj.vrs.multimask:
return obj.vrs.multimask[obj.slug]
else:
return None

@staticmethod
def resolve_image_url(obj):
doc = obj.get_document()
if doc and doc.file:
return doc.file.url
else:
return None

@staticmethod
def resolve_geotiff_url(obj):
if obj.file:
return obj.file.url
else:
return None

@staticmethod
def resolve_gcps_geojson(obj):
doc = obj.get_document()
if doc:
return doc.gcps_geojson
else:
return None

class SessionSchema(Schema):

Expand Down