From 6288e9a82e4295251ee3ccb2dc6af47c06f04a7f Mon Sep 17 00:00:00 2001
From: Ulysse ARNAUD
Date: Sun, 5 Nov 2023 15:55:09 +0100
Subject: [PATCH 1/3] Added message at top of page if thesaurus is incomplete
---
web/templates/concepts.html | 11 +++++++++++
web/views.py | 24 ++++++++++++++++++++----
2 files changed, 31 insertions(+), 4 deletions(-)
diff --git a/web/templates/concepts.html b/web/templates/concepts.html
index 49e8c0249..62923ffd8 100644
--- a/web/templates/concepts.html
+++ b/web/templates/concepts.html
@@ -23,6 +23,17 @@ {{ title }}
the language column{{ languages | length | pluralize }} to correct any
information.
+ {% for lang in languages %}
+ {% if lang.is_incomplete %}
+
+ {% endif %}
+ {% endfor %}
{% for category in categories %}
diff --git a/web/views.py b/web/views.py
index cad8c61e1..a1fdbdbb5 100644
--- a/web/views.py
+++ b/web/views.py
@@ -191,10 +191,25 @@ def concepts(request):
for (category_key, category) in meta_structure.categories.items():
concepts_list = [concepts_data(key, name, languages) for (key, name) in category.items()]
- all_categories.append({
+ category_entry = {
"key": category_key,
- "concepts": concepts_list
- })
+ "concepts": concepts_list,
+ "is_incomplete": [False] * len(languages)
+ }
+ for i in range(len(languages)):
+ for concept in concepts_list:
+ if languages[i].concept_unknown(concept["key"]) or \
+ (languages[i].concept_implemented(concept["key"]) and \
+ not languages[i].concept_code(concept["key"]) and \
+ not languages[i].concept_comment(concept["key"]) ):
+ category_entry["is_incomplete"][i] = True
+ break
+ all_categories.append(category_entry)
+
+ for lang in languages:
+ booleans = [category["is_incomplete"][languages.index(lang)] for category in all_categories]
+ lang._is_incomplete = any(booleans)
+
return render_concepts(request, languages, meta_structure, all_categories)
@@ -217,7 +232,8 @@ def render_concepts(request, languages, structure, all_categories):
{
"key": language.key,
"version": language.version,
- "name": language.name
+ "name": language.name,
+ "is_incomplete": language._is_incomplete,
}
for language in languages
],
From 7331ae0a704329c1035a70994905673c006aae26 Mon Sep 17 00:00:00 2001
From: Ulysse ARNAUD
Date: Sun, 5 Nov 2023 16:08:55 +0100
Subject: [PATCH 2/3] Added command to generate all missing templates
---
.../commands/generate_missing_templates.py | 28 +++++++++++++++++++
1 file changed, 28 insertions(+)
create mode 100644 web/management/commands/generate_missing_templates.py
diff --git a/web/management/commands/generate_missing_templates.py b/web/management/commands/generate_missing_templates.py
new file mode 100644
index 000000000..1fc8c0a31
--- /dev/null
+++ b/web/management/commands/generate_missing_templates.py
@@ -0,0 +1,28 @@
+from django.core.management.base import BaseCommand
+
+from web.models import Language, MetaInfo
+
+import os
+
+
+class Command(BaseCommand):
+ help = 'Generate missing language thesaurus files to be filled out'
+
+ def handle(self, *args, **options):
+ meta_info = MetaInfo()
+ languages = meta_info.languages
+ structures = meta_info.structures
+
+ for language in languages:
+ versions = Language(language, languages[language]).versions()
+ for version in versions:
+ for structure in structures:
+ file_path = os.path.join(
+ 'web',
+ 'thesauruses',
+ language,
+ version,
+ structure + '.json'
+ )
+ if not os.path.exists(file_path):
+ os.system(f'python manage.py generate_template "{language}" "{structure}" --language-version="{version}"')
\ No newline at end of file
From 5efff56085d02df3963e6f3d00336827e6e46566 Mon Sep 17 00:00:00 2001
From: Ulysse ARNAUD
Date: Sun, 5 Nov 2023 16:18:09 +0100
Subject: [PATCH 3/3] If all concepts are not implemented, so the thesaurus may
be incomplete
---
web/views.py | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/web/views.py b/web/views.py
index a1fdbdbb5..ff9e19b48 100644
--- a/web/views.py
+++ b/web/views.py
@@ -197,13 +197,19 @@ def concepts(request):
"is_incomplete": [False] * len(languages)
}
for i in range(len(languages)):
+ is_incomplete = True
for concept in concepts_list:
+ if not languages[i].concept_unknown(concept["key"]) and \
+ languages[i].concept_implemented(concept["key"]):
+ is_incomplete = False
if languages[i].concept_unknown(concept["key"]) or \
(languages[i].concept_implemented(concept["key"]) and \
not languages[i].concept_code(concept["key"]) and \
not languages[i].concept_comment(concept["key"]) ):
category_entry["is_incomplete"][i] = True
break
+ if is_incomplete:
+ category_entry["is_incomplete"][i] = True
all_categories.append(category_entry)
for lang in languages: