From a131fa354e677d862229d59f693d6fcd5f61ed9e Mon Sep 17 00:00:00 2001 From: Bartłomiej Nitoń <bartomiej@raven.(none)> Date: Fri, 19 Feb 2016 11:03:53 +0100 Subject: [PATCH] Added additional examples validation during semantics validation. --- dictionary/ajax_lemma_view.py | 5 +++++ dictionary/validation.py | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+), 0 deletions(-) diff --git a/dictionary/ajax_lemma_view.py b/dictionary/ajax_lemma_view.py index 87de5a9..4a42a1b 100644 --- a/dictionary/ajax_lemma_view.py +++ b/dictionary/ajax_lemma_view.py @@ -43,6 +43,7 @@ from dictionary.validation import find_similar_frames, get_all_test_missing_fram get_wrong_aspect_frames, validate_B_frames, get_deriv_miss_frames_message, \ validate_phraseology_binded_frames, validate_rule_5, \ validate_examples_and_mark_errors, validate_schemas_and_mark_errors, \ + validate_schemata_for_semantics_and_mark_errors, \ get_missing_aspects_msg, validate_same_positions_schemata from semantics.models import LexicalUnitExamples @@ -2387,10 +2388,12 @@ def validate_new_frames(request, data, id, examples, lemma_examples, status_need_validation = False status_need_examples_check = False + status_need_semantic_check = False try: status_obj = Lemma_Status.objects.get(id=status_id) status_need_validation = status_obj.validate status_need_examples_check = status_obj.check_examples + status_need_semantic_check = status_obj.check_semantics except Lemma_Status.DoesNotExist: status_obj = None @@ -2402,6 +2405,8 @@ def validate_new_frames(request, data, id, examples, lemma_examples, serialized_frames, error = validate_examples_and_mark_errors(old_object, status_obj, selected_frame_id) elif status_need_validation or not status_obj: serialized_frames, error = validate_schemas_and_mark_errors(old_object, status_obj, selected_frame_id) + elif status_need_semantic_check: + serialized_frames, error = validate_schemata_for_semantics_and_mark_errors(old_object, status_obj, selected_frame_id) if error: return {'id' : '', diff --git a/dictionary/validation.py b/dictionary/validation.py index db12685..6736fbe 100644 --- a/dictionary/validation.py +++ b/dictionary/validation.py @@ -480,6 +480,27 @@ def are_examples_approved(lemma, schema, serialized_schema): error = True return error +################### schemata validation for semantic statuses ########## +def validate_schemata_for_semantics_and_mark_errors(lemma, status, selected_schema_id): + error = False + serialized_schemata = [] + for schema_obj in lemma.frames.all(): + serialized_schema = frameObjToSerializableDict(lemma, schema_obj, True) + if selected_schema_id and schema_obj.id != selected_schema_id: + serialized_schemata.append(serialized_schema) + continue + if check_schema_for_semantics_and_mark_errors(lemma, status, schema_obj, serialized_schema): + error = True + serialized_schemata.append(serialized_schema) + return serialized_schemata, error + +def check_schema_for_semantics_and_mark_errors(lemma, status, schema, serialized_schema): + error = False + # WALIDACJA 34: Pod schematem z refl nie mogą być przykłady niepodpięte pod refl + if check_and_mark_examples_must_use_refl_rule(lemma, schema, serialized_schema): + error = True + return error + ###################### schemas validation ############################## def validate_schemas_and_mark_errors(lemma, status, selected_frame_id): error = False -- libgit2 0.22.2