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..ff9e19b48 100644
--- a/web/views.py
+++ b/web/views.py
@@ -191,10 +191,31 @@ 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)):
+ 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:
+ 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 +238,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
],