Spaces:
Running
Running
Ajouter une version anglaise de la notice d’information
#11
by pbordescnil - opened
- .gitattributes +0 -1
- application_neo4j/download_dumps.py +0 -67
- application_neo4j/requirements.txt +0 -4
- application_neo4j/static/css/style.css +24 -159
- application_neo4j/static/js/browser_compatibility.js +0 -14
- application_neo4j/static/js/script.js +1 -2
- application_neo4j/static/js/script_dataset.js +1 -2
- application_neo4j/static/notice/notice.pdf +2 -2
- application_neo4j/static/notice/notice_en.pdf +0 -0
- application_neo4j/templates/expert.html +1 -3
- application_neo4j/templates/index.html +1 -20
- application_neo4j/templates/infos.html +2 -5
- application_neo4j/templates/search.html +1 -3
- application_neo4j/templates/search_dataset.html +1 -3
- application_neo4j/translations.py +5 -7
- start.sh +11 -4
.gitattributes
CHANGED
|
@@ -42,4 +42,3 @@ application_neo4j/static/notice/notice_html/media/image4.png filter=lfs diff=lfs
|
|
| 42 |
application_neo4j/static/notice/notice.docx filter=lfs diff=lfs merge=lfs -text
|
| 43 |
application_neo4j/static/notice/notice.pdf filter=lfs diff=lfs merge=lfs -text
|
| 44 |
opengds/*.jar filter=lfs diff=lfs merge=lfs -text
|
| 45 |
-
application_neo4j/static/notice/notice_en.pdf filter=lfs diff=lfs merge=lfs -text
|
|
|
|
| 42 |
application_neo4j/static/notice/notice.docx filter=lfs diff=lfs merge=lfs -text
|
| 43 |
application_neo4j/static/notice/notice.pdf filter=lfs diff=lfs merge=lfs -text
|
| 44 |
opengds/*.jar filter=lfs diff=lfs merge=lfs -text
|
|
|
application_neo4j/download_dumps.py
DELETED
|
@@ -1,67 +0,0 @@
|
|
| 1 |
-
"""Download the Neo4j dump files from the Hub dataset into /backups.
|
| 2 |
-
|
| 3 |
-
The weekly refresh Job publishes ``neo4j.dump``, ``system.dump`` and
|
| 4 |
-
``database_metadata.json`` into the dataset ``cnil/genmod-dump-neo4j``. The
|
| 5 |
-
dumps are large files stored with Git LFS / XET, so resolving them follows a
|
| 6 |
-
chain of Hugging Face signed redirects that ends on an S3 presigned URL.
|
| 7 |
-
``huggingface_hub`` handles that redirect chain, authentication for the private
|
| 8 |
-
dataset, and retries; a plain ``wget`` does not (it aborts with a ``400`` on
|
| 9 |
-
the S3 presigned URL).
|
| 10 |
-
"""
|
| 11 |
-
|
| 12 |
-
from __future__ import annotations
|
| 13 |
-
|
| 14 |
-
import os
|
| 15 |
-
import sys
|
| 16 |
-
import time
|
| 17 |
-
|
| 18 |
-
from huggingface_hub import hf_hub_download
|
| 19 |
-
|
| 20 |
-
REPO_ID = os.getenv("GENMOD_DUMP_REPO", "cnil/genmod-dump-neo4j")
|
| 21 |
-
REVISION = os.getenv("GENMOD_DUMP_REVISION", "main")
|
| 22 |
-
TOKEN = os.getenv("HF_TOKEN") or None
|
| 23 |
-
DEST_DIR = "/backups"
|
| 24 |
-
MAX_ATTEMPTS = 3
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
def log(message: str) -> None:
|
| 28 |
-
print(f"[genmod-download] {message}", flush=True)
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
def fetch(filename: str, required: bool = True) -> bool:
|
| 32 |
-
for attempt in range(1, MAX_ATTEMPTS + 1):
|
| 33 |
-
try:
|
| 34 |
-
path = hf_hub_download(
|
| 35 |
-
repo_id=REPO_ID,
|
| 36 |
-
repo_type="dataset",
|
| 37 |
-
revision=REVISION,
|
| 38 |
-
filename=filename,
|
| 39 |
-
token=TOKEN,
|
| 40 |
-
local_dir=DEST_DIR,
|
| 41 |
-
)
|
| 42 |
-
log(f"{filename} -> {path} (attempt {attempt})")
|
| 43 |
-
return True
|
| 44 |
-
except Exception as error:
|
| 45 |
-
log(f"{filename} attempt {attempt}/{MAX_ATTEMPTS} failed: {error}")
|
| 46 |
-
if attempt < MAX_ATTEMPTS:
|
| 47 |
-
time.sleep(2 * attempt)
|
| 48 |
-
if required:
|
| 49 |
-
return False
|
| 50 |
-
log(f"{filename} is optional; continuing without it")
|
| 51 |
-
return True
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
def main() -> int:
|
| 55 |
-
os.makedirs(DEST_DIR, exist_ok=True)
|
| 56 |
-
log(f"Downloading dumps from {REPO_ID}@{REVISION}")
|
| 57 |
-
for filename in ("system.dump", "neo4j.dump"):
|
| 58 |
-
if not fetch(filename, required=True):
|
| 59 |
-
log(f"FATAL: could not download {filename}")
|
| 60 |
-
return 1
|
| 61 |
-
fetch("database_metadata.json", required=False)
|
| 62 |
-
log("All dump files are ready")
|
| 63 |
-
return 0
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
if __name__ == "__main__":
|
| 67 |
-
sys.exit(main())
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
application_neo4j/requirements.txt
CHANGED
|
@@ -3,7 +3,3 @@ neo4j==5.28.1
|
|
| 3 |
graphdatascience==1.15.1
|
| 4 |
pandas==2.2.3
|
| 5 |
Jinja2 ==3.1.6
|
| 6 |
-
# Bootstrap only: fetch the Neo4j dump from the Hub dataset at container start.
|
| 7 |
-
# Pinned to the latest release that still supports Python 3.9 (the neo4j image);
|
| 8 |
-
# huggingface_hub >= 1.9 requires Python >= 3.10.
|
| 9 |
-
huggingface_hub==1.8.0
|
|
|
|
| 3 |
graphdatascience==1.15.1
|
| 4 |
pandas==2.2.3
|
| 5 |
Jinja2 ==3.1.6
|
|
|
|
|
|
|
|
|
|
|
|
application_neo4j/static/css/style.css
CHANGED
|
@@ -2,79 +2,13 @@
|
|
| 2 |
* STYLE GLOBAL & GRAPHIQUE SIGMA
|
| 3 |
* =================================================================== */
|
| 4 |
|
| 5 |
-
/* Explicit sizing and minimum widths avoid engine-specific flexbox
|
| 6 |
-
* expansion differences (notably between Blink and Gecko). */
|
| 7 |
-
html {
|
| 8 |
-
-webkit-text-size-adjust: 100%;
|
| 9 |
-
text-size-adjust: 100%;
|
| 10 |
-
}
|
| 11 |
-
|
| 12 |
-
body {
|
| 13 |
-
min-width: 320px;
|
| 14 |
-
}
|
| 15 |
-
|
| 16 |
-
.legacy-browser-warning {
|
| 17 |
-
display: none;
|
| 18 |
-
margin: 0;
|
| 19 |
-
padding: 0.75rem 1rem;
|
| 20 |
-
color: #664d03;
|
| 21 |
-
background: #fff3cd;
|
| 22 |
-
border-bottom: 1px solid #ffecb5;
|
| 23 |
-
font-weight: 600;
|
| 24 |
-
text-align: center;
|
| 25 |
-
}
|
| 26 |
-
|
| 27 |
-
img,
|
| 28 |
-
svg {
|
| 29 |
-
max-width: 100%;
|
| 30 |
-
height: auto;
|
| 31 |
-
}
|
| 32 |
-
|
| 33 |
-
.row > *,
|
| 34 |
-
.card,
|
| 35 |
-
.card-body,
|
| 36 |
-
.flex-grow-1 {
|
| 37 |
-
min-width: 0;
|
| 38 |
-
}
|
| 39 |
-
|
| 40 |
-
.navbar .container {
|
| 41 |
-
column-gap: 1rem;
|
| 42 |
-
row-gap: 0.75rem;
|
| 43 |
-
}
|
| 44 |
-
|
| 45 |
-
.navbar-brand {
|
| 46 |
-
min-width: 0;
|
| 47 |
-
max-width: 100%;
|
| 48 |
-
white-space: normal;
|
| 49 |
-
}
|
| 50 |
-
|
| 51 |
-
.navbar-brand small,
|
| 52 |
-
#suggestions-list li {
|
| 53 |
-
overflow-wrap: anywhere;
|
| 54 |
-
word-break: break-word;
|
| 55 |
-
}
|
| 56 |
-
|
| 57 |
-
.navbar-actions {
|
| 58 |
-
min-width: 0;
|
| 59 |
-
margin-left: auto;
|
| 60 |
-
}
|
| 61 |
-
|
| 62 |
#sigma-container {
|
| 63 |
width: 100%;
|
| 64 |
height: 600px; /* Un peu plus de hauteur pour un meilleur confort */
|
| 65 |
-
|
| 66 |
-
overflow: hidden;
|
| 67 |
-
border: 1px solid #dee2e6;
|
| 68 |
-
border: 1px solid var(--bs-border-color, #dee2e6); /* Variable Bootstrap */
|
| 69 |
margin-top: 1rem;
|
| 70 |
-
border-radius:
|
| 71 |
-
|
| 72 |
-
background-color: #f8f9fa;
|
| 73 |
-
background-color: var(--bs-light-bg-subtle, #f8f9fa); /* Fond légèrement teinté */
|
| 74 |
-
}
|
| 75 |
-
|
| 76 |
-
#floating-legend {
|
| 77 |
-
max-width: calc(100% - 1rem);
|
| 78 |
}
|
| 79 |
|
| 80 |
/* ===================================================================
|
|
@@ -98,62 +32,35 @@ svg {
|
|
| 98 |
/* ===================================================================
|
| 99 |
* STYLE DES TABLES (DATATABLES)
|
| 100 |
* =================================================================== */
|
| 101 |
-
/*
|
| 102 |
-
* normal/nowrap declarations. */
|
| 103 |
#descendance-table th, #descendance-table td,
|
| 104 |
-
#ascendance-table th, #ascendance-table td
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
vertical-align: middle;
|
| 109 |
}
|
| 110 |
|
| 111 |
-
|
| 112 |
-
#
|
| 113 |
-
|
| 114 |
-
min-width: 120px;
|
| 115 |
}
|
| 116 |
|
| 117 |
-
|
| 118 |
-
#
|
| 119 |
-
#train-table th:first-child, #train-table td:first-child,
|
| 120 |
-
#graph-models-table th:first-child, #graph-models-table td:first-child {
|
| 121 |
min-width: 200px;
|
| 122 |
-
white-space: normal;
|
| 123 |
-
overflow-wrap: anywhere;
|
| 124 |
-
word-break: break-word;
|
| 125 |
}
|
| 126 |
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
}
|
| 133 |
-
|
| 134 |
-
.table-responsive,
|
| 135 |
-
div.dataTables_wrapper div.dataTables_scrollBody {
|
| 136 |
-
overflow-x: auto !important;
|
| 137 |
-
-webkit-overflow-scrolling: touch;
|
| 138 |
-
}
|
| 139 |
-
|
| 140 |
-
div.dataTables_wrapper div.dataTables_scrollHeadInner {
|
| 141 |
-
min-width: 100%;
|
| 142 |
-
}
|
| 143 |
-
|
| 144 |
-
div.dataTables_wrapper table.dataTable {
|
| 145 |
-
margin-left: 0 !important;
|
| 146 |
-
margin-right: 0 !important;
|
| 147 |
-
table-layout: auto;
|
| 148 |
}
|
| 149 |
|
| 150 |
/* Personnalisation de l'input de recherche de DataTables pour qu'il ressemble à un champ Bootstrap */
|
| 151 |
div.dataTables_wrapper div.dataTables_filter input {
|
| 152 |
-
|
| 153 |
-
border:
|
| 154 |
-
border: 1px solid var(--bs-border-color, #dee2e6);
|
| 155 |
-
border-radius: 0.375rem;
|
| 156 |
-
border-radius: var(--bs-border-radius, 0.375rem);
|
| 157 |
padding: 0.375rem 0.75rem;
|
| 158 |
margin-left: 0.5em;
|
| 159 |
}
|
|
@@ -193,12 +100,8 @@ div.dataTables_wrapper .table thead th.sorting_desc::after {
|
|
| 193 |
/* Ce style est pour si vous utilisez une <ul> simple.
|
| 194 |
Si vous avez bien une <ul class="list-group">, vous pouvez supprimer ce bloc. */
|
| 195 |
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
|
| 196 |
-
|
| 197 |
-
|
| 198 |
-
border-radius: 0.375rem;
|
| 199 |
-
border-radius: var(--bs-border-radius, 0.375rem);
|
| 200 |
-
background-color: #f8f9fa;
|
| 201 |
-
background-color: var(--bs-light, #f8f9fa);
|
| 202 |
}
|
| 203 |
#suggestions-list li:hover {
|
| 204 |
background-color: #94bfeb; ;
|
|
@@ -295,22 +198,11 @@ div.dataTables_wrapper .table thead th.sorting_desc::after {
|
|
| 295 |
}
|
| 296 |
|
| 297 |
/* Change la couleur de fond des cases à cocher lorsqu'elles sont cochées */
|
| 298 |
-
.btn
|
| 299 |
background-color: #6a11cb;
|
| 300 |
border-color:#6a11cb;
|
| 301 |
}
|
| 302 |
|
| 303 |
-
.btn-outline-primary {
|
| 304 |
-
color: #6a11cb;
|
| 305 |
-
border-color: #6a11cb;
|
| 306 |
-
}
|
| 307 |
-
|
| 308 |
-
.btn-outline-primary:hover {
|
| 309 |
-
color: #fff;
|
| 310 |
-
background-color: #6a11cb;
|
| 311 |
-
border-color: #6a11cb;
|
| 312 |
-
}
|
| 313 |
-
|
| 314 |
.stretched-link{
|
| 315 |
color: #6a11cb;
|
| 316 |
}
|
|
@@ -376,31 +268,4 @@ main {
|
|
| 376 |
.btn-modern:hover {
|
| 377 |
background: linear-gradient(135deg, #5a0fbf, #1d63e1);
|
| 378 |
transform: translateY(-3px);
|
| 379 |
-
}
|
| 380 |
-
|
| 381 |
-
@media (max-width: 575.98px) {
|
| 382 |
-
.navbar-brand,
|
| 383 |
-
.navbar-actions {
|
| 384 |
-
flex: 1 1 100%;
|
| 385 |
-
margin-right: 0;
|
| 386 |
-
}
|
| 387 |
-
|
| 388 |
-
.navbar-actions {
|
| 389 |
-
justify-content: flex-start !important;
|
| 390 |
-
}
|
| 391 |
-
|
| 392 |
-
#sigma-container {
|
| 393 |
-
height: 70vh;
|
| 394 |
-
min-height: 420px;
|
| 395 |
-
}
|
| 396 |
-
|
| 397 |
-
div.dataTables_wrapper div.dataTables_filter label {
|
| 398 |
-
display: block;
|
| 399 |
-
width: 100%;
|
| 400 |
-
}
|
| 401 |
-
|
| 402 |
-
div.dataTables_wrapper div.dataTables_filter input {
|
| 403 |
-
width: 100%;
|
| 404 |
-
margin: 0.375rem 0 0;
|
| 405 |
-
}
|
| 406 |
-
}
|
|
|
|
| 2 |
* STYLE GLOBAL & GRAPHIQUE SIGMA
|
| 3 |
* =================================================================== */
|
| 4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5 |
#sigma-container {
|
| 6 |
width: 100%;
|
| 7 |
height: 600px; /* Un peu plus de hauteur pour un meilleur confort */
|
| 8 |
+
border: 1px solid var(--bs-border-color); /* Variable Bootstrap */
|
|
|
|
|
|
|
|
|
|
| 9 |
margin-top: 1rem;
|
| 10 |
+
border-radius: var(--bs-border-radius); /* Variable Bootstrap */
|
| 11 |
+
background-color: var(--bs-light-bg-subtle); /* Fond légèrement teinté */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
}
|
| 13 |
|
| 14 |
/* ===================================================================
|
|
|
|
| 32 |
/* ===================================================================
|
| 33 |
* STYLE DES TABLES (DATATABLES)
|
| 34 |
* =================================================================== */
|
| 35 |
+
/* Permet au texte de revenir à la ligne naturellement */
|
|
|
|
| 36 |
#descendance-table th, #descendance-table td,
|
| 37 |
+
#ascendance-table th, #ascendance-table td {
|
| 38 |
+
white-space: normal; /* <-- La correction clé ! */
|
| 39 |
+
word-wrap: break-word; /* Force le retour à la ligne des mots longs */
|
| 40 |
+
vertical-align: middle; /* Garde le centrage vertical */
|
|
|
|
| 41 |
}
|
| 42 |
|
| 43 |
+
/* On peut donner une largeur minimale aux colonnes pour garder une bonne structure */
|
| 44 |
+
#descendance-table th, #ascendance-table th {
|
| 45 |
+
min-width: 120px; /* Ajustez cette valeur selon vos besoins */
|
|
|
|
| 46 |
}
|
| 47 |
|
| 48 |
+
/* Cas spécifique pour les colonnes potentiellement longues comme le nom du modèle */
|
| 49 |
+
#descendance-table th:first-child, #ascendance-table th:first-child {
|
|
|
|
|
|
|
| 50 |
min-width: 200px;
|
|
|
|
|
|
|
|
|
|
| 51 |
}
|
| 52 |
|
| 53 |
+
/* Empêche le texte de se couper dans les cellules, force le défilement horizontal */
|
| 54 |
+
#descendance-table th, #descendance-table td,
|
| 55 |
+
#ascendance-table th, #ascendance-table td {
|
| 56 |
+
white-space: nowrap;
|
| 57 |
+
vertical-align: middle; /* Centrage vertical pour un look plus propre */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 58 |
}
|
| 59 |
|
| 60 |
/* Personnalisation de l'input de recherche de DataTables pour qu'il ressemble à un champ Bootstrap */
|
| 61 |
div.dataTables_wrapper div.dataTables_filter input {
|
| 62 |
+
border: 1px solid var(--bs-border-color);
|
| 63 |
+
border-radius: var(--bs-border-radius);
|
|
|
|
|
|
|
|
|
|
| 64 |
padding: 0.375rem 0.75rem;
|
| 65 |
margin-left: 0.5em;
|
| 66 |
}
|
|
|
|
| 100 |
/* Ce style est pour si vous utilisez une <ul> simple.
|
| 101 |
Si vous avez bien une <ul class="list-group">, vous pouvez supprimer ce bloc. */
|
| 102 |
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
|
| 103 |
+
border-radius: var(--bs-border-radius);
|
| 104 |
+
background-color: var(--bs-light);
|
|
|
|
|
|
|
|
|
|
|
|
|
| 105 |
}
|
| 106 |
#suggestions-list li:hover {
|
| 107 |
background-color: #94bfeb; ;
|
|
|
|
| 198 |
}
|
| 199 |
|
| 200 |
/* Change la couleur de fond des cases à cocher lorsqu'elles sont cochées */
|
| 201 |
+
.btn {
|
| 202 |
background-color: #6a11cb;
|
| 203 |
border-color:#6a11cb;
|
| 204 |
}
|
| 205 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 206 |
.stretched-link{
|
| 207 |
color: #6a11cb;
|
| 208 |
}
|
|
|
|
| 268 |
.btn-modern:hover {
|
| 269 |
background: linear-gradient(135deg, #5a0fbf, #1d63e1);
|
| 270 |
transform: translateY(-3px);
|
| 271 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
application_neo4j/static/js/browser_compatibility.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
| 1 |
-
(function () {
|
| 2 |
-
"use strict";
|
| 3 |
-
|
| 4 |
-
// `document.documentMode` is exposed by Internet Explorer only. The rest of
|
| 5 |
-
// the application deliberately targets maintained browsers supported by
|
| 6 |
-
// Bootstrap 5.
|
| 7 |
-
if (document.documentMode) {
|
| 8 |
-
var warning = document.getElementById("legacy-browser-warning");
|
| 9 |
-
if (warning) {
|
| 10 |
-
warning.hidden = false;
|
| 11 |
-
warning.style.display = "block";
|
| 12 |
-
}
|
| 13 |
-
}
|
| 14 |
-
}());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
application_neo4j/static/js/script.js
CHANGED
|
@@ -193,8 +193,7 @@ document.addEventListener("DOMContentLoaded", () => {
|
|
| 193 |
const common_dt_options = {
|
| 194 |
"language": { "url": datatablesLangUrl },
|
| 195 |
"pageLength": 10,
|
| 196 |
-
"responsive": true,
|
| 197 |
-
"scrollX": true,
|
| 198 |
// Afficher en premier les modèles les plus téléchargés.
|
| 199 |
"order": [[2, "desc"]],
|
| 200 |
"columnDefs": [
|
|
|
|
| 193 |
const common_dt_options = {
|
| 194 |
"language": { "url": datatablesLangUrl },
|
| 195 |
"pageLength": 10,
|
| 196 |
+
"responsive": true,"scrollX": true , "scrollY":true,
|
|
|
|
| 197 |
// Afficher en premier les modèles les plus téléchargés.
|
| 198 |
"order": [[2, "desc"]],
|
| 199 |
"columnDefs": [
|
application_neo4j/static/js/script_dataset.js
CHANGED
|
@@ -209,8 +209,7 @@ document.addEventListener("DOMContentLoaded", () => {
|
|
| 209 |
const common_dt_options = {
|
| 210 |
"language": { "url": datatablesLangUrl },
|
| 211 |
"pageLength": 10,
|
| 212 |
-
"responsive": true,
|
| 213 |
-
"scrollX": true,
|
| 214 |
"columnDefs": [
|
| 215 |
{
|
| 216 |
// Appliquer notre plugin 'numeric-string' aux colonnes cibles
|
|
|
|
| 209 |
const common_dt_options = {
|
| 210 |
"language": { "url": datatablesLangUrl },
|
| 211 |
"pageLength": 10,
|
| 212 |
+
"responsive": true,"scrollX": true , "scrollY":true,
|
|
|
|
| 213 |
"columnDefs": [
|
| 214 |
{
|
| 215 |
// Appliquer notre plugin 'numeric-string' aux colonnes cibles
|
application_neo4j/static/notice/notice.pdf
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:dced59e9dc43bd1823fd18cee4005415e375e9f77c7a58bc6ffcf3a48e732a3c
|
| 3 |
+
size 409000
|
application_neo4j/static/notice/notice_en.pdf
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|
application_neo4j/templates/expert.html
CHANGED
|
@@ -18,15 +18,13 @@
|
|
| 18 |
</head>
|
| 19 |
|
| 20 |
<body class="d-flex flex-column min-vh-100">
|
| 21 |
-
<div id="legacy-browser-warning" class="legacy-browser-warning" role="alert" hidden>{{ t('site.legacy_browser_warning') }}</div>
|
| 22 |
-
<script src="{{ url_for('static', filename='js/browser_compatibility.js') }}"></script>
|
| 23 |
<header class="navbar navbar-expand-lg navbar-light bg-light border-bottom">
|
| 24 |
<div class="container">
|
| 25 |
<a class="navbar-brand" href="{{ url_for('home', lang=current_lang) }}">
|
| 26 |
<span class="fw-bold">{{ t('site.nav_brand_model_expert') }}</span>
|
| 27 |
<small class="d-block text-muted">{{ t('site.nav_subtitle') }}</small>
|
| 28 |
</a>
|
| 29 |
-
<div class="
|
| 30 |
<a href="{{ url_for('home', lang=current_lang) }}" class="btn btn-sm btn-dark me-3">
|
| 31 |
<i class="bi bi-house-door-fill me-1" aria-hidden="true"></i>{{ t('site.home_button') }}
|
| 32 |
</a>
|
|
|
|
| 18 |
</head>
|
| 19 |
|
| 20 |
<body class="d-flex flex-column min-vh-100">
|
|
|
|
|
|
|
| 21 |
<header class="navbar navbar-expand-lg navbar-light bg-light border-bottom">
|
| 22 |
<div class="container">
|
| 23 |
<a class="navbar-brand" href="{{ url_for('home', lang=current_lang) }}">
|
| 24 |
<span class="fw-bold">{{ t('site.nav_brand_model_expert') }}</span>
|
| 25 |
<small class="d-block text-muted">{{ t('site.nav_subtitle') }}</small>
|
| 26 |
</a>
|
| 27 |
+
<div class="d-flex align-items-center justify-content-end flex-wrap gap-2">
|
| 28 |
<a href="{{ url_for('home', lang=current_lang) }}" class="btn btn-sm btn-dark me-3">
|
| 29 |
<i class="bi bi-house-door-fill me-1" aria-hidden="true"></i>{{ t('site.home_button') }}
|
| 30 |
</a>
|
application_neo4j/templates/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
<title>{{ t('site.title_home') }}</title>
|
| 7 |
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
|
| 8 |
-
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.
|
| 9 |
|
| 10 |
<style>/* Style simple pour la page d'accueil */
|
| 11 |
body {
|
|
@@ -116,30 +116,11 @@
|
|
| 116 |
background: #3498db;
|
| 117 |
color: #fff;
|
| 118 |
}
|
| 119 |
-
|
| 120 |
-
@media (max-width: 575.98px) {
|
| 121 |
-
.lang-switch {
|
| 122 |
-
position: static;
|
| 123 |
-
justify-content: flex-end;
|
| 124 |
-
padding: 12px 15px 0;
|
| 125 |
-
}
|
| 126 |
-
|
| 127 |
-
.welcome-container {
|
| 128 |
-
padding-top: 24px;
|
| 129 |
-
}
|
| 130 |
-
|
| 131 |
-
.content-card {
|
| 132 |
-
padding: 22px;
|
| 133 |
-
text-align: left;
|
| 134 |
-
}
|
| 135 |
-
}
|
| 136 |
|
| 137 |
</style>
|
| 138 |
</head>
|
| 139 |
|
| 140 |
<body>
|
| 141 |
-
<div id="legacy-browser-warning" class="legacy-browser-warning" role="alert" hidden>{{ t('site.legacy_browser_warning') }}</div>
|
| 142 |
-
<script src="{{ url_for('static', filename='js/browser_compatibility.js') }}"></script>
|
| 143 |
<!-- Language selector -->
|
| 144 |
<div class="lang-switch">
|
| 145 |
<a href="{{ url_for('set_language_route', lang='fr') }}" class="{{ 'active' if current_lang == 'fr' else '' }}">{{ t('lang.fr') }}</a>
|
|
|
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
<title>{{ t('site.title_home') }}</title>
|
| 7 |
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
|
| 8 |
+
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
| 9 |
|
| 10 |
<style>/* Style simple pour la page d'accueil */
|
| 11 |
body {
|
|
|
|
| 116 |
background: #3498db;
|
| 117 |
color: #fff;
|
| 118 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 119 |
|
| 120 |
</style>
|
| 121 |
</head>
|
| 122 |
|
| 123 |
<body>
|
|
|
|
|
|
|
| 124 |
<!-- Language selector -->
|
| 125 |
<div class="lang-switch">
|
| 126 |
<a href="{{ url_for('set_language_route', lang='fr') }}" class="{{ 'active' if current_lang == 'fr' else '' }}">{{ t('lang.fr') }}</a>
|
application_neo4j/templates/infos.html
CHANGED
|
@@ -7,7 +7,6 @@
|
|
| 7 |
<style>
|
| 8 |
body, html { margin: 0; padding: 0; height: 100%; overflow: hidden; }
|
| 9 |
body { display: flex; flex-direction: column; font-family: sans-serif; }
|
| 10 |
-
.legacy-browser-warning { display: none; padding: 0.75rem 1rem; color: #664d03; background: #fff3cd; border-bottom: 1px solid #ffecb5; font-weight: 600; text-align: center; }
|
| 11 |
.toolbar {
|
| 12 |
display: flex;
|
| 13 |
align-items: center;
|
|
@@ -25,13 +24,11 @@
|
|
| 25 |
font-weight: 600;
|
| 26 |
}
|
| 27 |
.home-button:hover { color: #fff; background: #424649; }
|
| 28 |
-
.pdf-container { width: 100%;
|
| 29 |
-
.pdf-container iframe {
|
| 30 |
</style>
|
| 31 |
</head>
|
| 32 |
<body>
|
| 33 |
-
<div id="legacy-browser-warning" class="legacy-browser-warning" role="alert" hidden>{{ t('site.legacy_browser_warning') }}</div>
|
| 34 |
-
<script src="{{ url_for('static', filename='js/browser_compatibility.js') }}"></script>
|
| 35 |
<nav class="toolbar" aria-label="{{ t('site.home_button') }}">
|
| 36 |
<a class="home-button" href="{{ url_for('home', lang=current_lang) }}">⌂ {{ t('site.home_button') }}</a>
|
| 37 |
</nav>
|
|
|
|
| 7 |
<style>
|
| 8 |
body, html { margin: 0; padding: 0; height: 100%; overflow: hidden; }
|
| 9 |
body { display: flex; flex-direction: column; font-family: sans-serif; }
|
|
|
|
| 10 |
.toolbar {
|
| 11 |
display: flex;
|
| 12 |
align-items: center;
|
|
|
|
| 24 |
font-weight: 600;
|
| 25 |
}
|
| 26 |
.home-button:hover { color: #fff; background: #424649; }
|
| 27 |
+
.pdf-container { width: 100%; flex: 1; min-height: 0; }
|
| 28 |
+
.pdf-container iframe { border: none; width: 100%; height: 100%; }
|
| 29 |
</style>
|
| 30 |
</head>
|
| 31 |
<body>
|
|
|
|
|
|
|
| 32 |
<nav class="toolbar" aria-label="{{ t('site.home_button') }}">
|
| 33 |
<a class="home-button" href="{{ url_for('home', lang=current_lang) }}">⌂ {{ t('site.home_button') }}</a>
|
| 34 |
</nav>
|
application_neo4j/templates/search.html
CHANGED
|
@@ -33,15 +33,13 @@
|
|
| 33 |
</head>
|
| 34 |
|
| 35 |
<body class="d-flex flex-column min-vh-100">
|
| 36 |
-
<div id="legacy-browser-warning" class="legacy-browser-warning" role="alert" hidden>{{ t('site.legacy_browser_warning') }}</div>
|
| 37 |
-
<script src="{{ url_for('static', filename='js/browser_compatibility.js') }}"></script>
|
| 38 |
<header class="navbar navbar-expand-lg navbar-light bg-light border-bottom">
|
| 39 |
<div class="container">
|
| 40 |
<a class="navbar-brand" href="{{ url_for('home', lang=current_lang) }}">
|
| 41 |
<span class="fw-bold">{{ t('site.nav_brand') }}</span>
|
| 42 |
<small class="d-block text-muted">{{ t('site.nav_subtitle_full') }}</small>
|
| 43 |
</a>
|
| 44 |
-
<div class="
|
| 45 |
<a href="{{ url_for('home', lang=current_lang) }}" class="btn btn-sm btn-dark me-3">
|
| 46 |
<i class="bi bi-house-door-fill me-1" aria-hidden="true"></i>{{ t('site.home_button') }}
|
| 47 |
</a>
|
|
|
|
| 33 |
</head>
|
| 34 |
|
| 35 |
<body class="d-flex flex-column min-vh-100">
|
|
|
|
|
|
|
| 36 |
<header class="navbar navbar-expand-lg navbar-light bg-light border-bottom">
|
| 37 |
<div class="container">
|
| 38 |
<a class="navbar-brand" href="{{ url_for('home', lang=current_lang) }}">
|
| 39 |
<span class="fw-bold">{{ t('site.nav_brand') }}</span>
|
| 40 |
<small class="d-block text-muted">{{ t('site.nav_subtitle_full') }}</small>
|
| 41 |
</a>
|
| 42 |
+
<div class="d-flex align-items-center justify-content-end flex-wrap gap-2">
|
| 43 |
<a href="{{ url_for('home', lang=current_lang) }}" class="btn btn-sm btn-dark me-3">
|
| 44 |
<i class="bi bi-house-door-fill me-1" aria-hidden="true"></i>{{ t('site.home_button') }}
|
| 45 |
</a>
|
application_neo4j/templates/search_dataset.html
CHANGED
|
@@ -33,15 +33,13 @@
|
|
| 33 |
</head>
|
| 34 |
|
| 35 |
<body class="d-flex flex-column min-vh-100">
|
| 36 |
-
<div id="legacy-browser-warning" class="legacy-browser-warning" role="alert" hidden>{{ t('site.legacy_browser_warning') }}</div>
|
| 37 |
-
<script src="{{ url_for('static', filename='js/browser_compatibility.js') }}"></script>
|
| 38 |
<header class="navbar navbar-expand-lg navbar-light bg-light border-bottom">
|
| 39 |
<div class="container">
|
| 40 |
<a class="navbar-brand" href="{{ url_for('home', lang=current_lang) }}">
|
| 41 |
<span class="fw-bold">{{ t('site.nav_brand') }}</span>
|
| 42 |
<small class="d-block text-muted">{{ t('site.nav_subtitle') }}</small>
|
| 43 |
</a>
|
| 44 |
-
<div class="
|
| 45 |
<a href="{{ url_for('home', lang=current_lang) }}" class="btn btn-sm btn-dark me-3">
|
| 46 |
<i class="bi bi-house-door-fill me-1" aria-hidden="true"></i>{{ t('site.home_button') }}
|
| 47 |
</a>
|
|
|
|
| 33 |
</head>
|
| 34 |
|
| 35 |
<body class="d-flex flex-column min-vh-100">
|
|
|
|
|
|
|
| 36 |
<header class="navbar navbar-expand-lg navbar-light bg-light border-bottom">
|
| 37 |
<div class="container">
|
| 38 |
<a class="navbar-brand" href="{{ url_for('home', lang=current_lang) }}">
|
| 39 |
<span class="fw-bold">{{ t('site.nav_brand') }}</span>
|
| 40 |
<small class="d-block text-muted">{{ t('site.nav_subtitle') }}</small>
|
| 41 |
</a>
|
| 42 |
+
<div class="d-flex align-items-center justify-content-end flex-wrap gap-2">
|
| 43 |
<a href="{{ url_for('home', lang=current_lang) }}" class="btn btn-sm btn-dark me-3">
|
| 44 |
<i class="bi bi-house-door-fill me-1" aria-hidden="true"></i>{{ t('site.home_button') }}
|
| 45 |
</a>
|
application_neo4j/translations.py
CHANGED
|
@@ -46,7 +46,6 @@ TRANSLATIONS = {
|
|
| 46 |
"site.nav_subtitle": "Exploration des relations entre modèles et datasets",
|
| 47 |
"site.nav_subtitle_full": "Exploration des relations entre modèles et datasets (base de données actualisée le {date})",
|
| 48 |
"site.home_button": "Accueil",
|
| 49 |
-
"site.legacy_browser_warning": "Ce navigateur n’est plus pris en charge. Pour un affichage stable, utilisez une version récente de Firefox, Chrome, Edge ou Safari.",
|
| 50 |
"site.footer": "Application de recherche et visualisation des relations entre modèles et jeux de données publiés sur la plateforme HuggingFace. © 2025",
|
| 51 |
"site.footer_expert": "Application de recherche et visualisation... © 2025",
|
| 52 |
|
|
@@ -77,7 +76,7 @@ TRANSLATIONS = {
|
|
| 77 |
"• aux modèles issus du modèle interrogé et publiés sur HuggingFace<br>"
|
| 78 |
"• aux modèles parents de ce modèle.<br><br>"
|
| 79 |
"(A condition que les liens entre modèles soient déclarés par les utiliateurs sur HuggingFace)",
|
| 80 |
-
"home.find_label": "Vous souhaitez connaître la descendance et l'
|
| 81 |
"home.btn_model": "Un modèle",
|
| 82 |
"home.btn_dataset": "Un dataset",
|
| 83 |
"home.btn_unsure": "Je ne sais pas",
|
|
@@ -86,10 +85,10 @@ TRANSLATIONS = {
|
|
| 86 |
"home.download_date": "Date de téléchargement de la base de données : {date}",
|
| 87 |
"home.notice_title": "Mentions d'information sur les traitements de données à caractère personnel",
|
| 88 |
"home.notice_p1": "Afin d'étudier le développement de la communauté de l'IA open source, et de préparer la possibilité d'exercices de droits des citoyens, le projet vise à étudier la base de données des jeux de données et modèles présents sur la plateforme HuggingFace. Cette base de données permet d'établir un arbre généalogique des modèles.",
|
| 89 |
-
"home.notice_p2": "
|
| 90 |
"home.notice_p3": "Ce projet relève de la mission d'intérêt public dont est investie la CNIL en application du règlement général sur la protection des données et de la loi Informatique et Libertés modifiée (article 8).",
|
| 91 |
"home.notice_p4": "Les données sont publiées à partir de l'espace CNIL sur HuggingFace.",
|
| 92 |
-
"home.notice_p5": "
|
| 93 |
"home.notice_p6": "Vous pouvez accéder et obtenir une copie de vos données, vous opposer au traitement de ces données, les faire rectifier ou effacer. Vous disposez également du droit de limiter le traitement de vos données.",
|
| 94 |
"home.notice_p7": "Vous pouvez exercer vos droits ou poser vos questions sur ce projet en contactant le service IA de la CNIL : <a href=\"mailto:ia@cnil.fr\">ia@cnil.fr</a>.",
|
| 95 |
"home.notice_p8": "Si vous estimez, après nous avoir contactés, que vos droits « Informatique et Libertés » ne sont pas respectés, vous pouvez contacter le DPO de la CNIL ou adresser une réclamation à la CNIL.",
|
|
@@ -100,7 +99,7 @@ TRANSLATIONS = {
|
|
| 100 |
"search.page_lead_dataset": "Explorez la généalogie des modèles et datasets",
|
| 101 |
"search.label_name": "Nom à rechercher",
|
| 102 |
"search.placeholder_model": "Taper le nom du modèle ou l'id de son repo Hugging Face.",
|
| 103 |
-
"search.placeholder_dataset": "Taper le nom du dataset
|
| 104 |
"search.label_filters": "Filtres",
|
| 105 |
"search.filter_model": "Modèle",
|
| 106 |
"search.filter_dataset": "Dataset",
|
|
@@ -197,7 +196,7 @@ TRANSLATIONS = {
|
|
| 197 |
# ── expert.html ──
|
| 198 |
"expert.page_title": "Recherche Experte",
|
| 199 |
"expert.page_lead": "Explorez et filtrez la généalogie des modèles",
|
| 200 |
-
"expert.placeholder": "Taper le nom du modèle
|
| 201 |
"expert.filter_author": "Auteur",
|
| 202 |
"expert.connected_component": "Composante connexe du noeud recherché",
|
| 203 |
"expert.legend_title": "Légendes",
|
|
@@ -285,7 +284,6 @@ TRANSLATIONS = {
|
|
| 285 |
"site.nav_subtitle": "Exploration of relations between models and datasets",
|
| 286 |
"site.nav_subtitle_full": "Exploration of relations between models and datasets (database updated on {date})",
|
| 287 |
"site.home_button": "Home",
|
| 288 |
-
"site.legacy_browser_warning": "This browser is no longer supported. For a stable display, use a recent version of Firefox, Chrome, Edge or Safari.",
|
| 289 |
"site.footer": "Application for searching and visualizing relations between models and datasets published on the HuggingFace platform. © 2025",
|
| 290 |
"site.footer_expert": "Application for searching and visualizing... © 2025",
|
| 291 |
|
|
|
|
| 46 |
"site.nav_subtitle": "Exploration des relations entre modèles et datasets",
|
| 47 |
"site.nav_subtitle_full": "Exploration des relations entre modèles et datasets (base de données actualisée le {date})",
|
| 48 |
"site.home_button": "Accueil",
|
|
|
|
| 49 |
"site.footer": "Application de recherche et visualisation des relations entre modèles et jeux de données publiés sur la plateforme HuggingFace. © 2025",
|
| 50 |
"site.footer_expert": "Application de recherche et visualisation... © 2025",
|
| 51 |
|
|
|
|
| 76 |
"• aux modèles issus du modèle interrogé et publiés sur HuggingFace<br>"
|
| 77 |
"• aux modèles parents de ce modèle.<br><br>"
|
| 78 |
"(A condition que les liens entre modèles soient déclarés par les utiliateurs sur HuggingFace)",
|
| 79 |
+
"home.find_label": "Vous souhaitez connaître la descendance et l'acsendance de ...",
|
| 80 |
"home.btn_model": "Un modèle",
|
| 81 |
"home.btn_dataset": "Un dataset",
|
| 82 |
"home.btn_unsure": "Je ne sais pas",
|
|
|
|
| 85 |
"home.download_date": "Date de téléchargement de la base de données : {date}",
|
| 86 |
"home.notice_title": "Mentions d'information sur les traitements de données à caractère personnel",
|
| 87 |
"home.notice_p1": "Afin d'étudier le développement de la communauté de l'IA open source, et de préparer la possibilité d'exercices de droits des citoyens, le projet vise à étudier la base de données des jeux de données et modèles présents sur la plateforme HuggingFace. Cette base de données permet d'établir un arbre généalogique des modèles.",
|
| 88 |
+
"home.notice_p2": "Les données traitées sont le pseudonyme de l'auteur (quand il apparaît dans les métadonnées), le nom du modèle/jeu de données et plusieurs informations inhérentes à ce modèle/jeu de données telles que la date de publication, la licence utilisée ou encore le nombre de téléchargements.",
|
| 89 |
"home.notice_p3": "Ce projet relève de la mission d'intérêt public dont est investie la CNIL en application du règlement général sur la protection des données et de la loi Informatique et Libertés modifiée (article 8).",
|
| 90 |
"home.notice_p4": "Les données sont publiées à partir de l'espace CNIL sur HuggingFace.",
|
| 91 |
+
"home.notice_p5": "Une première phase d'évaluation de l'utilité de l'outil interviendra après 6 mois de publication. A cette échéance, l'outil pourra être modifié et le projet reconduit.",
|
| 92 |
"home.notice_p6": "Vous pouvez accéder et obtenir une copie de vos données, vous opposer au traitement de ces données, les faire rectifier ou effacer. Vous disposez également du droit de limiter le traitement de vos données.",
|
| 93 |
"home.notice_p7": "Vous pouvez exercer vos droits ou poser vos questions sur ce projet en contactant le service IA de la CNIL : <a href=\"mailto:ia@cnil.fr\">ia@cnil.fr</a>.",
|
| 94 |
"home.notice_p8": "Si vous estimez, après nous avoir contactés, que vos droits « Informatique et Libertés » ne sont pas respectés, vous pouvez contacter le DPO de la CNIL ou adresser une réclamation à la CNIL.",
|
|
|
|
| 99 |
"search.page_lead_dataset": "Explorez la généalogie des modèles et datasets",
|
| 100 |
"search.label_name": "Nom à rechercher",
|
| 101 |
"search.placeholder_model": "Taper le nom du modèle ou l'id de son repo Hugging Face.",
|
| 102 |
+
"search.placeholder_dataset": "Taper le nom du dataset suspecté.",
|
| 103 |
"search.label_filters": "Filtres",
|
| 104 |
"search.filter_model": "Modèle",
|
| 105 |
"search.filter_dataset": "Dataset",
|
|
|
|
| 196 |
# ── expert.html ──
|
| 197 |
"expert.page_title": "Recherche Experte",
|
| 198 |
"expert.page_lead": "Explorez et filtrez la généalogie des modèles",
|
| 199 |
+
"expert.placeholder": "Taper le nom du modèle suspecté.",
|
| 200 |
"expert.filter_author": "Auteur",
|
| 201 |
"expert.connected_component": "Composante connexe du noeud recherché",
|
| 202 |
"expert.legend_title": "Légendes",
|
|
|
|
| 284 |
"site.nav_subtitle": "Exploration of relations between models and datasets",
|
| 285 |
"site.nav_subtitle_full": "Exploration of relations between models and datasets (database updated on {date})",
|
| 286 |
"site.home_button": "Home",
|
|
|
|
| 287 |
"site.footer": "Application for searching and visualizing relations between models and datasets published on the HuggingFace platform. © 2025",
|
| 288 |
"site.footer_expert": "Application for searching and visualizing... © 2025",
|
| 289 |
|
start.sh
CHANGED
|
@@ -1,11 +1,18 @@
|
|
| 1 |
set -euo pipefail
|
| 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3 |
# Load the database backup. Metadata is optional for compatibility with the
|
| 4 |
# original dump; the application then falls back to its historical date.
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
|
|
|
|
|
|
| 9 |
neo4j-admin database load --expand-commands system --from-path=/backups --overwrite-destination=true
|
| 10 |
neo4j-admin database load --expand-commands neo4j --from-path=/backups --overwrite-destination=true
|
| 11 |
|
|
|
|
| 1 |
set -euo pipefail
|
| 2 |
|
| 3 |
+
DUMP_REPO="${GENMOD_DUMP_REPO:-cnil/genmod-dump-neo4j}"
|
| 4 |
+
DUMP_REVISION="${GENMOD_DUMP_REVISION:-main}"
|
| 5 |
+
DUMP_BASE_URL="https://huggingface.co/datasets/${DUMP_REPO}/resolve/${DUMP_REVISION}"
|
| 6 |
+
AUTH_HEADER="Authorization: Bearer ${HF_TOKEN}"
|
| 7 |
+
|
| 8 |
# Load the database backup. Metadata is optional for compatibility with the
|
| 9 |
# original dump; the application then falls back to its historical date.
|
| 10 |
+
wget --header="${AUTH_HEADER}" "${DUMP_BASE_URL}/system.dump" -O /backups/system.dump
|
| 11 |
+
wget --header="${AUTH_HEADER}" "${DUMP_BASE_URL}/neo4j.dump" -O /backups/neo4j.dump
|
| 12 |
+
if ! wget --header="${AUTH_HEADER}" "${DUMP_BASE_URL}/database_metadata.json" \
|
| 13 |
+
-O /backups/database_metadata.json; then
|
| 14 |
+
rm -f /backups/database_metadata.json
|
| 15 |
+
fi
|
| 16 |
neo4j-admin database load --expand-commands system --from-path=/backups --overwrite-destination=true
|
| 17 |
neo4j-admin database load --expand-commands neo4j --from-path=/backups --overwrite-destination=true
|
| 18 |
|