Commit c6e72d30 authored by Pierre Dittgen's avatar Pierre Dittgen
Browse files

Remove unused code

parent 292ba337
......@@ -3,6 +3,7 @@
## next
- Fix error sorting
- Remove unused code
## 0.4.0a7
......
......@@ -123,28 +123,6 @@
</table>
</div>
</div>
{% if report.repair_actions %}
<div id="repair_actions" class="my-4 actions">
<div class="col-lg-6 alert alert-warning">
<p>
La structure de votre fichier a été automatiquement remaniée
<a id="repair_details_link" class="float-right" href="#" title="Voir les détails">détails</a>
</p>
<div id="repair_details_panel" class="d-none">
<ul>
{% for action in report.repair_actions %}
<li>{{ action | commonmark2html | safe}}</li>
{% endfor %}
</ul>
<p>
Il vous appartient d'apporter ces modifications sur votre fichier pour rendre sa structure
valide selon le schéma.
</p>
</div>
</div>
</div>
{% endif %}
{% endif %}
</div>
......@@ -171,7 +149,6 @@
{% endif %}
</h3>
<p>Prévisualisation du fichier source
{% if report.repair_actions %}avec structure réparée{% endif %}
{% if not report.table.errors.body %}
(affichage de {{ source_data.preview_rows_count }}
ligne{% if source_data.preview_rows_count > 1 %}s{% endif %}
......@@ -188,12 +165,4 @@
{% block page_scripts %}
<script src="{{ url_for('static', filename='validata_popover.js') }}"></script>
<script>
// Show detail on 'détails' link click
$('#repair_details_link').click(function(e) {
e.preventDefault();
$(this).addClass("d-none");
$("#repair_details_panel").addClass('d-block');
})
</script>
{% endblock %}
......@@ -200,203 +200,6 @@ def build_ui_errors(errors):
return list(map(improve_err, errors))
def compute_repair_actions(structure_errors):
"""Turn structure errors into repair action informations
"""
def handle_blank_headers(
error_list,
position_code,
action_list,
func=None,
singular_msg_tpl="",
plural_msg_tpl="",
):
"""Factors code for blank-header errors
Warning: error_list parameter is modified in place
"""
blank_headers = [
err
for err in error_list
if err["code"] == "blank-header"
and err["message-data"].get("position") == position_code
]
if blank_headers:
if func is None:
blank_headers_nb = len(blank_headers)
if blank_headers_nb == 1:
action_list.append(singular_msg_tpl)
else:
action_list.append(plural_msg_tpl.format(blank_headers_nb))
else:
func(action_list, blank_headers, singular_msg_tpl, plural_msg_tpl)
for err in blank_headers:
error_list.remove(err)
def handle_extra_duplicate_and_missing_errs(
error_list, err_code, action_list, singular_msg_tpl, plural_msg_tpl
):
"""Factors code for missing headers, extra headers and duplicate headers
Warning: error_list parameter is modified in place
"""
header_errors = [err for err in error_list if err["code"] == err_code]
if not header_errors:
return
col_names_list = [
["`{}`".format(err["message-data"]["column-name"]) for err in header_errors]
]
if err_code == "duplicate-header":
col_names_list.append(
[
"`{}`".format(err["message-data"]["fixed-column-name"])
for err in header_errors
]
)
if len(header_errors) == 1:
action_list.append(
singular_msg_tpl.format(*[cn[0] for cn in col_names_list])
)
else:
action_list.append(
plural_msg_tpl.format(*[", ".join(cn) for cn in col_names_list])
)
for err in header_errors:
error_list.remove(err)
# No error, no info!
if not structure_errors:
return []
# keep a list of processed errors
pending_error_list = structure_errors.copy()
# action informations
action_list = []
# Leading blank headers
handle_blank_headers(
pending_error_list,
"leading",
action_list,
singular_msg_tpl="1 colonne sans en-tête avant les données a été supprimée",
plural_msg_tpl="{} colonnes sans en-tête avant les données ont été supprimées",
)
# inside empty header
def handle_in_blank_headers(
action_list, error_list, singular_msg_tpl, plural_msg_tpl
):
def add_msg(
action_list, columns_nb, before, after, singular_msg_tpl, plural_msg_tpl
):
if columns_nb == 1:
action_list.append(singular_msg_tpl.format(before, after))
else:
action_list.append(plural_msg_tpl.format(columns_nb, before, after))
before, after = None, None
columns_nb = 0
for err in sorted(
error_list, key=lambda elt: elt["message-data"]["column-number"]
):
before_header_name = err["message-data"]["before-header-name"]
after_header_name = err["message-data"]["after-header-name"]
if before_header_name == before and after_header_name == after:
columns_nb += 1
else:
if before is not None:
add_msg(
action_list,
columns_nb,
before,
after,
singular_msg_tpl,
plural_msg_tpl,
)
before = before_header_name
after = after_header_name
columns_nb = 1
add_msg(
action_list, columns_nb, before, after, singular_msg_tpl, plural_msg_tpl
)
handle_blank_headers(
pending_error_list,
"in",
action_list,
func=handle_in_blank_headers,
singular_msg_tpl="1 colonne sans en-tête (située entre les colonnes **{}** et **{}**) a été supprimée",
plural_msg_tpl="{} colonnes sans en-tête (situées entre les colonnes **{}** et **{}**) ont été supprimées",
)
# trailing empty headers
handle_blank_headers(
pending_error_list,
"trailing",
action_list,
singular_msg_tpl="1 colonne sans en-tête après les données a été supprimée",
plural_msg_tpl="{} colonnes sans en-tête après les données ont été supprimées",
)
# wrong-headers-order
wrong_headers_order = [
err for err in pending_error_list if err["code"] == "wrong-headers-order"
]
if wrong_headers_order:
actual_order = wrong_headers_order[0]["message-data"]["actual-order"]
wanted_order = wrong_headers_order[0]["message-data"]["wanted-order"]
def field_list_to_str(field_list):
return ", ".join(["**{}**".format(f) for f in field_list])
action_list.append(
"L'ordre des colonnes du fichier a été rétabli\n- de : {}\n- à : {}\n".format(
field_list_to_str(actual_order), field_list_to_str(wanted_order)
)
)
pending_error_list = [
err for err in pending_error_list if err not in wrong_headers_order
]
# extra-headers
handle_extra_duplicate_and_missing_errs(
pending_error_list,
"extra-header",
action_list,
"La colonne {} inconnue du schéma a été déplacée après les colonnes attendues",
"Les colonnes {} inconnues du schéma ont été déplacées après les colonnes attendues",
)
# duplicate-header
handle_extra_duplicate_and_missing_errs(
pending_error_list,
"duplicate-header",
action_list,
"La colonne {} déjà rencontrée dans le fichier a été renommée en {} et déplacée après les colonnes attendues",
"Les colonnes {} déjà rencontrées dans le fichier ont été respectivement renommées en {} et déplacées après les colonnes attendues",
)
# missing-header
handle_extra_duplicate_and_missing_errs(
pending_error_list,
"missing-header",
action_list,
"La colonne {} absente du fichier a été ajoutée avec un contenu vide",
"Les colonnes {} absentes du fichier ont été ajoutées avec un contenu vide",
)
# unhandled errors (it may normally not happened)
for err in pending_error_list:
action_list.append("err: [{}] {}".format(err["code"], err["message"]))
return action_list
def create_validata_ui_report(validata_core_report, schema_dict):
""" Creates an error report easier to handle and display in templates:
- only one table
......@@ -478,10 +281,6 @@ def create_validata_ui_report(validata_core_report, schema_dict):
rows[-1]["errors"]["row"] = err
ui_report["table"]["errors"]["body_by_rows"] = rows
ui_report["repair_actions"] = compute_repair_actions(
ui_report["table"]["errors"]["structure"]
)
# Sort by error names in statistics
ui_report["table"]["count-by-code"] = {}
stats = {}
......@@ -624,7 +423,6 @@ def validate(schema_instance: SchemaInstance, validata_resource: ValidataResourc
doc_url=schema_instance.doc_url,
pdf_report_url=pdf_report_url,
print_mode=request.args.get("print", "false") == "true",
report_str=json.dumps(ui_report, sort_keys=True, indent=2),
report=ui_report,
schema_current_version=schema_instance.ref,
schema_info=schema_info,
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment