def detail(api, item_id):
     if request.method == 'PUT':
         return json_response(api.put(item_id, request.get_json()))
     elif request.method == 'DELETE':
         return json_response(api.delete(item_id))
     elif request.method == 'GET':
         return json_response(api.get_by_id(item_id))
    def wrapped_view(**kwargs):
        if g.user is None:
            return json_response({'error': 'Not logged in'}, 401)
        if 'admin' not in g.roles:
            return json_response({'error': 'Not authorized'}, 403)

        return view(**kwargs)
def login():
    if request.method == 'POST':
        data = request.get_json()
        user = Authentication.login(data['username'], data['password'])
        if user:
            session['user_id'] = user['id']
            return json_response({
                'user': {
                    'id': '%d' % user['id'],
                    'username': '******' % user['username'],
                    'created_at': '%s' % user['created_at']
                }
            })
        else:
            return json_response({'error': 'Invalid credentials'}, 401)
 def get(api):
     return json_response(api.get())
 def list(api):
     if request.method == 'POST':
         return json_response(api.post(request.get_json()))
     elif request.method == 'GET':
         return json_response(api.get())
 def delete(api, item_id):
     return json_response(api.delete(item_id))
 def put(api, item_id):
     return json_response(api.put(item_id, request.get_json()))
 def post(api):
     return json_response(api.post(request.get_json()))
def logout():
    session.pop('user_id', None)
    g.user = None
    return json_response({'data': 'Logged out'})
def register():
    if request.method == 'POST':
        data = UserApi().post(request.get_json())
        session['user_id'] = data['id']

        return json_response(data)
def index():
    return json_response(
        {'data': '%s is logged in' % escape(g.user['username'])})
    def wrapped_view(**kwargs):
        if g.user is None:
            return json_response({'error': 'Not logged in'}, 401)

        return view(**kwargs)
def squadron_drone_list(squadron_id):
    return json_response(DroneApi().get_by_squadron_id(squadron_id))