Switched to ActionView and PropertyView from decorators

This commit is contained in:
Joel Collins 2020-05-26 10:54:21 +01:00
parent 677b08d509
commit 1819ca6a9c
18 changed files with 57 additions and 98 deletions

View file

@ -1,6 +1,6 @@
from labthings.server.find import find_component
from labthings.server.extensions import BaseExtension
from labthings.server.view import View
from labthings.server.view import View, ActionView, PropertyView
from labthings.server.decorators import ThingAction, ThingProperty
from openflexure_microscope.devel import JsonResponse, request, abort
@ -332,8 +332,7 @@ class MeasureSharpnessAPI(View):
return {"sharpness": measure_sharpness(microscope)}
@ThingAction
class AutofocusAPI(View):
class AutofocusAPI(ActionView):
"""
Run a standard autofocus
"""
@ -357,8 +356,7 @@ class AutofocusAPI(View):
abort(503, "No stage connected. Unable to autofocus.")
@ThingAction
class FastAutofocusAPI(View):
class FastAutofocusAPI(ActionView):
"""
Run a fast autofocus
"""

View file

@ -1,5 +1,5 @@
from labthings.server.extensions import BaseExtension
from labthings.server.view import View
from labthings.server.view import View, PropertyView
from labthings.server.decorators import ThingProperty, PropertySchema, use_args
from labthings.server import fields
from labthings.server.find import find_component
@ -190,8 +190,7 @@ class AutostorageExtension(BaseExtension):
autostorage_extension_v2 = AutostorageExtension()
@ThingProperty
class GetLocationsView(View):
class GetLocationsView(PropertyView):
def get(self):
global autostorage_extension_v2
@ -199,9 +198,8 @@ class GetLocationsView(View):
return autostorage_extension_v2.get_locations()
@ThingProperty
@PropertySchema(fields.String(required=True, example="Default"))
class PreferredLocationView(View):
class PreferredLocationView(PropertyView):
def get(self):
global autostorage_extension_v2

View file

@ -3,7 +3,7 @@ API extension for stage calibration
This file contains the HTTP API for camera/stage calibration.
"""
from labthings.server.view import View
from labthings.server.view import View, ActionView, PropertyView
from labthings.server.find import find_component
from labthings.server.extensions import BaseExtension
from labthings.server.decorators import (
@ -139,8 +139,7 @@ class CSMExtension(BaseExtension):
csm_extension = CSMExtension()
@ThingAction
class Calibrate1DView(View):
class Calibrate1DView(ActionView):
@use_args(
{"direction": fields.List(fields.Float(), required=True, example=[1, 0, 0])}
)
@ -155,8 +154,7 @@ class Calibrate1DView(View):
csm_extension.add_view(Calibrate1DView, "/calibrate_1d", endpoint="calibrate_1d")
@ThingAction
class CalibrateXYView(View):
class CalibrateXYView(ActionView):
def post(self):
"""Calibrate both axes of the microscope stage against the camera."""
return csm_extension.calibrate_xy()
@ -165,8 +163,7 @@ class CalibrateXYView(View):
csm_extension.add_view(CalibrateXYView, "/calibrate_xy", endpoint="calibrate_xy")
@ThingAction
class MoveInImageCoordinatesView(View):
class MoveInImageCoordinatesView(ActionView):
@use_args(
{
"x": fields.Float(
@ -194,8 +191,7 @@ class MoveInImageCoordinatesView(View):
csm_extension.add_view(MoveInImageCoordinatesView, "/move_in_image_coordinates", endpoint="move_in_image_coordinates")
@ThingProperty
class GetCalibrationFile(View):
class GetCalibrationFile(PropertyView):
def get(self):
"""Get the calibration data in JSON format."""
datafile_name = CSM_DATAFILE_NAME

View file

@ -1,4 +1,4 @@
from labthings.server.view import View
from labthings.server.view import View, ActionView
from labthings.server.find import find_component
from labthings.server.extensions import BaseExtension
from labthings.server.decorators import ThingAction
@ -58,8 +58,7 @@ def recalibrate(microscope):
microscope.save_settings()
@ThingAction
class RecalibrateView(View):
class RecalibrateView(ActionView):
def post(self):
microscope = find_component("org.openflexure.microscope")
@ -71,8 +70,7 @@ class RecalibrateView(View):
return recalibrate(microscope)
@ThingAction
class FlattenLSTView(View):
class FlattenLSTView(ActionView):
def post(self):
microscope = find_component("org.openflexure.microscope")
@ -95,8 +93,7 @@ class FlattenLSTView(View):
)
@ThingAction
class DeleteLSTView(View):
class DeleteLSTView(ActionView):
def post(self):
microscope = find_component("org.openflexure.microscope")

View file

@ -13,7 +13,7 @@ import tempfile
import logging
from labthings.server.find import find_component
from labthings.server.view import View
from labthings.server.view import View, ActionView, PropertyView
from labthings.server.schema import Schema
from labthings.server import fields
from labthings.server.extensions import BaseExtension
@ -138,8 +138,7 @@ class ZipManager:
default_zip_manager = ZipManager()
@ThingAction
class ZipBuilderAPIView(View):
class ZipBuilderAPIView(ActionView):
def post(self):
ids = list(JsonResponse(request).json)
@ -151,8 +150,7 @@ class ZipBuilderAPIView(View):
)
@ThingProperty
class ZipListAPIView(View):
class ZipListAPIView(PropertyView):
@marshal_with(ZipObjectSchema(many=True))
def get(self):
return default_zip_manager.session_zips.values()