using reflection to get models

This commit is contained in:
Tobias Kurze
2019-08-02 16:09:39 +02:00
parent 3c6b6ba099
commit 51536766bf
7 changed files with 200 additions and 36 deletions

View File

@@ -5,6 +5,8 @@ For example: listing of available auth providers or registration of users.
Login through API does not start a new session, but instead returns JWT.
"""
import pkgutil
from flask_jwt_extended import jwt_required
from flask_restplus import fields, Resource
@@ -12,6 +14,7 @@ from backend import db, app
from backend.api import api_recorder
from backend.models.recorder_model import Recorder, RecorderModel, RecorderCommand
from backend.models.room_model import Room
import backend.recorder_adapters as r_a
recorder_model = api_recorder.model('Recorder', {
'id': fields.String(required=False, description='The recorder\'s identifier'),
@@ -187,6 +190,18 @@ class RecorderModelList(Resource):
@api_recorder.doc('recorders')
@api_recorder.marshal_list_with(recorder_model_model)
def get(self):
models = []
found_packages = list(pkgutil.iter_modules(r_a.__path__))
importer = found_packages[0][0]
for f_p in found_packages:
importer = f_p[0]
rec_model_module = importer.find_module(f_p[1]).load_module(f_p[1])
rec_model = {'id': f_p[1], 'name': f_p[1]}
if 'RECORDER_MODEL_NAME' in rec_model_module:
rec_model['name'] = rec_model_module.RECORDER_MODEL_NAME
models.append(rec_model)
print(models)
return models
"""
List all recorder models
:return: recorder models