from flask import request from flask_accepts import accepts, responds from flask_restplus import Namespace, Resource from flask.wrappers import Response from typing import List from .schema import WidgetSchema from .service import WidgetService from .model import Widget from .interface import WidgetInterface api = Namespace('Widget', description='Single namespace, single entity') # noqa @api.route('/') class WidgetResource(Resource): '''Widgets''' @responds(schema=WidgetSchema, many=True) def get(self) -> List[Widget]: '''Get all Widgets''' return WidgetService.get_all() @accepts(schema=WidgetSchema, api=api) @responds(schema=WidgetSchema) def post(self) -> Widget: '''Create a Single Widget''' return WidgetService.create(request.parsed_obj) @api.route('/') @api.param('widgetId', 'Widget database ID') class WidgetIdResource(Resource): @responds(schema=WidgetSchema) def get(self, widgetId: int) -> Widget: '''Get Single Widget''' return WidgetService.get_by_id(widgetId) def delete(self, widgetId: int) -> Response: '''Delete Single Widget''' from flask import jsonify id = WidgetService.delete_by_id(widgetId) return jsonify(dict(status='Success', id=id)) @accepts(schema=WidgetSchema, api=api) @responds(schema=WidgetSchema) def put(self, widgetId: int) -> Widget: '''Update Single Widget''' changes: WidgetInterface = request.parsed_obj Widget = WidgetService.get_by_id(widgetId) return WidgetService.update(Widget, changes)