Merge pull request #101 from ThomasRubini/traits
This commit is contained in:
commit
a945eb9f6b
@ -159,7 +159,10 @@ class Trait(Base):
|
||||
self.DESC_LID = DESC_LID
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f"{self.TRAIT_ID} {self.NAME_LID}"
|
||||
return f"Trait(TRAIT_ID={self.TRAIT_ID}, NAME_LID={self.NAME_LID}, DESC_LID={self.DESC_LID})"
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return self.__str__()
|
||||
|
||||
|
||||
class Reaction(Base):
|
||||
|
@ -40,3 +40,9 @@ def places():
|
||||
places_objs = db.session.query(Place).all()
|
||||
places_dicts = [{"id": place_obj.PLACE_ID, "name": place_obj.LOCALE.TEXTS[0].TEXT} for place_obj in places_objs]
|
||||
return flask.render_template("admin/places.html", places=places_dicts)
|
||||
|
||||
@routes_admin.route("/traits")
|
||||
def traits():
|
||||
traits_objs = db.session.query(Trait).all()
|
||||
traits_dicts = [{"id": trait_obj.TRAIT_ID, "name": trait_obj.Name.TEXTS[0].TEXT, "desc": trait_obj.Desc.TEXTS[0].TEXT} for trait_obj in traits_objs]
|
||||
return flask.render_template("admin/traits.html", traits=traits_dicts)
|
||||
|
@ -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}
|
@ -2,7 +2,7 @@
|
||||
<br>
|
||||
<a href="/admin/places"> Places </a>
|
||||
<br>
|
||||
<a href="/admin/reactions"> Reactions </a>
|
||||
<a href="/admin/traits"> Traits </a>
|
||||
<section>
|
||||
<p> NPC list :</p>
|
||||
{%for npc in npcs%}
|
||||
|
@ -1 +0,0 @@
|
||||
<a href="/admin"> go Back </a> <br>
|
41
truthinquiry/templates/admin/traits.html
Normal file
41
truthinquiry/templates/admin/traits.html
Normal file
@ -0,0 +1,41 @@
|
||||
<a href="/admin"> go Back </a> <br>
|
||||
|
||||
<section id="traits">
|
||||
{%for trait in traits%}
|
||||
<section id="{{trait['id']}}">
|
||||
<p> Name: </p>
|
||||
<input class="name_input" value="{{trait['name']}}">
|
||||
<p> Description: </p>
|
||||
<input class="desc_input" value="{{trait['desc']}}">
|
||||
</section>
|
||||
{%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(){
|
||||
let newTrait = traits.lastElementChild.cloneNode(true);
|
||||
newTrait.id = "";
|
||||
newTrait.querySelector(".name_input").value = "";
|
||||
newTrait.querySelector(".desc_input").value = "";
|
||||
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>
|
Loading…
Reference in New Issue
Block a user