Renamed Resource to View, and allow custom root links

This commit is contained in:
Joel Collins 2020-01-14 11:41:56 +00:00
parent 234ebc1cbb
commit a329b9197b
18 changed files with 90 additions and 67 deletions

View file

@ -1,5 +1,5 @@
from openflexure_microscope.api.utilities import get_bool, JsonResponse
from openflexure_microscope.common.flask_labthings.resource import Resource
from openflexure_microscope.common.flask_labthings.view import View
from openflexure_microscope.common.flask_labthings.find import find_component
from openflexure_microscope.common.flask_labthings.decorators import (
use_args,
@ -20,7 +20,7 @@ from flask import jsonify, request, abort, url_for, redirect, send_file
@ThingAction
class CaptureAPI(Resource):
class CaptureAPI(View):
"""
Create a new image capture.
"""
@ -86,7 +86,7 @@ class CaptureAPI(Resource):
@ThingAction
class GPUPreviewStartAPI(Resource):
class GPUPreviewStartAPI(View):
"""
Start the onboard GPU preview.
Optional "window" parameter can be passed to control the position and size of the preview window,
@ -119,7 +119,7 @@ class GPUPreviewStartAPI(Resource):
@ThingAction
class GPUPreviewStopAPI(Resource):
class GPUPreviewStopAPI(View):
def post(self):
"""
Stop the onboard GPU preview.

View file

@ -1,5 +1,5 @@
from openflexure_microscope.api.utilities import JsonResponse
from openflexure_microscope.common.flask_labthings.resource import Resource
from openflexure_microscope.common.flask_labthings.view import View
from openflexure_microscope.common.flask_labthings.find import find_component
from openflexure_microscope.common.flask_labthings.decorators import (
use_args,
@ -17,7 +17,7 @@ import logging
@ThingAction
class MoveStageAPI(Resource):
class MoveStageAPI(View):
@use_args(
{
"absolute": fields.Boolean(
@ -62,7 +62,7 @@ class MoveStageAPI(Resource):
@ThingAction
class ZeroStageAPI(Resource):
class ZeroStageAPI(View):
def post(self):
"""
Zero the stage coordinates.

View file

@ -1,4 +1,4 @@
from openflexure_microscope.common.flask_labthings.resource import Resource
from openflexure_microscope.common.flask_labthings.view import View
import subprocess
import os
from sys import platform
@ -18,7 +18,7 @@ def is_raspberrypi(raise_on_errors=False):
@ThingAction
class ShutdownAPI(Resource):
class ShutdownAPI(View):
"""
Attempt to shutdown the device
"""
@ -34,7 +34,7 @@ class ShutdownAPI(Resource):
@ThingAction
class RebootAPI(Resource):
class RebootAPI(View):
"""
Attempt to reboot the device
"""

View file

@ -5,7 +5,7 @@ from openflexure_microscope.api.utilities import get_bool, JsonResponse
from openflexure_microscope.common.flask_labthings.schema import Schema
from openflexure_microscope.common.flask_labthings import fields
from openflexure_microscope.common.flask_labthings.resource import Resource
from openflexure_microscope.common.flask_labthings.view import View
from openflexure_microscope.common.flask_labthings.utilities import (
description_from_view,
)
@ -32,9 +32,9 @@ class CaptureSchema(Schema):
def generate_links(self, data, **kwargs):
data.links = {
"self": {
"href": url_for(CaptureResource.endpoint, id=data.id, _external=True),
"href": url_for(CaptureView.endpoint, id=data.id, _external=True),
"mimetype": "application/json",
**description_from_view(CaptureResource),
**description_from_view(CaptureView),
},
"tags": {
"href": url_for(CaptureTags.endpoint, id=data.id, _external=True),
@ -66,7 +66,7 @@ capture_list_schema = CaptureSchema(many=True)
@ThingProperty
@Tag("captures")
class CaptureList(Resource):
class CaptureList(View):
@marshal_with(CaptureSchema(many=True))
def get(self):
"""
@ -78,7 +78,7 @@ class CaptureList(Resource):
@Tag("captures")
class CaptureResource(Resource):
class CaptureView(View):
@marshal_with(CaptureSchema())
def get(self, id):
"""
@ -108,7 +108,7 @@ class CaptureResource(Resource):
@Tag("captures")
class CaptureDownload(Resource):
class CaptureDownload(View):
@doc_response(200, mimetype="image/jpeg")
def get(self, id, filename):
"""
@ -144,7 +144,7 @@ class CaptureDownload(Resource):
@Tag("captures")
class CaptureTags(Resource):
class CaptureTags(View):
def get(self, id):
"""
Get tags associated with a single image capture
@ -199,7 +199,7 @@ class CaptureTags(Resource):
@Tag("captures")
class CaptureMetadata(Resource):
class CaptureMetadata(View):
def get(self, id):
"""
Get metadata associated with a single image capture

View file

@ -7,7 +7,7 @@ from openflexure_microscope.common.labthings_core.utilities import (
)
from openflexure_microscope.common.flask_labthings.find import find_component
from openflexure_microscope.common.flask_labthings.resource import Resource
from openflexure_microscope.common.flask_labthings.view import View
from openflexure_microscope.common.flask_labthings.decorators import ThingProperty, Tag, doc_response
@ -16,7 +16,7 @@ import logging
@ThingProperty
class SettingsProperty(Resource):
class SettingsProperty(View):
def get(self):
"""
Current microscope settings, including camera and stage
@ -41,7 +41,7 @@ class SettingsProperty(Resource):
@Tag("properties")
class NestedSettingsProperty(Resource):
class NestedSettingsProperty(View):
@doc_response(404, description="Settings key cannot be found")
def get(self, route):
"""
@ -76,7 +76,7 @@ class NestedSettingsProperty(Resource):
@ThingProperty
class StatusProperty(Resource):
class StatusProperty(View):
def get(self):
"""
Show current read-only state of the microscope
@ -86,7 +86,7 @@ class StatusProperty(Resource):
@Tag("properties")
class NestedStatusProperty(Resource):
class NestedStatusProperty(View):
@doc_response(404, description="Status key cannot be found")
def get(self, route):
"""

View file

@ -7,14 +7,14 @@ from openflexure_microscope.common.labthings_core.utilities import (
)
from openflexure_microscope.common.flask_labthings.find import find_component
from openflexure_microscope.common.flask_labthings.resource import Resource
from openflexure_microscope.common.flask_labthings.view import View
from openflexure_microscope.common.flask_labthings.decorators import doc_response, ThingProperty
from flask import Response
@ThingProperty
class MjpegStream(Resource):
class MjpegStream(View):
"""
Real-time MJPEG stream from the microscope camera
"""
@ -34,7 +34,7 @@ class MjpegStream(Resource):
@ThingProperty
class SnapshotStream(Resource):
class SnapshotStream(View):
"""
Single JPEG snapshot from the camera stream
"""