forked from ScoDoc/ScoDoc
APIDoc utilisation template jinja + lien samples
This commit is contained in:
parent
71639606fa
commit
17233fb8c1
31
app/templates/apidoc.j2
Normal file
31
app/templates/apidoc.j2
Normal file
@ -0,0 +1,31 @@
|
||||
#### **`{{doc.nom}}`**
|
||||
|
||||
{% if doc.routes %}
|
||||
{% if doc.routes|length == 1 %}
|
||||
* **Route:** `{{doc.routes[0]|safe}}`
|
||||
{% else %}
|
||||
* **Routes:**
|
||||
{% for route in doc.routes %}
|
||||
* `{{route|safe}}`
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
* **Méthode:** `{{doc.method}}`
|
||||
* **Permission:** `{{doc.permission}}`
|
||||
{% if doc.params %}
|
||||
* **Paramètres:**
|
||||
{% for param in doc.params %}
|
||||
* `{{param.nom|safe}}` : {{param.description|safe}}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if doc.description %}
|
||||
* **Description:** {{doc.description|safe}}
|
||||
{% endif %}
|
||||
{% if doc.data %}
|
||||
* **Data:** {{doc.data|safe}}
|
||||
{% endif %}
|
||||
|
||||
{% if doc.sample %}
|
||||
* **Exemple de résultat:** [{{doc.sample.nom}}](./samples/sample_{{doc.sample.href}})
|
||||
{% else %}
|
||||
{% endif %}
|
@ -8,6 +8,7 @@ import xml.etree.ElementTree as ET
|
||||
import re
|
||||
|
||||
from app.auth.models import Permission
|
||||
from flask import render_template
|
||||
|
||||
|
||||
class COLORS:
|
||||
@ -870,79 +871,33 @@ def _write_gen_table(table: str, filename: str = "/tmp/api_table.md"):
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Exemple d'utilisation de la classe Token
|
||||
# Exemple simple de création d'un arbre de Token
|
||||
|
||||
# root = Token("api")
|
||||
# child1 = Token("assiduites", leaf=True)
|
||||
# child1.func_name = "assiduites_get"
|
||||
# child2 = Token("count")
|
||||
# child22 = Token("all")
|
||||
# child23 = Token(
|
||||
# "query",
|
||||
# query={
|
||||
# "etat": "<string:etat>",
|
||||
# "moduleimpl_id": "<int:moduleimpl_id>",
|
||||
# "count": "<int:count>",
|
||||
# "formsemestre_id": "<int:formsemestre_id>",
|
||||
# },
|
||||
# )
|
||||
# child3 = Token("justificatifs", "POST")
|
||||
# child3.func_name = "justificatifs_post"
|
||||
|
||||
# root.add_child(child1)
|
||||
# child1.add_child(child2)
|
||||
# child2.add_child(child22)
|
||||
# child2.add_child(child23)
|
||||
# root.add_child(child3)
|
||||
|
||||
# group_element = root.to_svg_group()
|
||||
|
||||
# generate_svg(group_element, "/tmp/api_map.svg")
|
||||
dt: dict = parse_doctable_doc(parse_doctable_doc.__doc__)
|
||||
md: str = "POST"
|
||||
hf: str = "assiduites-query"
|
||||
|
||||
doc: dict = {
|
||||
"doctable": dt,
|
||||
"method": md,
|
||||
"href": hf,
|
||||
}
|
||||
print(_gen_table([doc]))
|
||||
|
||||
|
||||
def doc_route(doctable: dict) -> str:
|
||||
"""Generate markdown doc for a route"""
|
||||
doc = f"""
|
||||
#### **`{doctable['nom']}`**
|
||||
jinja_obj: dict = {}
|
||||
jinja_obj.update(doctable)
|
||||
jinja_obj["nom"] = doctable["nom"].strip() # on retire les caractères blancs
|
||||
|
||||
"""
|
||||
if doctable.get("routes"):
|
||||
if len(doctable["routes"]) == 1:
|
||||
doc += f"""* ** Route :** `{doctable["routes"][0]}`\n"""
|
||||
else:
|
||||
doc += "* ** Routes :**\n"
|
||||
for route in doctable["routes"]:
|
||||
doc += f""" * `{route}`\n"""
|
||||
doc += f"""* **Méthode: {doctable['method']}**
|
||||
* **Permission: `{doctable.get('permission', '')}`**
|
||||
"""
|
||||
if doctable.get("params"):
|
||||
jinja_obj["params"] = []
|
||||
for param in doctable["params"]:
|
||||
frags = param.split(":", maxsplit=1)
|
||||
if len(frags) == 2:
|
||||
name, descr = frags
|
||||
jinja_obj["params"].append(
|
||||
{"nom": name.strip(), "description": descr.strip()}
|
||||
)
|
||||
else:
|
||||
print(f"Warning: {doctable['nom']} : invalid PARAMS {param}")
|
||||
name, descr = param, ""
|
||||
doc += f""" * `{name}`: {descr}\n"""
|
||||
if doctable.get("data"):
|
||||
doc += f"""* **Data:** {doctable['data']}\n"""
|
||||
if doctable.get("description"):
|
||||
descr = "\n".join(s for s in doctable["description"])
|
||||
doc += f"""* **Description:** {descr}\n"""
|
||||
return doc
|
||||
jinja_obj["description"] = descr.strip()
|
||||
|
||||
jinja_obj["sample"] = {
|
||||
"nom": f"{jinja_obj['nom']}.json",
|
||||
"href": f"{jinja_obj['nom'].replace('_', '-')}.json.md",
|
||||
}
|
||||
|
||||
return render_template("apidoc.j2", doc=jinja_obj)
|
||||
|
||||
|
||||
def gen_api_doc(app, endpoint_start="api."):
|
||||
|
Loading…
Reference in New Issue
Block a user