diff --git a/Pipfile b/Pipfile index 085702f..af32e1a 100644 --- a/Pipfile +++ b/Pipfile @@ -39,6 +39,7 @@ apscheduler = "*" pillow = "*" pydub = "*" simpleaudio = "*" +flask-restx = "*" [dev-packages] diff --git a/Pipfile.lock b/Pipfile.lock index 9c9b39d..f65be34 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "e84f3cf0b0e1452298555dc95f7493f8ec43bbff5471f088a1a9ebe64a9db44e" + "sha256": "381ef185977217922c32d4e8e182c1f885842e963576323cad0ffd6a59f1a5f8" }, "pipfile-spec": 6, "requires": { @@ -317,6 +317,14 @@ "index": "pypi", "version": "==0.1.10" }, + "flask-restx": { + "hashes": [ + "sha256:641759fe7cba1cb073d15b4258b1b15840af8cffe6edbd0da3e6b61eae0a67a6", + "sha256:fe0845112014201d618c1b0f3e41fa5f818a17c1d9e3fb6600d4e2c2bbc76a42" + ], + "index": "pypi", + "version": "==0.1.1" + }, "flask-script": { "hashes": [ "sha256:6425963d91054cfcc185807141c7314a9c5ad46325911bd24dcb489bd0161c65" @@ -733,10 +741,10 @@ }, "soupsieve": { "hashes": [ - "sha256:bdb0d917b03a1369ce964056fc195cfdff8819c40de04695a80bc813c3cfa1f5", - "sha256:e2c1c5dee4a1c36bcb790e0fabd5492d874b8ebd4617622c4f6a731701060dda" + "sha256:e914534802d7ffd233242b785229d5ba0766a7f487385e3f714446a07bf540ae", + "sha256:fcd71e08c0aee99aca1b73f45478549ee7e7fc006d51b37bec9e9def7dc22b69" ], - "version": "==1.9.5" + "version": "==2.0" }, "sqlalchemy": { "hashes": [ @@ -860,10 +868,10 @@ }, "werkzeug": { "hashes": [ - "sha256:169ba8a33788476292d04186ab33b01d6add475033dfc07215e6d219cc077096", - "sha256:6dc65cf9091cf750012f56f2cad759fa9e879f511b5ff8685e456b4e3bf90d16" + "sha256:1e0dedc2acb1f46827daa2e399c1485c8fa17c0d8e70b6b875b4e7f54bf408d2", + "sha256:b353856d37dec59d6511359f97f6a4b2468442e454bd1c98298ddce53cac1f04" ], - "version": "==1.0.0" + "version": "==0.16.1" } }, "develop": {} diff --git a/backend/__init__.py b/backend/__init__.py index 055fdcb..d386b95 100644 --- a/backend/__init__.py +++ b/backend/__init__.py @@ -11,11 +11,10 @@ from typing import Union import coloredlogs as coloredlogs import jwt import requests -from flask import Flask, jsonify +from flask import Flask, jsonify, abort from flask_httpauth import HTTPTokenAuth, HTTPBasicAuth, MultiAuth from flask_jwt_extended import JWTManager, decode_token from flask_login import LoginManager -from flask_restplus import abort from flask_sqlalchemy import SQLAlchemy from flask_cors import CORS from backend.config import Config @@ -179,5 +178,5 @@ app.register_blueprint(fe_bp) CORS(app) CORS(api_bp) -# Fix flask-restplus by duck typing error handlers +# Fix jwt_extended by duck typing error handlers jwt_extended._set_error_handler_callbacks(api_v1) diff --git a/backend/api/__init__.py b/backend/api/__init__.py index fe4a2d1..3487203 100644 --- a/backend/api/__init__.py +++ b/backend/api/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from flask import Blueprint, abort -from flask_restplus import Api, Namespace +from flask_restx import Api, Namespace api_authorizations = { 'apikey': { diff --git a/backend/api/auth_api.py b/backend/api/auth_api.py index 990e468..2645de7 100644 --- a/backend/api/auth_api.py +++ b/backend/api/auth_api.py @@ -21,7 +21,7 @@ from random import randint from flask_login import logout_user, login_user from typing import Iterable -from flask_restplus import Resource, fields +from flask_restx import Resource, fields from werkzeug.routing import BuildError from backend import db, app, jwt_extended diff --git a/backend/api/control_api.py b/backend/api/control_api.py index 47ddd89..980f5bb 100644 --- a/backend/api/control_api.py +++ b/backend/api/control_api.py @@ -9,7 +9,7 @@ import json from datetime import datetime from flask_jwt_extended import jwt_required, get_current_user, get_jwt_claims -from flask_restplus import fields, Resource +from flask_restx import fields, Resource from backend import db from backend.api import api_control, get_jwt_identity, Recorder, RecorderCommand, pprint diff --git a/backend/api/example_api.py b/backend/api/example_api.py index 17c0192..f95814d 100644 --- a/backend/api/example_api.py +++ b/backend/api/example_api.py @@ -5,7 +5,7 @@ import json import logging from random import * from flask import jsonify, Blueprint, request -from flask_restplus import Resource, reqparse +from flask_restx import Resource, reqparse from backend import basic_auth, multi_auth, db, jwt_auth from backend.api import api_v1, api_bp diff --git a/backend/api/group_api.py b/backend/api/group_api.py index 2eae68f..ac20c9c 100644 --- a/backend/api/group_api.py +++ b/backend/api/group_api.py @@ -6,7 +6,7 @@ For example: listing of available auth providers or registration of users. Login through API does not start a new session, but instead returns JWT. """ from flask_jwt_extended import jwt_required -from flask_restplus import fields, Resource +from flask_restx import fields, Resource from backend import db from backend.api import api_group diff --git a/backend/api/models.py b/backend/api/models.py index 0c9fb97..c7bc8e3 100644 --- a/backend/api/models.py +++ b/backend/api/models.py @@ -1,4 +1,4 @@ -from flask_restplus import fields +from flask_restx import fields from backend.api import api_user, api_recorder, api_v1 generic_id_parser = api_v1.parser() diff --git a/backend/api/permission_api.py b/backend/api/permission_api.py index 941a399..1db755e 100644 --- a/backend/api/permission_api.py +++ b/backend/api/permission_api.py @@ -6,7 +6,7 @@ For example: listing of available auth providers or registration of users. Login through API does not start a new session, but instead returns JWT. """ from flask_jwt_extended import jwt_required -from flask_restplus import fields, Resource +from flask_restx import fields, Resource from backend import db from backend.api import api_permissions diff --git a/backend/api/recorder_api.py b/backend/api/recorder_api.py index 0457094..986eee5 100644 --- a/backend/api/recorder_api.py +++ b/backend/api/recorder_api.py @@ -9,7 +9,7 @@ from datetime import datetime from pprint import pprint from flask_jwt_extended import jwt_required -from flask_restplus import fields, Resource, inputs +from flask_restx import fields, Resource, inputs from backend import db, app from backend.api import api_recorder diff --git a/backend/api/room_api.py b/backend/api/room_api.py index ad93a45..8b6a40f 100644 --- a/backend/api/room_api.py +++ b/backend/api/room_api.py @@ -6,7 +6,7 @@ For example: listing of available auth providers or registration of users. Login through API does not start a new session, but instead returns JWT. """ from flask_jwt_extended import jwt_required -from flask_restplus import fields, Resource +from flask_restx import fields, Resource from sqlalchemy import exc from backend import db, app diff --git a/backend/api/user_api.py b/backend/api/user_api.py index ec2a868..dbd70ca 100644 --- a/backend/api/user_api.py +++ b/backend/api/user_api.py @@ -9,7 +9,7 @@ from datetime import datetime from pprint import pprint from flask_jwt_extended import get_jwt_identity, jwt_required, current_user -from flask_restplus import Resource, fields, inputs, abort +from flask_restx import Resource, fields, inputs, abort from backend import db, app, jwt_auth from backend.api import api_user diff --git a/backend/api/virtual_command_api.py b/backend/api/virtual_command_api.py index f7100aa..3aec647 100644 --- a/backend/api/virtual_command_api.py +++ b/backend/api/virtual_command_api.py @@ -10,7 +10,7 @@ import pkgutil from pprint import pprint from flask_jwt_extended import jwt_required -from flask_restplus import fields, Resource +from flask_restx import fields, Resource from backend import db, app from backend.api import api_virtual_command