Merge pull request #104 from ThomasRubini/places
This commit is contained in:
commit
2d0c797b84
@ -112,4 +112,42 @@ def set_traits():
|
||||
|
||||
db.session.commit()
|
||||
|
||||
return {"error": 0}
|
||||
|
||||
@routes_api_admin.route("/setPlaces", methods=["GET", "POST"])
|
||||
def set_places():
|
||||
input_lang = flask.request.json["lang"]
|
||||
input_places = flask.request.json["places"]
|
||||
|
||||
|
||||
db_places = db.session.query(Place).all()
|
||||
|
||||
modified_db_places = []
|
||||
for input_place in input_places:
|
||||
if input_place["id"]:
|
||||
# modify
|
||||
db_place = list(filter(lambda db_place: db_place.PLACE_ID == int(input_place["id"]), db_places))[0]
|
||||
|
||||
db.session.delete(db_place.LOCALE.TEXTS[0])
|
||||
|
||||
db_place.LOCALE.TEXTS = [Text(None, None, input_lang, input_place["name"])]
|
||||
|
||||
db.session.add(db_place)
|
||||
modified_db_places.append(db_place)
|
||||
else:
|
||||
# add
|
||||
new_place = Place(None, None)
|
||||
|
||||
new_place.LOCALE = Locale(None)
|
||||
new_place.LOCALE.TEXTS = [Text(None, None, input_lang, input_place["name"])]
|
||||
|
||||
db.session.add(new_place)
|
||||
|
||||
# delete
|
||||
for db_place in db_places:
|
||||
if db_place not in modified_db_places:
|
||||
db.session.delete(db_place)
|
||||
|
||||
db.session.commit()
|
||||
|
||||
return {"error": 0}
|
@ -1,8 +1,53 @@
|
||||
<a href="/admin"> go Back </a> <br>
|
||||
|
||||
|
||||
<section>
|
||||
{%for place in places%}
|
||||
<input name="{{place['id']}}" value="{{place['name']}}">
|
||||
<style>
|
||||
section section{
|
||||
border: thin solid red;
|
||||
padding: 5px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
section section input{
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<section id="places">
|
||||
{%for place in places%}
|
||||
<section id="{{place['id']}}">
|
||||
<input value="{{place['name']}}">
|
||||
<button onclick="deletePlace(this)">Delete place</button>
|
||||
</section>
|
||||
{%endfor%}
|
||||
</section>
|
||||
</section>
|
||||
<button onclick="addNewInput()">Add new</button>
|
||||
<button onclick="saveForm()">Save changes</button>
|
||||
|
||||
<script src="/static/js/api.js"></script>
|
||||
<script>
|
||||
|
||||
function addNewInput(){
|
||||
let newPlace = places.lastElementChild.cloneNode(true);
|
||||
newPlace.id = "";
|
||||
newPlace.querySelector("input").value = "";
|
||||
places.appendChild(newPlace);
|
||||
}
|
||||
|
||||
function deletePlace(buttonNode){
|
||||
let placeNode = buttonNode.parentNode;
|
||||
placeNode.parentNode.removeChild(placeNode);
|
||||
}
|
||||
|
||||
function saveForm(){
|
||||
let data = [];
|
||||
for(let section of places.querySelectorAll("section")){
|
||||
let place = {};
|
||||
place["id"] = section.id
|
||||
place["name"] = section.querySelector("input").value
|
||||
data.push(place);
|
||||
}
|
||||
makeAPIRequest("admin/setPlaces", {"places": data, "lang": "FR"}, {"content": "json"})
|
||||
}
|
||||
|
||||
</script>
|
Loading…
Reference in New Issue
Block a user