diff --git a/truthinquiry/ext/database/models.py b/truthinquiry/ext/database/models.py index 5c16f5d..11e4610 100644 --- a/truthinquiry/ext/database/models.py +++ b/truthinquiry/ext/database/models.py @@ -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): diff --git a/truthinquiry/routes/routes_admin.py b/truthinquiry/routes/routes_admin.py index 5a43e1f..2129968 100644 --- a/truthinquiry/routes/routes_admin.py +++ b/truthinquiry/routes/routes_admin.py @@ -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) diff --git a/truthinquiry/routes/routes_api_admin.py b/truthinquiry/routes/routes_api_admin.py index ea0fdad..5d17812 100644 --- a/truthinquiry/routes/routes_api_admin.py +++ b/truthinquiry/routes/routes_api_admin.py @@ -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} \ No newline at end of file diff --git a/truthinquiry/templates/admin/index.html b/truthinquiry/templates/admin/index.html index a0af4a7..6d9d545 100644 --- a/truthinquiry/templates/admin/index.html +++ b/truthinquiry/templates/admin/index.html @@ -2,7 +2,7 @@
Places
- Reactions + Traits

NPC list :

{%for npc in npcs%} diff --git a/truthinquiry/templates/admin/reactions.html b/truthinquiry/templates/admin/reactions.html deleted file mode 100644 index 1583b05..0000000 --- a/truthinquiry/templates/admin/reactions.html +++ /dev/null @@ -1 +0,0 @@ - go Back
diff --git a/truthinquiry/templates/admin/traits.html b/truthinquiry/templates/admin/traits.html new file mode 100644 index 0000000..b6b380e --- /dev/null +++ b/truthinquiry/templates/admin/traits.html @@ -0,0 +1,41 @@ + go Back
+ +
+ {%for trait in traits%} +
+

Name:

+ +

Description:

+ +
+ {%endfor%} +
+ + + +

Images are viewable in the npc views

+ + + \ No newline at end of file