Commit cffcfa4cb117067d2ad13cf12a0dc1bc1352ffe8
1 parent
0c9241a6
usuwanie niepowiązanego argumentu Lemma po zapisie
Showing
1 changed file
with
12 additions
and
0 deletions
semantics/saving.py
@@ -15,6 +15,7 @@ def modify_frames(lemma_id, operations, user): | @@ -15,6 +15,7 @@ def modify_frames(lemma_id, operations, user): | ||
15 | make_operations(lemma_id, operations) | 15 | make_operations(lemma_id, operations) |
16 | 16 | ||
17 | def make_operations(lemma_id, operations): | 17 | def make_operations(lemma_id, operations): |
18 | + complements_to_test = set([]) | ||
18 | translation = {'unit_id': {}, 'frame_id': {}, 'complement_id': {}, 'preference_id': {}} | 19 | translation = {'unit_id': {}, 'frame_id': {}, 'complement_id': {}, 'preference_id': {}} |
19 | entry = Lemma.objects.get(id=lemma_id).entry_obj | 20 | entry = Lemma.objects.get(id=lemma_id).entry_obj |
20 | for operation in operations: | 21 | for operation in operations: |
@@ -78,6 +79,7 @@ def make_operations(lemma_id, operations): | @@ -78,6 +79,7 @@ def make_operations(lemma_id, operations): | ||
78 | argument_id = int(schema_data[5]) | 79 | argument_id = int(schema_data[5]) |
79 | alternation = int(schema_data[7]) | 80 | alternation = int(schema_data[7]) |
80 | disconnect(frame_id, complement_id, schema_id, position_id, argument_id, alternation) | 81 | disconnect(frame_id, complement_id, schema_id, position_id, argument_id, alternation) |
82 | + complements_to_test.add((frame_id, complement_id)) | ||
81 | elif operation['operation'] == "assign_role": | 83 | elif operation['operation'] == "assign_role": |
82 | if int(operation['frame_id']) in translation['frame_id']: | 84 | if int(operation['frame_id']) in translation['frame_id']: |
83 | frame_id = translation['frame_id'][int(operation['frame_id'])] | 85 | frame_id = translation['frame_id'][int(operation['frame_id'])] |
@@ -133,6 +135,16 @@ def make_operations(lemma_id, operations): | @@ -133,6 +135,16 @@ def make_operations(lemma_id, operations): | ||
133 | remove_preference(frame_id, complement_id, preference_id) | 135 | remove_preference(frame_id, complement_id, preference_id) |
134 | else: | 136 | else: |
135 | pass | 137 | pass |
138 | + | ||
139 | + for frame_id, complement_id in complements_to_test: | ||
140 | + complements = Complement.objects.filter(id=complement_id) | ||
141 | + if len(complements) > 0: | ||
142 | + complement = complements[0] | ||
143 | + for role in complement.roles.all(): | ||
144 | + if role.role == u'Lemma': | ||
145 | + if len(complement.realizations.all()) == 0: | ||
146 | + remove_argument(frame_id, complement_id) | ||
147 | + | ||
136 | 148 | ||
137 | def create_frame(entry, luids): | 149 | def create_frame(entry, luids): |
138 | frame = SemanticFrame(entry=entry) | 150 | frame = SemanticFrame(entry=entry) |