connect traits view with backend

This commit is contained in:
Thomas Rubini 2023-03-18 18:34:57 +01:00
parent ab0b6efccc
commit 0a130fe955
No known key found for this signature in database
GPG Key ID: C7D287C8C1CAC373
2 changed files with 57 additions and 1 deletions

View File

@ -71,3 +71,45 @@ def set_questions():
db.session.commit()
return {"error": 0}
@routes_api_admin.route("/setTraits", methods=["GET", "POST"])
def set_traits():
input_lang = flask.request.json["lang"]
input_traits = flask.request.json["traits"]
db_traits = db.session.query(Trait).all()
modified_db_traits = []
for input_trait in input_traits:
if input_trait["id"]:
# modify
db_trait = list(filter(lambda db_trait: db_trait.TRAIT_ID == int(input_trait["id"]), db_traits))[0]
db.session.delete(db_trait.Name.TEXTS[0])
db.session.delete(db_trait.Desc.TEXTS[0])
db_trait.Name.TEXTS = [Text(None, None, input_lang, input_trait["name"])]
db_trait.Desc.TEXTS = [Text(None, None, input_lang, input_trait["desc"])]
db.session.add(db_trait)
modified_db_traits.append(db_trait)
else:
# add
new_trait = Trait(None, None, None)
new_trait.Name = Locale(None)
new_trait.Desc = Locale(None)
new_trait.Name.TEXTS.append(Text(None, None, input_lang, input_trait["name"]))
new_trait.Desc.TEXTS.append(Text(None, None, input_lang, input_trait["desc"]))
db.session.add(new_trait)
# delete
for db_trait in db_traits:
if db_trait not in modified_db_traits:
db.session.remove()
db.session.commit()
return {"error": 0}

View File

@ -11,9 +11,11 @@
{%endfor%}
</section>
<button onclick="addNewInput()">Add new</button>
<button onclick="saveForm()">Save changes</button>
<p>Images are viewable in the npc views</p>
<script src="/static/js/api.js"></script>
<script>
function addNewInput(){
@ -24,4 +26,16 @@ function addNewInput(){
traits.appendChild(newTrait);
}
function saveForm(){
let data = [];
for(let section of traits.querySelectorAll("section")){
let trait = {};
trait["id"] = section.id
trait["name"] = section.querySelector(".name_input").value
trait["desc"] = section.querySelector(".desc_input").value
data.push(trait);
}
makeAPIRequest("admin/setTraits", {"traits": data, "lang": "FR"}, {"content": "json"})
}
</script>