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