Commit a131fa354e677d862229d59f693d6fcd5f61ed9e

Authored by Bartłomiej Nitoń
1 parent 28b936b4

Added additional examples validation during semantics validation.

dictionary/ajax_lemma_view.py
... ... @@ -43,6 +43,7 @@ from dictionary.validation import find_similar_frames, get_all_test_missing_fram
43 43 get_wrong_aspect_frames, validate_B_frames, get_deriv_miss_frames_message, \
44 44 validate_phraseology_binded_frames, validate_rule_5, \
45 45 validate_examples_and_mark_errors, validate_schemas_and_mark_errors, \
  46 + validate_schemata_for_semantics_and_mark_errors, \
46 47 get_missing_aspects_msg, validate_same_positions_schemata
47 48  
48 49 from semantics.models import LexicalUnitExamples
... ... @@ -2387,10 +2388,12 @@ def validate_new_frames(request, data, id, examples, lemma_examples,
2387 2388  
2388 2389 status_need_validation = False
2389 2390 status_need_examples_check = False
  2391 + status_need_semantic_check = False
2390 2392 try:
2391 2393 status_obj = Lemma_Status.objects.get(id=status_id)
2392 2394 status_need_validation = status_obj.validate
2393 2395 status_need_examples_check = status_obj.check_examples
  2396 + status_need_semantic_check = status_obj.check_semantics
2394 2397 except Lemma_Status.DoesNotExist:
2395 2398 status_obj = None
2396 2399  
... ... @@ -2402,6 +2405,8 @@ def validate_new_frames(request, data, id, examples, lemma_examples,
2402 2405 serialized_frames, error = validate_examples_and_mark_errors(old_object, status_obj, selected_frame_id)
2403 2406 elif status_need_validation or not status_obj:
2404 2407 serialized_frames, error = validate_schemas_and_mark_errors(old_object, status_obj, selected_frame_id)
  2408 + elif status_need_semantic_check:
  2409 + serialized_frames, error = validate_schemata_for_semantics_and_mark_errors(old_object, status_obj, selected_frame_id)
2405 2410  
2406 2411 if error:
2407 2412 return {'id' : '',
... ...
dictionary/validation.py
... ... @@ -480,6 +480,27 @@ def are_examples_approved(lemma, schema, serialized_schema):
480 480 error = True
481 481 return error
482 482  
  483 +################### schemata validation for semantic statuses ##########
  484 +def validate_schemata_for_semantics_and_mark_errors(lemma, status, selected_schema_id):
  485 + error = False
  486 + serialized_schemata = []
  487 + for schema_obj in lemma.frames.all():
  488 + serialized_schema = frameObjToSerializableDict(lemma, schema_obj, True)
  489 + if selected_schema_id and schema_obj.id != selected_schema_id:
  490 + serialized_schemata.append(serialized_schema)
  491 + continue
  492 + if check_schema_for_semantics_and_mark_errors(lemma, status, schema_obj, serialized_schema):
  493 + error = True
  494 + serialized_schemata.append(serialized_schema)
  495 + return serialized_schemata, error
  496 +
  497 +def check_schema_for_semantics_and_mark_errors(lemma, status, schema, serialized_schema):
  498 + error = False
  499 + # WALIDACJA 34: Pod schematem z refl nie mogą być przykłady niepodpięte pod refl
  500 + if check_and_mark_examples_must_use_refl_rule(lemma, schema, serialized_schema):
  501 + error = True
  502 + return error
  503 +
483 504 ###################### schemas validation ##############################
484 505 def validate_schemas_and_mark_errors(lemma, status, selected_frame_id):
485 506 error = False
... ...