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: