finish PATCH and add Updates with approute
This commit is contained in:
parent
fdefd2732d
commit
b6c87fa506
@ -1,8 +1,7 @@
|
|||||||
import pickle
|
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
from flask import render_template, jsonify, request
|
from flask import render_template, jsonify, request
|
||||||
from flask_sqlalchemy import SQLAlchemy
|
from flask_sqlalchemy import SQLAlchemy
|
||||||
import ulid
|
import time
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db'
|
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db'
|
||||||
@ -12,8 +11,6 @@ app.config.update(
|
|||||||
)
|
)
|
||||||
db = SQLAlchemy(app)
|
db = SQLAlchemy(app)
|
||||||
|
|
||||||
# TODO Updates table (add, edit, delete) (author, date, title, content)
|
|
||||||
# TODO convert pickle to db
|
|
||||||
|
|
||||||
class Frequency(db.Model):
|
class Frequency(db.Model):
|
||||||
language_id = db.Column(db.Integer, db.ForeignKey('language.id'), primary_key=True)
|
language_id = db.Column(db.Integer, db.ForeignKey('language.id'), primary_key=True)
|
||||||
@ -34,6 +31,15 @@ class Phoneme(db.Model):
|
|||||||
name = db.Column(db.String(5), nullable=False, unique=True)
|
name = db.Column(db.String(5), nullable=False, unique=True)
|
||||||
|
|
||||||
|
|
||||||
|
class Update(db.Model):
|
||||||
|
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
|
||||||
|
author = db.Column(db.String(30), nullable=False)
|
||||||
|
title = db.Column(db.String(100), nullable=False)
|
||||||
|
content = db.Column(db.Text, nullable=False)
|
||||||
|
date = db.Column(db.BigInteger, nullable=False,
|
||||||
|
default=int(time.time()*1000))
|
||||||
|
|
||||||
|
|
||||||
def database():
|
def database():
|
||||||
final = {'values': []}
|
final = {'values': []}
|
||||||
final['languages'] = [f.name for f in Language.query.all()]
|
final['languages'] = [f.name for f in Language.query.all()]
|
||||||
@ -48,13 +54,6 @@ def database():
|
|||||||
final['values'].append(languageobject)
|
final['values'].append(languageobject)
|
||||||
return final
|
return final
|
||||||
|
|
||||||
patch_functions = {
|
|
||||||
"phoneme_add": phoneme_add, # Add and edit value
|
|
||||||
"phoneme_remove": phoneme_remove, # Remove association and phoneme if necessary
|
|
||||||
# "language_name_edit": language_name_edit, # Change language name
|
|
||||||
# "language_source_add": language_source_add # Add/edit source
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def phoneme_add(info):
|
def phoneme_add(info):
|
||||||
"""Add or edit value associated with phoneme."""
|
"""Add or edit value associated with phoneme."""
|
||||||
@ -66,7 +65,9 @@ def phoneme_add(info):
|
|||||||
phoneme = Phoneme.query.filter_by(name=info['phoneme']).first()
|
phoneme = Phoneme.query.filter_by(name=info['phoneme']).first()
|
||||||
language = Language.query.filter_by(id=info['language_id']).first()
|
language = Language.query.filter_by(id=info['language_id']).first()
|
||||||
if phoneme:
|
if phoneme:
|
||||||
link = Frequency.query.filter_by(language_id=language.id, phoneme_id=phoneme.id).first()
|
link = Frequency.query.filter_by(
|
||||||
|
language_id=language.id,
|
||||||
|
phoneme_id=phoneme.id).first()
|
||||||
link.value = info['value']
|
link.value = info['value']
|
||||||
else:
|
else:
|
||||||
phoneme = Phoneme(name=info['phoneme'])
|
phoneme = Phoneme(name=info['phoneme'])
|
||||||
@ -82,9 +83,44 @@ def phoneme_remove(info):
|
|||||||
# language_id: language_id,
|
# language_id: language_id,
|
||||||
# phoneme_id: phoneme_id
|
# phoneme_id: phoneme_id
|
||||||
# }
|
# }
|
||||||
pass
|
phoneme = Phoneme.query.filter_by(id=info['phoneme_id']).first()
|
||||||
|
language = Language.query.filter_by(id=info['language_id']).first()
|
||||||
|
frequency = Frequency.query.filter_by(
|
||||||
|
phoneme_id=info['phoneme_id'], language_id=info['language_id']).first()
|
||||||
|
|
||||||
|
if Frequency.query.filter_by(phoneme_id=info['phoneme_id']).count() == 1:
|
||||||
|
# Delete phoneme
|
||||||
|
db.session.delete(phoneme)
|
||||||
|
|
||||||
|
language.phonemes = [frequency for frequency in language.phonemes
|
||||||
|
if frequency.phoneme_id != info['phoneme_id']]
|
||||||
|
db.session.delete(frequency)
|
||||||
|
|
||||||
|
|
||||||
|
def language_name_edit(info):
|
||||||
|
"""Edit the name of a Language."""
|
||||||
|
# info = {
|
||||||
|
# language_id: language_id,
|
||||||
|
# language_name: name
|
||||||
|
# }
|
||||||
|
Language.query.filter_by(id=info['language_id']).first().name = info['language_name']
|
||||||
|
|
||||||
|
|
||||||
|
def language_source_add(info):
|
||||||
|
"""Add or replace a source"""
|
||||||
|
# info = {
|
||||||
|
# language_id: language_id,
|
||||||
|
# language_source = source
|
||||||
|
# }
|
||||||
|
Language.query.filter_by(id=info['language_id']).first().source = info['language_source']
|
||||||
|
|
||||||
|
|
||||||
|
patch_functions = {
|
||||||
|
"phoneme_add": phoneme_add, # Add and edit value
|
||||||
|
"phoneme_remove": phoneme_remove, # Remove association and/or phoneme
|
||||||
|
"language_name_edit": language_name_edit, # Change language name
|
||||||
|
"language_source_add": language_source_add # Add/edit source
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# Render the client at the default URL
|
# Render the client at the default URL
|
||||||
@ -101,7 +137,6 @@ def file_return(lang_id):
|
|||||||
|
|
||||||
# Place for client to communicate with the server
|
# Place for client to communicate with the server
|
||||||
@app.route("/server", methods=["GET", "POST", "PATCH"])
|
@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":
|
||||||
@ -126,17 +161,36 @@ def backend():
|
|||||||
db.session.commit()
|
db.session.commit()
|
||||||
# return jsonify(database())
|
# return jsonify(database())
|
||||||
|
|
||||||
|
|
||||||
# PATCH method inputs edited language and returns updated database
|
# PATCH method inputs edited language and returns updated database
|
||||||
elif request.method == "PATCH":
|
elif request.method == "PATCH":
|
||||||
recieved = request.get_json()
|
recieved = request.get_json()
|
||||||
patch_functions[recieved['action']](recieved['data'])
|
patch_functions[recieved['action']](recieved['data'])
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
# database['values'] = [newlanguage if language['id'] == newlanguage['id'] else language for language in database['values']]
|
|
||||||
# saveDatabase()
|
|
||||||
|
|
||||||
return jsonify(database())
|
return jsonify(database())
|
||||||
|
|
||||||
|
|
||||||
|
# Manipulate Updates
|
||||||
|
@app.route("/updates", methods=["GET", "POST", "PATCH"])
|
||||||
|
def updates():
|
||||||
|
if request.method == "POST":
|
||||||
|
recieved = request.get_json()
|
||||||
|
update = Update(author=recieved['author'],
|
||||||
|
title=recieved['title'],
|
||||||
|
content=recieved['content'])
|
||||||
|
db.session.add(update)
|
||||||
|
elif request.method == "PATCH":
|
||||||
|
update = Update.query.filter_by(id=recieved['id']).first()
|
||||||
|
update.name = recieved['author']
|
||||||
|
update.title = recieved['title']
|
||||||
|
update.content = recieved['content']
|
||||||
|
db.session.commit()
|
||||||
|
return jsonify([{"author": update.name,
|
||||||
|
"id": update.id,
|
||||||
|
"title": update.title,
|
||||||
|
"content": update.content,
|
||||||
|
"date": update.date}
|
||||||
|
for update in Update.query.all()])
|
||||||
|
|
||||||
# if __name__ == "__main__":
|
# if __name__ == "__main__":
|
||||||
# app.run(host="0.0.0.0")
|
# app.run(host="0.0.0.0")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user