add PATCH method

This commit is contained in:
Yaman Qalieh 2018-01-21 16:39:19 -05:00
parent 1661aee023
commit 2d27836e29

View File

@ -1,8 +1,8 @@
import pickle import pickle
from flask import Flask from flask import Flask
from flask import render_template, jsonify, request from flask import render_template, jsonify, request
import time import ulid
import random
app = Flask(__name__) app = Flask(__name__)
app.config.update( app.config.update(
DEBUG=True, DEBUG=True,
@ -12,11 +12,19 @@ app.config.update(
try: try:
with open("save.p", "rb") as f: with open("save.p", "rb") as f:
database = pickle.load(f) database = pickle.load(f)
# Can be commented out after non-id languages are all converted
for item in database['values']:
if not 'id' in item:
item['id'] = ulid.new().str
except (FileNotFoundError) as e: except (FileNotFoundError) as e:
database = {'languages': [], database = {'languages': [],
'phonemes': [], 'phonemes': [],
'values': []} 'values': []}
def saveDatabase():
# Save copy under separate name
with open("newestsave.p", "wb") as f:
pickle.dump(database, f)
# Render the client at the default URL # Render the client at the default URL
@app.route("/") @app.route("/")
@ -24,16 +32,17 @@ def initial():
return render_template('index.html') return render_template('index.html')
# Place for client to communicate with the server # Place for client to communicate with the server
@app.route("/server", methods=["GET", "POST"]) @app.route("/server", methods=["GET", "POST", "PATCH"])
# TODO add more methods
def backend(): def backend():
# Get method returns the latest database # GET method returns the latest database
if request.method == "GET": if request.method == "GET":
return jsonify(database) return jsonify(database)
# Post method currently appends to the languages # POST method currently appends to the languages
# TODO add more methods
elif request.method == "POST": elif request.method == "POST":
newlanguage = request.get_json() newlanguage = request.get_json()
newlanguage['id'] = ulid.new().str
database['values'].append(newlanguage) database['values'].append(newlanguage)
# Add new phonemes # Add new phonemes
@ -42,14 +51,18 @@ def backend():
database['phonemes'] = database['phonemes'] + uniquephonemes database['phonemes'] = database['phonemes'] + uniquephonemes
# Add new language # Add new language
newlang = {newlanguage['name']} newlangname = {newlanguage['name']}
uniquelanguages = list(newlang - set(database['languages'])) uniquelanguages = list(newlangname - set(database['languages']))
database['languages'] = database['languages'] + uniquelanguages database['languages'] = database['languages'] + uniquelanguages
# Save copy under separate name saveDatabase()
with open("newestsave.p", "wb") as f: return jsonify(database)
pickle.dump(database, f)
# PATCH method inputs edited language and returns updated database
elif request.method == "PATCH":
newlanguage = request.get_json()
database['values'] = [newlanguage if language['id'] == newlanguage['id'] else language for language in database['values']]
saveDatabase()
return jsonify(database) return jsonify(database)
else: else: