diff --git a/semantics/saving.py b/semantics/saving.py index 03e8d2f..26bfc15 100644 --- a/semantics/saving.py +++ b/semantics/saving.py @@ -15,6 +15,7 @@ def modify_frames(lemma_id, operations, user): make_operations(lemma_id, operations) def make_operations(lemma_id, operations): + complements_to_test = set([]) translation = {'unit_id': {}, 'frame_id': {}, 'complement_id': {}, 'preference_id': {}} entry = Lemma.objects.get(id=lemma_id).entry_obj for operation in operations: @@ -78,6 +79,7 @@ def make_operations(lemma_id, operations): argument_id = int(schema_data[5]) alternation = int(schema_data[7]) disconnect(frame_id, complement_id, schema_id, position_id, argument_id, alternation) + complements_to_test.add((frame_id, complement_id)) elif operation['operation'] == "assign_role": if int(operation['frame_id']) in translation['frame_id']: frame_id = translation['frame_id'][int(operation['frame_id'])] @@ -133,6 +135,16 @@ def make_operations(lemma_id, operations): remove_preference(frame_id, complement_id, preference_id) else: pass + + for frame_id, complement_id in complements_to_test: + complements = Complement.objects.filter(id=complement_id) + if len(complements) > 0: + complement = complements[0] + for role in complement.roles.all(): + if role.role == u'Lemma': + if len(complement.realizations.all()) == 0: + remove_argument(frame_id, complement_id) + def create_frame(entry, luids): frame = SemanticFrame(entry=entry)