Only allow DELETE or PATCH operations if "readonly" is set to true.

Note: default is false which is a **NOT BACKWARDS COMPATIBLE** change.

Signed-off-by: Graham R. Cobb <g+beets@cobb.uk.net>
This commit is contained in:
Graham R. Cobb 2021-03-10 18:56:30 +00:00
parent a74cc4b269
commit 4a9652a9e4

View file

@ -116,12 +116,18 @@ def resource(name, patchable=False):
entities = [entity for entity in entities if entity] entities = [entity for entity in entities if entity]
if get_method() == "DELETE": if get_method() == "DELETE":
if app.config.get('READONLY', True):
return flask.abort(405)
for entity in entities: for entity in entities:
entity.remove(delete=is_delete()) entity.remove(delete=is_delete())
return flask.make_response(jsonify({'deleted': True}), 200) return flask.make_response(jsonify({'deleted': True}), 200)
elif get_method() == "PATCH" and patchable: elif get_method() == "PATCH" and patchable:
if app.config.get('READONLY', True):
return flask.abort(405)
for entity in entities: for entity in entities:
entity.update(flask.request.get_json()) entity.update(flask.request.get_json())
entity.try_sync(True, False) # write, don't move entity.try_sync(True, False) # write, don't move
@ -162,12 +168,18 @@ def resource_query(name, patchable=False):
entities = query_func(queries) entities = query_func(queries)
if get_method() == "DELETE": if get_method() == "DELETE":
if app.config.get('READONLY', True):
return flask.abort(405)
for entity in entities: for entity in entities:
entity.remove(delete=is_delete()) entity.remove(delete=is_delete())
return flask.make_response(jsonify({'deleted': True}), 200) return flask.make_response(jsonify({'deleted': True}), 200)
elif get_method() == "PATCH" and patchable: elif get_method() == "PATCH" and patchable:
if app.config.get('READONLY', True):
return flask.abort(405)
for entity in entities: for entity in entities:
entity.update(flask.request.get_json()) entity.update(flask.request.get_json())
entity.try_sync(True, False) # write, don't move entity.try_sync(True, False) # write, don't move