moved some models added cron and websocket base class

This commit is contained in:
2019-10-31 16:13:02 +01:00
parent 36c889956f
commit 5d731c9fba
10 changed files with 224 additions and 88 deletions

View File

@@ -8,28 +8,15 @@ Login through API does not start a new session, but instead returns JWT.
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
from flask_restplus import Resource, fields, inputs, abort
from backend import db, app, jwt_auth
from backend.api import api_user
from backend.api.models import user_model, recorder_model, generic_id_parser
from backend.models import Recorder
from backend.models.user_model import User, Group
user_model = api_user.model('User', {
'id': fields.String(required=True, description='The user\'s identifier'),
'first_name': fields.String(required=True, description='The user\'s first name'),
'last_name': fields.String(required=True, description='The user\'s last name'),
'email': fields.String(required=True, description='The user\'s email address'),
'nickname': fields.String(required=False, description='The user\'s nick name'),
'role': fields.String(required=False, description='Role a user might have (in addition to group memberships)'),
'effective_permissions': fields.List(
fields.String(required=True), required=False, description="List of permissions (groups + (optional) role)."
),
'groups': fields.List(
fields.Nested(api_user.model('user_group', {'id': fields.Integer(), 'name': fields.String()})),
required=False, description='Group memberships.'),
})
user_update_parser = api_user.parser()
user_update_parser.add_argument('email', type=inputs.email(), required=False, nullable=False, store_missing=False)
@@ -64,6 +51,37 @@ class Profile(Resource):
return "ok"
@api_user.route('/profile/favorite_recorders')
class UserFavoriteRecorders(Resource):
@jwt_required
@api_user.marshal_list_with(recorder_model)
def get(self):
try:
current_user_id = get_jwt_identity()
return User.get_by_identifier(current_user_id).favorite_recorders
except AttributeError:
abort(404, "User not found!")
@jwt_required
@api_user.expect(generic_id_parser)
@api_user.marshal_list_with(recorder_model)
def put(self):
try:
args = generic_id_parser.parse_args()
current_user_id = get_jwt_identity()
user = User.get_by_identifier(current_user_id)
print(user)
recorder = Recorder.get_by_identifier(args["id"])
print(recorder)
if recorder is None:
abort(404, "(Specified [id: {}]) recorder not found!".format(args["id"]))
user.favorite_recorders.append(recorder)
db.session.commit()
return user.favorite_recorders
except AttributeError:
abort(404, "User not found!")
@api_user.route('')
class UserList(Resource):
"""