mirror of
https://gitlab.crans.org/mediatek/med.git
synced 2024-12-25 06:22:23 +00:00
Add script to export the database into a user-friendly website
This commit is contained in:
parent
9dd2a142b7
commit
cb9cd8f9b6
43
media/management/commands/export_markdown_site.py
Normal file
43
media/management/commands/export_markdown_site.py
Normal file
@ -0,0 +1,43 @@
|
||||
from argparse import FileType
|
||||
from sys import stdin
|
||||
|
||||
from django.core.management import BaseCommand
|
||||
from media.models import BD, CD, Manga, Revue, Roman, Vinyle
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
"""
|
||||
Extract the database into a user-friendly website written in Markdown.
|
||||
"""
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument('--directory', '-d', type=str, default='.',
|
||||
help="Directory where mkdocs is running.")
|
||||
|
||||
def handle(self, *args, **options):
|
||||
directory = options["directory"]
|
||||
|
||||
for model_class, file_name in [(BD, "bd.md"), (Manga, "mangas.md"), (Roman, "romans.md"),
|
||||
(CD, "cd.md"), (Vinyle, "vinyle.md"), (Revue, "revues.md")]:
|
||||
with open(directory + "/docs/" + file_name, "w") as f:
|
||||
titles = list(set(obj["title"] for obj in model_class.objects.values("title").distinct().all()))
|
||||
titles.sort()
|
||||
|
||||
for title in titles:
|
||||
f.write(f"## {title}\n\n\n")
|
||||
|
||||
for medium in model_class.objects.filter(title=title).order_by("side_identifier").all():
|
||||
if hasattr(medium, "subtitle"):
|
||||
f.write(f"### {medium.subtitle}\n\n\n")
|
||||
if hasattr(medium, "isbn"):
|
||||
f.write(f"ISBN : {medium.isbn}\n\n")
|
||||
f.write(f"Cote : {medium.side_identifier}\n\n")
|
||||
f.write("Auteurs : " + ", ".join(author.name for author in medium.authors.all()) + "\n\n")
|
||||
if hasattr(medium, "number_of_pages"):
|
||||
f.write(f"Nombre de pages : {medium.number_of_pages}\n\n")
|
||||
if hasattr(medium, "rpm"):
|
||||
f.write(f"Tours par minute : {medium.rpm}\n\n")
|
||||
if hasattr(medium, "publish_date"):
|
||||
f.write(f"Publié le : {medium.publish_date}\n\n")
|
||||
if hasattr(medium, "external_url"):
|
||||
f.write(f"Lien : [{medium.external_url}]({medium.external_url})\n\n")
|
||||
f.write("\n\n\n")
|
Loading…
Reference in New Issue
Block a user