У меня есть API, созданный в фляге, который получает какой-то файл в формате base64. Используя couchdb, я отслеживаю, совпадает ли версия на стороне сервера с текущей версией документа. Вот что я мог бы написать:
@app.route('/dbupload', methods=['POST'])
def approved():
if request.method == "POST":
if request.json:
if 'data' in request.json:
if request.files.get("file"):
data = request.json['data']
username = "username"
pwd = "password"
file_obj = request.files["file"]
file_name = file_obj.filename
if file_name.lower().endswith('.csv'):
doc_id = data["_id"]
doc_rev = data["_rev"]
try:
with couchdb(username, pwd, url=os.genenv("COUCHDB_HOST"), connect=True, auto_renew=True, timeout=120, adapter=HTTPAdapter(pool_connections=15, pool_maxsize=100)) as client:
try:
filedata = file_obj.read()
session = client.session()
except Exception as e:
return abort(500)
try:
this_db = client['calhoun']
except Exception as e:
return jsonify({"status": False})
try:
server_doc = this_db[doc_id]
if server_doc["_rev"] == doc_rev:
server_doc["data"] = data["data"]
else:
# How to update data
return abort(500)
except KeyError:
logger.error("No such document")
except Exception as e:
return abort(500)
return jsonify({"status": True})
except Exception as e:
return abort(401)
else:
return abort(400)
else:
return abort(400)
else:
return abort(400)
else:
return abort(501)
Теперь мне нужно добавить внутрь else
деталь, если мне нужно обновить сервер, если есть несоответствие ревизии. Как это сделать?