Skip to content

Commit

Permalink
Add **kwargs to actions for use with nested routers (#46)
Browse files Browse the repository at this point in the history
* Add **kwargs to actions for use with nested routers

* Formatting

---------

Co-authored-by: Zac Miller <[email protected]>
Co-authored-by: Bane Sullivan <[email protected]>
  • Loading branch information
3 people authored Feb 19, 2023
1 parent d0201aa commit 4639c0c
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 26 deletions.
20 changes: 12 additions & 8 deletions django_large_image/rest/data.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@ class DataMixin(LargeImageMixinBase):
url_path=f'data/thumbnail.{params.FORMAT_URL_PATTERN}',
renderer_classes=image_renderers,
)
def thumbnail(self, request: Request, pk: int = None, fmt: str = 'png') -> HttpResponse:
def thumbnail(
self, request: Request, pk: int = None, fmt: str = 'png', **kwargs
) -> HttpResponse:
encoding = tilesource.format_to_encoding(fmt)
width = int(self.get_query_param(request, 'max_width', 256))
height = int(self.get_query_param(request, 'max_height', 256))
Expand All @@ -49,7 +51,7 @@ def thumbnail(self, request: Request, pk: int = None, fmt: str = 'png') -> HttpR
url_path=f'data/region.{params.FORMAT_URL_PATTERN}',
renderer_classes=image_data_renderers,
)
def region(self, request: Request, pk: int = None, fmt: str = 'tiff') -> HttpResponse:
def region(self, request: Request, pk: int = None, fmt: str = 'tiff', **kwargs) -> HttpResponse:
"""Return the region tile binary from world coordinates in given EPSG.
Note
Expand Down Expand Up @@ -89,7 +91,7 @@ def region(self, request: Request, pk: int = None, fmt: str = 'tiff') -> HttpRes
manual_parameters=pixel_parameters,
)
@action(detail=False, url_path='data/pixel')
def pixel(self, request: Request, pk: int = None) -> Response:
def pixel(self, request: Request, pk: int = None, **kwargs) -> Response:
left = int(self.get_query_param(request, 'left'))
top = int(self.get_query_param(request, 'top'))
source = self.get_tile_source(request, pk)
Expand All @@ -102,7 +104,7 @@ def pixel(self, request: Request, pk: int = None) -> Response:
manual_parameters=histogram_parameters,
)
@action(detail=False, url_path='data/histogram')
def histogram(self, request: Request, pk: int = None) -> Response:
def histogram(self, request: Request, pk: int = None, **kwargs) -> Response:
only_min_max = not utilities.param_nully(self.get_query_param(request, 'onlyMinMax', False))
density = not utilities.param_nully(self.get_query_param(request, 'density', False))
kwargs = dict(
Expand Down Expand Up @@ -136,7 +138,9 @@ class DataDetailMixin(DataMixin):
url_path=f'data/thumbnail.{params.FORMAT_URL_PATTERN}',
renderer_classes=image_renderers,
)
def thumbnail(self, request: Request, pk: int = None, fmt: str = 'png') -> HttpResponse:
def thumbnail(
self, request: Request, pk: int = None, fmt: str = 'png', **kwargs
) -> HttpResponse:
return super().thumbnail(request, pk, fmt)

@swagger_auto_schema(
Expand All @@ -149,7 +153,7 @@ def thumbnail(self, request: Request, pk: int = None, fmt: str = 'png') -> HttpR
url_path=f'data/region.{params.FORMAT_URL_PATTERN}',
renderer_classes=image_data_renderers,
)
def region(self, request: Request, pk: int = None, fmt: str = 'tiff') -> HttpResponse:
def region(self, request: Request, pk: int = None, fmt: str = 'tiff', **kwargs) -> HttpResponse:
return super().region(request, pk, fmt)

@swagger_auto_schema(
Expand All @@ -158,7 +162,7 @@ def region(self, request: Request, pk: int = None, fmt: str = 'tiff') -> HttpRes
manual_parameters=pixel_parameters,
)
@action(detail=True, url_path='data/pixel')
def pixel(self, request: Request, pk: int = None) -> Response:
def pixel(self, request: Request, pk: int = None, **kwargs) -> Response:
return super().pixel(request, pk)

@swagger_auto_schema(
Expand All @@ -167,5 +171,5 @@ def pixel(self, request: Request, pk: int = None) -> Response:
manual_parameters=histogram_parameters,
)
@action(detail=True, url_path='data/histogram')
def histogram(self, request: Request, pk: int = None) -> Response:
def histogram(self, request: Request, pk: int = None, **kwargs) -> Response:
return super().histogram(request, pk)
24 changes: 12 additions & 12 deletions django_large_image/rest/metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class MetaDataMixin(LargeImageMixinBase):
manual_parameters=metadata_parameters,
)
@action(detail=False, url_path='info/metadata')
def metadata(self, request: Request, pk: int = None) -> Response:
def metadata(self, request: Request, pk: int = None, **kwargs) -> Response:
source = self.get_tile_source(request, pk, style=False)
metadata = tilesource.get_metadata(source)
return Response(metadata)
Expand All @@ -50,7 +50,7 @@ def metadata(self, request: Request, pk: int = None) -> Response:
manual_parameters=metadata_internal_parameters,
)
@action(detail=False, url_path='info/metadata_internal')
def metadata_internal(self, request: Request, pk: int = None) -> Response:
def metadata_internal(self, request: Request, pk: int = None, **kwargs) -> Response:
source = self.get_tile_source(request, pk, style=False)
metadata = tilesource.get_metadata_internal(source)
return Response(metadata)
Expand All @@ -61,7 +61,7 @@ def metadata_internal(self, request: Request, pk: int = None) -> Response:
manual_parameters=bands_parameters,
)
@action(detail=False, url_path='info/bands')
def bands(self, request: Request, pk: int = None) -> Response:
def bands(self, request: Request, pk: int = None, **kwargs) -> Response:
source = self.get_tile_source(request, pk, style=False)
metadata = source.getBandInformation()
return Response(metadata)
Expand All @@ -72,7 +72,7 @@ def bands(self, request: Request, pk: int = None) -> Response:
manual_parameters=band_parameters,
)
@action(detail=False, url_path='info/band')
def band(self, request: Request, pk: int = None) -> Response:
def band(self, request: Request, pk: int = None, **kwargs) -> Response:
# TODO: handle frame choice
band = int(self.get_query_param(request, 'band', 1))
source = self.get_tile_source(request, pk, style=False)
Expand All @@ -85,7 +85,7 @@ def band(self, request: Request, pk: int = None) -> Response:
manual_parameters=frames_parameters,
)
@action(detail=False, url_path='info/frames')
def frames(self, request: Request, pk: int = None) -> Response:
def frames(self, request: Request, pk: int = None, **kwargs) -> Response:
source = self.get_tile_source(request, pk, style=False)
data = tilesource.get_frames(source)
return Response(data)
Expand All @@ -95,7 +95,7 @@ def frames(self, request: Request, pk: int = None) -> Response:
operation_summary=tiffdump_summary,
)
@action(detail=False, url_path='info/tiffdump')
def tiffdump(self, request: Request, pk: int = None) -> Response:
def tiffdump(self, request: Request, pk: int = None, **kwargs) -> Response:
if tifftools is None: # pragma: no cover
raise APIException('`tifftools` is not installed on the server.')
source = self.get_tile_source(request, pk, style=False)
Expand Down Expand Up @@ -124,7 +124,7 @@ class MetaDataDetailMixin(MetaDataMixin):
manual_parameters=metadata_parameters,
)
@action(detail=True, url_path='info/metadata')
def metadata(self, request: Request, pk: int = None) -> Response:
def metadata(self, request: Request, pk: int = None, **kwargs) -> Response:
return super().metadata(request, pk)

@swagger_auto_schema(
Expand All @@ -133,7 +133,7 @@ def metadata(self, request: Request, pk: int = None) -> Response:
manual_parameters=metadata_internal_parameters,
)
@action(detail=True, url_path='info/metadata_internal')
def metadata_internal(self, request: Request, pk: int = None) -> Response:
def metadata_internal(self, request: Request, pk: int = None, **kwargs) -> Response:
return super().metadata_internal(request, pk)

@swagger_auto_schema(
Expand All @@ -142,7 +142,7 @@ def metadata_internal(self, request: Request, pk: int = None) -> Response:
manual_parameters=bands_parameters,
)
@action(detail=True, url_path='info/bands')
def bands(self, request: Request, pk: int = None) -> Response:
def bands(self, request: Request, pk: int = None, **kwargs) -> Response:
return super().bands(request, pk)

@swagger_auto_schema(
Expand All @@ -151,7 +151,7 @@ def bands(self, request: Request, pk: int = None) -> Response:
manual_parameters=band_parameters,
)
@action(detail=True, url_path='info/band')
def band(self, request: Request, pk: int = None) -> Response:
def band(self, request: Request, pk: int = None, **kwargs) -> Response:
return super().band(request, pk)

@swagger_auto_schema(
Expand All @@ -160,13 +160,13 @@ def band(self, request: Request, pk: int = None) -> Response:
manual_parameters=frames_parameters,
)
@action(detail=True, url_path='info/frames')
def frames(self, request: Request, pk: int = None) -> Response:
def frames(self, request: Request, pk: int = None, **kwargs) -> Response:
return super().frames(request, pk)

@swagger_auto_schema(
method='GET',
operation_summary=tiffdump_summary,
)
@action(detail=True, url_path='info/tiffdump')
def tiffdump(self, request: Request, pk: int = None) -> Response:
def tiffdump(self, request: Request, pk: int = None, **kwargs) -> Response:
return super().tiffdump(request, pk)
12 changes: 6 additions & 6 deletions django_large_image/rest/tiles.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class TilesMixin(LargeImageMixinBase):
manual_parameters=tile_metadata_parameters,
)
@action(detail=False, url_path=r'tiles/metadata')
def tiles_metadata(self, request: Request, pk: int = None) -> Response:
def tiles_metadata(self, request: Request, pk: int = None, **kwargs) -> Response:
source = self.get_tile_source(request, pk, style=False)
source.dli_geospatial = tilesource.is_geospatial(source)
serializer = TileMetadataSerializer(source)
Expand All @@ -44,7 +44,7 @@ def tiles_metadata(self, request: Request, pk: int = None) -> Response:
renderer_classes=image_renderers,
)
def tile(
self, request: Request, x: int, y: int, z: int, pk: int = None, fmt: str = 'png'
self, request: Request, x: int, y: int, z: int, pk: int = None, fmt: str = 'png', **kwargs
) -> HttpResponse:
encoding = tilesource.format_to_encoding(fmt, pil_safe=True)
source = self.get_tile_source(request, pk, encoding=encoding)
Expand All @@ -64,7 +64,7 @@ def tile(
detail=False, methods=['get'], url_path=r'tiles/(?P<z>\d+)/(?P<x>\d+)/(?P<y>\d+)/corners'
)
def tile_corners(
self, request: Request, x: int, y: int, z: int, pk: int = None
self, request: Request, x: int, y: int, z: int, pk: int = None, **kwargs
) -> HttpResponse:
source = self.get_tile_source(request, pk, style=False)
xmin, ymin, xmax, ymax = source.getTileCorners(int(z), int(x), int(y))
Expand All @@ -85,7 +85,7 @@ class TilesDetailMixin(TilesMixin):
manual_parameters=tile_metadata_parameters,
)
@action(detail=True, url_path=r'tiles/metadata')
def tiles_metadata(self, request: Request, pk: int = None) -> Response:
def tiles_metadata(self, request: Request, pk: int = None, **kwargs) -> Response:
return super().tiles_metadata(request, pk)

@swagger_auto_schema(
Expand All @@ -99,7 +99,7 @@ def tiles_metadata(self, request: Request, pk: int = None) -> Response:
renderer_classes=image_renderers,
)
def tile(
self, request: Request, x: int, y: int, z: int, pk: int = None, fmt: str = 'png'
self, request: Request, x: int, y: int, z: int, pk: int = None, fmt: str = 'png', **kwargs
) -> HttpResponse:
return super().tile(request, x, y, z, pk, fmt)

Expand All @@ -112,6 +112,6 @@ def tile(
detail=True, methods=['get'], url_path=r'tiles/(?P<z>\d+)/(?P<x>\d+)/(?P<y>\d+)/corners'
)
def tile_corners(
self, request: Request, x: int, y: int, z: int, pk: int = None
self, request: Request, x: int, y: int, z: int, pk: int = None, **kwargs
) -> HttpResponse:
return super().tile_corners(request, x, y, z, pk)

0 comments on commit 4639c0c

Please sign in to comment.