Commit 4d466b16eca613eb60e120b875cbde10bd07fab7
1 parent
c13a529a
Semantics for nouns: fixes for payments, validation, and others.
Showing
11 changed files
with
131 additions
and
72 deletions
accounts/models.py
@@ -279,6 +279,9 @@ class RealizedSemantics(Model): | @@ -279,6 +279,9 @@ class RealizedSemantics(Model): | ||
279 | # wykonane ramki (wypelniane dla semantyka) | 279 | # wykonane ramki (wypelniane dla semantyka) |
280 | made_frames = PositiveIntegerField(db_column='wykonane_ramki', | 280 | made_frames = PositiveIntegerField(db_column='wykonane_ramki', |
281 | default=0) | 281 | default=0) |
282 | + # wspoldzielone ramki (wypelniane dla semantyka) | ||
283 | + related_frames = PositiveIntegerField(db_column='wspoldzielone_ramki', | ||
284 | + default=0) | ||
282 | # poprawione ramki (wypelniane dla supersemantyka) | 285 | # poprawione ramki (wypelniane dla supersemantyka) |
283 | corr_frames = PositiveIntegerField(db_column='poprawione_ramki', | 286 | corr_frames = PositiveIntegerField(db_column='poprawione_ramki', |
284 | default=0) | 287 | default=0) |
dictionary/ajax_lemma_status.py
@@ -117,10 +117,10 @@ def lemma_status_change(request, status_id, lemma_id): | @@ -117,10 +117,10 @@ def lemma_status_change(request, status_id, lemma_id): | ||
117 | not lemma_obj.status.next_statuses.filter(pk=new_status.pk).exists()): | 117 | not lemma_obj.status.next_statuses.filter(pk=new_status.pk).exists()): |
118 | raise AjaxError('wrong change') | 118 | raise AjaxError('wrong change') |
119 | 119 | ||
120 | - actual_semantic_frames = SemanticFrame.objects.none() | 120 | + visible_semantic_frames = SemanticFrame.objects.none() |
121 | next_status = False | 121 | next_status = False |
122 | if(new_status): | 122 | if(new_status): |
123 | - actual_semantic_frames = backup_lemma_and_get_frames(lemma_obj) | 123 | + visible_semantic_frames = backup_lemma_and_get_frames(lemma_obj) |
124 | 124 | ||
125 | if(new_status and new_status.priority > lemma_obj.status.priority): | 125 | if(new_status and new_status.priority > lemma_obj.status.priority): |
126 | next_status = True | 126 | next_status = True |
@@ -223,8 +223,10 @@ def lemma_status_change(request, status_id, lemma_id): | @@ -223,8 +223,10 @@ def lemma_status_change(request, status_id, lemma_id): | ||
223 | and next_status): | 223 | and next_status): |
224 | ### naliczanie oplat za gotowosc semantyczna | 224 | ### naliczanie oplat za gotowosc semantyczna |
225 | frame_value = 12.0 | 225 | frame_value = 12.0 |
226 | - update_sem_stats_ready_s(lemma_obj.entry_obj, actual_semantic_frames, | ||
227 | - lemma_obj.semanticist, new_status, frame_value) | 226 | + related_frame_value = 2.0 |
227 | + update_sem_stats_ready_s(lemma_obj.entry_obj, visible_semantic_frames, | ||
228 | + lemma_obj.semanticist, new_status, frame_value, | ||
229 | + related_frame_value) | ||
228 | add_new_frames_to_phraseologic_propositions(lemma_obj) | 230 | add_new_frames_to_phraseologic_propositions(lemma_obj) |
229 | changed = True | 231 | changed = True |
230 | # zmiana statusu hasla na sprawdzone semantycznie | 232 | # zmiana statusu hasla na sprawdzone semantycznie |
@@ -236,8 +238,8 @@ def lemma_status_change(request, status_id, lemma_id): | @@ -236,8 +238,8 @@ def lemma_status_change(request, status_id, lemma_id): | ||
236 | part_bonus = 2.0 | 238 | part_bonus = 2.0 |
237 | connection_bonus = 0.1 | 239 | connection_bonus = 0.1 |
238 | ### naliczanie oplat za sprawdzenie i bonusow | 240 | ### naliczanie oplat za sprawdzenie i bonusow |
239 | - update_sem_stats_conf_s(entry=lemma_obj.entry_obj, | ||
240 | - semantic_frames=actual_semantic_frames, | 241 | + update_sem_stats_conf_s(entry=lemma_obj.entry_obj, |
242 | + checked_sem_frames_backup=visible_semantic_frames, | ||
241 | semanticist=lemma_obj.semanticist, | 243 | semanticist=lemma_obj.semanticist, |
242 | supersemanticist=request.user, | 244 | supersemanticist=request.user, |
243 | status=new_status, | 245 | status=new_status, |
@@ -273,7 +275,7 @@ def lemma_status_change(request, status_id, lemma_id): | @@ -273,7 +275,7 @@ def lemma_status_change(request, status_id, lemma_id): | ||
273 | lemma=lemma_obj, | 275 | lemma=lemma_obj, |
274 | status=new_status) | 276 | status=new_status) |
275 | status_change.save() | 277 | status_change.save() |
276 | - status_change.semantic_frames.add(*actual_semantic_frames.all()) | 278 | + status_change.semantic_frames.add(*visible_semantic_frames.all()) |
277 | lemma_obj.status_history.add(status_change) | 279 | lemma_obj.status_history.add(status_change) |
278 | 280 | ||
279 | if new_status: | 281 | if new_status: |
@@ -472,45 +474,59 @@ def update_lemma_stats_conf_f(lemma, phraseologist, superphraseologist, status, | @@ -472,45 +474,59 @@ def update_lemma_stats_conf_f(lemma, phraseologist, superphraseologist, status, | ||
472 | phraseologist.user_stats.phraseology_real_history.add(phraseologist_real_lemma) | 474 | phraseologist.user_stats.phraseology_real_history.add(phraseologist_real_lemma) |
473 | 475 | ||
474 | ####################### semantics ############################# | 476 | ####################### semantics ############################# |
475 | -def update_sem_stats_ready_s(entry, semantic_frames, semanticist, status, frame_value): | ||
476 | - actual_frames_count = semantic_frames.count() | ||
477 | - sem_dict = {'made_frames': actual_frames_count, | ||
478 | - 'cash': frame_value*float(actual_frames_count)} | 477 | +def update_sem_stats_ready_s(entry, visible_semantic_frames, semanticist, status, |
478 | + frame_value, related_frame_value): | ||
479 | + actual_frames = entry.actual_frames() | ||
480 | + actual_frames_count = actual_frames.count() | ||
479 | 481 | ||
480 | - realized_semantics = RealizedSemantics(entry=entry, cash=sem_dict['cash'], | ||
481 | - made_frames=sem_dict['made_frames'], | 482 | + related_frames = entry.related_frames() |
483 | + related_frames_count = related_frames.count() | ||
484 | + | ||
485 | + cash = frame_value*float(actual_frames_count) + related_frame_value*float(related_frames_count) | ||
486 | + | ||
487 | + | ||
488 | + realized_semantics = RealizedSemantics(entry=entry, cash=cash, | ||
489 | + made_frames=actual_frames_count, | ||
490 | + related_frames=related_frames_count, | ||
482 | status=status, bonus=False) | 491 | status=status, bonus=False) |
483 | realized_semantics.save() | 492 | realized_semantics.save() |
484 | - realized_semantics.frames.add(*semantic_frames.all()) | 493 | + realized_semantics.frames.add(*visible_semantic_frames.all()) |
485 | semanticist.user_stats.semantics_real_history.add(realized_semantics) | 494 | semanticist.user_stats.semantics_real_history.add(realized_semantics) |
486 | 495 | ||
487 | -def update_sem_stats_conf_s(entry, semantic_frames, semanticist, supersemanticist, status, | ||
488 | - checked_frame_value, corrected_frame_value, | ||
489 | - bonus_factor, part_bonus_factor, connection_bonus): | 496 | +def update_sem_stats_conf_s(entry, checked_sem_frames_backup, semanticist, supersemanticist, status, |
497 | + checked_frame_value, corrected_frame_value, | ||
498 | + bonus_factor, part_bonus_factor, connection_bonus): | ||
490 | ready_statuses = Lemma_Status.objects.filter(type__sym_name='ready_s') | 499 | ready_statuses = Lemma_Status.objects.filter(type__sym_name='ready_s') |
491 | q_ready_statuses = [Q(status=ready_status) for ready_status in ready_statuses.all()] | 500 | q_ready_statuses = [Q(status=ready_status) for ready_status in ready_statuses.all()] |
492 | 501 | ||
493 | ready_semantics = RealizedSemantics.objects.filter(reduce(operator.or_, q_ready_statuses)) | 502 | ready_semantics = RealizedSemantics.objects.filter(reduce(operator.or_, q_ready_statuses)) |
494 | - ready_sem_frames= ready_semantics.get(entry=entry).frames | ||
495 | - checked_sem_frames = semantic_frames | ||
496 | - ready_to_checked_diffs = get_frames_differences(ready_sem_frames.all(), checked_sem_frames.all()) | ||
497 | - checked_to_ready_diffs = get_frames_differences(checked_sem_frames.all(), ready_sem_frames.all()) | 503 | + ready_sem_visible_frames = ready_semantics.get(entry=entry).frames |
504 | + ready_sem_actual_frames = entry.filter_local(ready_sem_visible_frames) | ||
505 | + ready_sem_related_frames = entry.filter_related(ready_sem_visible_frames) | ||
506 | + | ||
507 | + checked_sem_actual_frames = entry.actual_frames() | ||
508 | + checked_sem_related_frames = entry.related_frames() | ||
509 | + | ||
510 | + actual_ready_to_checked_diffs = get_frames_differences(ready_sem_actual_frames.all(), checked_sem_actual_frames.all()) | ||
511 | + actual_checked_to_ready_diffs = get_frames_differences(checked_sem_actual_frames.all(), ready_sem_actual_frames.all()) | ||
512 | + | ||
513 | + visible_ready_to_checked_diffs = get_frames_differences(ready_sem_visible_frames.all(), checked_sem_frames_backup.all()) | ||
498 | 514 | ||
499 | - connections_amount = count_connections(ready_to_checked_diffs) | ||
500 | - sem_cash = (bonus_factor*float(len(ready_to_checked_diffs['matching_frames'])) + | ||
501 | - part_bonus_factor*float(len(ready_to_checked_diffs['part_matching_frames'])) + | 515 | + connections_amount = count_connections(entry, visible_ready_to_checked_diffs) |
516 | + sem_cash = (bonus_factor*float(len(actual_ready_to_checked_diffs['matching_frames'])) + | ||
517 | + part_bonus_factor*float(len(actual_ready_to_checked_diffs['part_matching_frames'])) + | ||
502 | connection_bonus*float(connections_amount)) | 518 | connection_bonus*float(connections_amount)) |
503 | - sem_dict = {'same_frames': len(ready_to_checked_diffs['matching_frames']), | ||
504 | - 'part_same_frames': len(ready_to_checked_diffs['part_matching_frames']), | ||
505 | - 'wrong_frames': len(ready_to_checked_diffs['missing_frames']), | 519 | + sem_dict = {'same_frames': len(actual_ready_to_checked_diffs['matching_frames']), |
520 | + 'part_same_frames': len(actual_ready_to_checked_diffs['part_matching_frames']), | ||
521 | + 'wrong_frames': len(actual_ready_to_checked_diffs['missing_frames']), | ||
506 | 'added_connections': connections_amount, | 522 | 'added_connections': connections_amount, |
507 | 'cash': sem_cash} | 523 | 'cash': sem_cash} |
508 | 524 | ||
509 | - supersem_cash = (float(len(checked_to_ready_diffs['missing_frames'])+len(checked_to_ready_diffs['part_matching_frames']))*corrected_frame_value + | ||
510 | - float(len(ready_to_checked_diffs['matching_frames']))*checked_frame_value) | ||
511 | - supersem_dict = {'same_frames': len(checked_to_ready_diffs['matching_frames']), | ||
512 | - 'part_same_frames': len(checked_to_ready_diffs['part_matching_frames']), | ||
513 | - 'redo_frames': len(checked_to_ready_diffs['missing_frames']), | 525 | + supersem_cash = (float(len(actual_checked_to_ready_diffs['missing_frames'])+len(actual_checked_to_ready_diffs['part_matching_frames']))*corrected_frame_value + |
526 | + float(len(actual_ready_to_checked_diffs['matching_frames']))*checked_frame_value) | ||
527 | + supersem_dict = {'same_frames': len(actual_checked_to_ready_diffs['matching_frames']), | ||
528 | + 'part_same_frames': len(actual_checked_to_ready_diffs['part_matching_frames']), | ||
529 | + 'redo_frames': len(actual_checked_to_ready_diffs['missing_frames']), | ||
514 | 'cash': supersem_cash} | 530 | 'cash': supersem_cash} |
515 | 531 | ||
516 | supersem_real_semantics = RealizedSemantics(entry=entry, | 532 | supersem_real_semantics = RealizedSemantics(entry=entry, |
@@ -521,7 +537,7 @@ def update_sem_stats_conf_s(entry, semantic_frames, semanticist, supersemanticis | @@ -521,7 +537,7 @@ def update_sem_stats_conf_s(entry, semantic_frames, semanticist, supersemanticis | ||
521 | status=status, | 537 | status=status, |
522 | bonus=False) | 538 | bonus=False) |
523 | supersem_real_semantics.save() | 539 | supersem_real_semantics.save() |
524 | - supersem_real_semantics.frames.add(*semantic_frames.all()) | 540 | + supersem_real_semantics.frames.add(*checked_sem_frames_backup.all()) |
525 | supersemanticist.user_stats.semantics_real_history.add(supersem_real_semantics) | 541 | supersemanticist.user_stats.semantics_real_history.add(supersem_real_semantics) |
526 | 542 | ||
527 | sem_real_semantics = RealizedSemantics(entry=entry, | 543 | sem_real_semantics = RealizedSemantics(entry=entry, |
@@ -533,15 +549,16 @@ def update_sem_stats_conf_s(entry, semantic_frames, semanticist, supersemanticis | @@ -533,15 +549,16 @@ def update_sem_stats_conf_s(entry, semantic_frames, semanticist, supersemanticis | ||
533 | status=status, | 549 | status=status, |
534 | bonus=True) | 550 | bonus=True) |
535 | sem_real_semantics.save() | 551 | sem_real_semantics.save() |
536 | - sem_real_semantics.frames.add(*semantic_frames.all()) | 552 | + sem_real_semantics.frames.add(*checked_sem_frames_backup.all()) |
537 | semanticist.user_stats.semantics_real_history.add(sem_real_semantics) | 553 | semanticist.user_stats.semantics_real_history.add(sem_real_semantics) |
538 | 554 | ||
539 | -def count_connections(differences): | ||
540 | - amount = 0 | 555 | +def count_connections(entry, differences): |
556 | + amount = 0 | ||
557 | + schemata = entry.actual_schemata() | ||
541 | for frame in differences['matching_frames']: | 558 | for frame in differences['matching_frames']: |
542 | - amount += frame.connected_schemata().count() | 559 | + amount += frame.connected_schemata().filter(pk__in=schemata).count() |
543 | for frame in differences['part_matching_frames']: | 560 | for frame in differences['part_matching_frames']: |
544 | - amount += frame.connected_schemata().count() | 561 | + amount += frame.connected_schemata().filter(pk__in=schemata).count() |
545 | return amount | 562 | return amount |
546 | 563 | ||
547 | def remove_semantic_payments(entry): | 564 | def remove_semantic_payments(entry): |
dictionary/ajax_lemma_view.py
@@ -830,12 +830,24 @@ def disrelate_entries(request, lemma_id, preview_lemma_id): | @@ -830,12 +830,24 @@ def disrelate_entries(request, lemma_id, preview_lemma_id): | ||
830 | error, lemma, preview_lemma = check_if_selected_and_get(lemma_id, preview_lemma_id) | 830 | error, lemma, preview_lemma = check_if_selected_and_get(lemma_id, preview_lemma_id) |
831 | if not error: | 831 | if not error: |
832 | error = check_if_has_rights_to_relate(lemma, request.user) | 832 | error = check_if_has_rights_to_relate(lemma, request.user) |
833 | + if not error: | ||
834 | + error = check_if_share_sematic_frames(lemma, preview_lemma) | ||
833 | if error: | 835 | if error: |
834 | raise AjaxError(error) | 836 | raise AjaxError(error) |
835 | else: | 837 | else: |
836 | cancel_entries_relation(request, lemma, preview_lemma) | 838 | cancel_entries_relation(request, lemma, preview_lemma) |
837 | return {} | 839 | return {} |
838 | 840 | ||
841 | +def check_if_share_sematic_frames(lemma, preview_lemma): | ||
842 | + error = '' | ||
843 | + lemma_visible_frames = lemma.entry_obj.visible_frames() | ||
844 | + preview_visible_frames = preview_lemma.entry_obj.visible_frames() | ||
845 | + | ||
846 | + if (lemma_visible_frames.filter(pk__in=preview_visible_frames).exists() or | ||
847 | + preview_visible_frames.filter(pk__in=lemma_visible_frames).exists()): | ||
848 | + error = 'shared frames' | ||
849 | + return error | ||
850 | + | ||
839 | def cancel_entries_relation(request, lemma, preview_lemma): | 851 | def cancel_entries_relation(request, lemma, preview_lemma): |
840 | lemma_entry, preview_lemma_entry = get_entries(lemma, preview_lemma) | 852 | lemma_entry, preview_lemma_entry = get_entries(lemma, preview_lemma) |
841 | lemma_entry.rel_entries.remove(preview_lemma_entry) | 853 | lemma_entry.rel_entries.remove(preview_lemma_entry) |
dictionary/ajax_user_stats.py
@@ -239,6 +239,9 @@ def get_semantics_stats(user): | @@ -239,6 +239,9 @@ def get_semantics_stats(user): | ||
239 | ncorr_frames = RealizedSemantics.objects.filter(user_stats__user=user).aggregate(Sum('ncorr_frames'))['ncorr_frames__sum'] | 239 | ncorr_frames = RealizedSemantics.objects.filter(user_stats__user=user).aggregate(Sum('ncorr_frames'))['ncorr_frames__sum'] |
240 | if ncorr_frames == None: | 240 | if ncorr_frames == None: |
241 | ncorr_frames = 0 | 241 | ncorr_frames = 0 |
242 | + related_frames = RealizedSemantics.objects.filter(user_stats__user=user).aggregate(Sum('related_frames'))['related_frames__sum'] | ||
243 | + if related_frames == None: | ||
244 | + related_frames = 0 | ||
242 | made_frames = RealizedSemantics.objects.filter(user_stats__user=user).aggregate(Sum('made_frames'))['made_frames__sum'] | 245 | made_frames = RealizedSemantics.objects.filter(user_stats__user=user).aggregate(Sum('made_frames'))['made_frames__sum'] |
243 | if made_frames == None: | 246 | if made_frames == None: |
244 | made_frames = 0 | 247 | made_frames = 0 |
@@ -257,6 +260,7 @@ def get_semantics_stats(user): | @@ -257,6 +260,7 @@ def get_semantics_stats(user): | ||
257 | 'corr_frames': corr_frames, | 260 | 'corr_frames': corr_frames, |
258 | 'part_corr_frames': part_corr_frames, | 261 | 'part_corr_frames': part_corr_frames, |
259 | 'checked_frames': ncorr_frames+corr_frames+part_corr_frames, | 262 | 'checked_frames': ncorr_frames+corr_frames+part_corr_frames, |
263 | + 'related_frames': related_frames, | ||
260 | 'made_frames': made_frames, | 264 | 'made_frames': made_frames, |
261 | 'efficacy': round(efficacy, 2), | 265 | 'efficacy': round(efficacy, 2), |
262 | 'added_connections' : added_connections} | 266 | 'added_connections' : added_connections} |
dictionary/models.py
@@ -1369,7 +1369,7 @@ class AspectRelationsGroup(Model): | @@ -1369,7 +1369,7 @@ class AspectRelationsGroup(Model): | ||
1369 | return ','.join(str_ls) | 1369 | return ','.join(str_ls) |
1370 | 1370 | ||
1371 | class Entry(Model): | 1371 | class Entry(Model): |
1372 | - name = CharField(max_length=64, db_column='nazwa') # usunieto , unique=True | 1372 | + name = CharField(max_length=64, db_column='nazwa') |
1373 | # czesc mowy | 1373 | # czesc mowy |
1374 | pos = ForeignKey('POS', db_column='czesc_mowy', related_name='entries') | 1374 | pos = ForeignKey('POS', db_column='czesc_mowy', related_name='entries') |
1375 | # powiazane lematy | 1375 | # powiazane lematy |
@@ -1395,23 +1395,45 @@ class Entry(Model): | @@ -1395,23 +1395,45 @@ class Entry(Model): | ||
1395 | ('change_semantics', u'Może edytować semantykę.'), | 1395 | ('change_semantics', u'Może edytować semantykę.'), |
1396 | ('view_semantics', u'Może oglądać semantykę.'), | 1396 | ('view_semantics', u'Może oglądać semantykę.'), |
1397 | ) | 1397 | ) |
1398 | - | 1398 | + |
1399 | + def related_frames(self): | ||
1400 | + visible = self.visible_frames() | ||
1401 | + actual = self.actual_frames() | ||
1402 | + return visible.exclude(pk__in=actual) | ||
1403 | + | ||
1404 | + def visible_frames(self): | ||
1405 | + frames = [] | ||
1406 | + for frame in self.all_frames(): | ||
1407 | + for lu in frame.lexical_units.all(): | ||
1408 | + if self.meanings.filter(pk=lu.pk).exists(): | ||
1409 | + frames.append(frame.pk) | ||
1410 | + break | ||
1411 | + return get_model('semantics', 'SemanticFrame').objects.filter(pk__in=frames) | ||
1412 | + | ||
1413 | + def all_frames(self): | ||
1414 | + frames = self.actual_frames() | ||
1415 | + for entry in self.rel_entries.all(): | ||
1416 | + new_frames = entry.actual_frames() | ||
1417 | + frames |= new_frames | ||
1418 | + return get_model('semantics', 'SemanticFrame').objects.filter(pk__in=frames) | ||
1419 | + | ||
1399 | def actual_frames(self): | 1420 | def actual_frames(self): |
1400 | - # frame_ids = [] | ||
1401 | - # lexical_units = self.meanings.order_by('sense') | ||
1402 | - # for lexical_unit in lexical_units: | ||
1403 | - # frame_ids.extend([f.id for f in lexical_unit.actual_frames()]) | ||
1404 | - # return get_model('semantics', 'SemanticFrame').objects.filter(id__in=list(set(frame_ids))) | ||
1405 | return self.semantic_frames.filter(next__isnull=True, removed=False) | 1421 | return self.semantic_frames.filter(next__isnull=True, removed=False) |
1422 | + | ||
1423 | + def actual_schemata(self): | ||
1424 | + return self.lemmas.get(old=False).frames.all() | ||
1425 | + | ||
1426 | + def filter_local(self, frames): | ||
1427 | + return frames.filter(pk__in=self.semantic_frames.all()) | ||
1428 | + | ||
1429 | + def filter_related(self, frames): | ||
1430 | + return frames.exclude(pk__in=self.semantic_frames.all()) | ||
1406 | 1431 | ||
1407 | def matching_connections(self, schema, position, phrase_type): | 1432 | def matching_connections(self, schema, position, phrase_type): |
1408 | 1433 | ||
1409 | matching_connections = [] | 1434 | matching_connections = [] |
1410 | 1435 | ||
1411 | - frames = self.actual_frames() | ||
1412 | - for entry in self.rel_entries.all(): | ||
1413 | - new_frames = entry.actual_frames() | ||
1414 | - frames |= new_frames | 1436 | + frames = self.visible_frames() |
1415 | 1437 | ||
1416 | for frame in frames: | 1438 | for frame in frames: |
1417 | for compl in frame.complements.all(): | 1439 | for compl in frame.complements.all(): |
dictionary/saving.py
@@ -9,12 +9,8 @@ from wordnet.models import LexicalUnit | @@ -9,12 +9,8 @@ from wordnet.models import LexicalUnit | ||
9 | def get_semantic_operations(lemma, schemata_conversions): | 9 | def get_semantic_operations(lemma, schemata_conversions): |
10 | connections = [] | 10 | connections = [] |
11 | operations = [] | 11 | operations = [] |
12 | - # frames = lemma.entry_obj.actual_frames() | ||
13 | 12 | ||
14 | - frames = lemma.entry_obj.actual_frames() | ||
15 | - for entry in lemma.entry_obj.rel_entries.all(): | ||
16 | - new_frames = entry.actual_frames() | ||
17 | - frames |= new_frames | 13 | + frames = lemma.entry_obj.visible_frames() |
18 | 14 | ||
19 | for conv in schemata_conversions: | 15 | for conv in schemata_conversions: |
20 | schema_operations = get_reconnect_operations_and_extend_connections(frames, | 16 | schema_operations = get_reconnect_operations_and_extend_connections(frames, |
dictionary/static/js/lemma-view.js
@@ -3567,13 +3567,15 @@ function restore_lemma() { | @@ -3567,13 +3567,15 @@ function restore_lemma() { | ||
3567 | HideProgressAnimation(); | 3567 | HideProgressAnimation(); |
3568 | error_alert('Nie zaznaczono hasła w zakładce "Schematy" lub "Podglądzie hasła".'); | 3568 | error_alert('Nie zaznaczono hasła w zakładce "Schematy" lub "Podglądzie hasła".'); |
3569 | return false; | 3569 | return false; |
3570 | - } | ||
3571 | - else if (result == 'can not edit') { | 3570 | + } else if (result == 'can not edit') { |
3572 | HideProgressAnimation(); | 3571 | HideProgressAnimation(); |
3573 | error_alert('Brak uprawnień do edycji hasła.'); | 3572 | error_alert('Brak uprawnień do edycji hasła.'); |
3574 | return false; | 3573 | return false; |
3575 | - } | ||
3576 | - else { | 3574 | + } else if (result == 'shared frames') { |
3575 | + HideProgressAnimation(); | ||
3576 | + error_alert('Nie można anulować: Hasła współdzielą ramy semantyczne.'); | ||
3577 | + return false; | ||
3578 | + } else { | ||
3577 | HideProgressAnimation(); | 3579 | HideProgressAnimation(); |
3578 | return true; | 3580 | return true; |
3579 | } | 3581 | } |
dictionary/templates/sel_user_stats.html
@@ -123,12 +123,13 @@ | @@ -123,12 +123,13 @@ | ||
123 | <table class='PaymentsTable'> | 123 | <table class='PaymentsTable'> |
124 | <tr> | 124 | <tr> |
125 | <td class='EmptyCell' colspan=1></td> | 125 | <td class='EmptyCell' colspan=1></td> |
126 | - <td class='ColumnHeader' colspan=7>Semantycy:</td> | 126 | + <td class='ColumnHeader' colspan=8>Semantycy:</td> |
127 | <td class='ColumnHeader' colspan=3>Supersemantycy:</td> | 127 | <td class='ColumnHeader' colspan=3>Supersemantycy:</td> |
128 | </tr> | 128 | </tr> |
129 | <tr> | 129 | <tr> |
130 | <td class='ColumnHeader'>Kwota za wykonaną pracę:</td> | 130 | <td class='ColumnHeader'>Kwota za wykonaną pracę:</td> |
131 | <td class='ColumnHeader'>Bonus:</td> | 131 | <td class='ColumnHeader'>Bonus:</td> |
132 | + <td class='ColumnHeader'>Współdzielone ramy:</td> | ||
132 | <td class='ColumnHeader'>Wykonane ramy:</td> | 133 | <td class='ColumnHeader'>Wykonane ramy:</td> |
133 | <td class='ColumnHeader'>Poprawnie wykonane ramy:</td> | 134 | <td class='ColumnHeader'>Poprawnie wykonane ramy:</td> |
134 | <td class='ColumnHeader'>Częściowo poprawnie wykonane ramy:</td> | 135 | <td class='ColumnHeader'>Częściowo poprawnie wykonane ramy:</td> |
@@ -142,6 +143,7 @@ | @@ -142,6 +143,7 @@ | ||
142 | <tr> | 143 | <tr> |
143 | <td>{{semantics_work_stats.earned_cash}} zł</td> | 144 | <td>{{semantics_work_stats.earned_cash}} zł</td> |
144 | <td>{{semantics_work_stats.bonus_cash}} zł</td> | 145 | <td>{{semantics_work_stats.bonus_cash}} zł</td> |
146 | + <td>{{semantics_work_stats.related_frames}}</td> | ||
145 | <td>{{semantics_work_stats.made_frames}}</td> | 147 | <td>{{semantics_work_stats.made_frames}}</td> |
146 | <td>{{semantics_work_stats.prop_frames}}</td> | 148 | <td>{{semantics_work_stats.prop_frames}}</td> |
147 | <td>{{semantics_work_stats.part_prop_frames}}</td> | 149 | <td>{{semantics_work_stats.part_prop_frames}}</td> |
semantics/management/commands/find_hanging_connections.py
@@ -16,7 +16,7 @@ class Command(BaseCommand): | @@ -16,7 +16,7 @@ class Command(BaseCommand): | ||
16 | def find_hanging_connections(): | 16 | def find_hanging_connections(): |
17 | lemmas = Lemma.objects.filter(old=False).order_by('entry_obj__name') | 17 | lemmas = Lemma.objects.filter(old=False).order_by('entry_obj__name') |
18 | for lemma in lemmas: | 18 | for lemma in lemmas: |
19 | - frames = lemma.entry_obj.actual_frames() | 19 | + frames = lemma.entry_obj.visible_frames() |
20 | for frame in frames: | 20 | for frame in frames: |
21 | for compl in frame.complements.all(): | 21 | for compl in frame.complements.all(): |
22 | for real in compl.realizations.all(): | 22 | for real in compl.realizations.all(): |
semantics/validation.py
@@ -8,15 +8,15 @@ from semantics.utils import get_structural_matching_frame | @@ -8,15 +8,15 @@ from semantics.utils import get_structural_matching_frame | ||
8 | 8 | ||
9 | def validate_frames(lemma_id): | 9 | def validate_frames(lemma_id): |
10 | lemma = Lemma.objects.get(id=lemma_id) | 10 | lemma = Lemma.objects.get(id=lemma_id) |
11 | - actual_frames = lemma.entry_obj.actual_frames() | 11 | + visible_frames = lemma.entry_obj.visible_frames() |
12 | error_msg = u'' | 12 | error_msg = u'' |
13 | - for frame in actual_frames.all(): | ||
14 | - error_msg = frame_valid(lemma, frame, actual_frames) | 13 | + for frame in visible_frames.all(): |
14 | + error_msg = frame_valid(lemma, frame, visible_frames) | ||
15 | if error_msg: | 15 | if error_msg: |
16 | break | 16 | break |
17 | return error_msg | 17 | return error_msg |
18 | 18 | ||
19 | -def frame_valid(lemma, frame, actual_frames): | 19 | +def frame_valid(lemma, frame, frames): |
20 | error_msg = '' | 20 | error_msg = '' |
21 | complements = frame.complements.all() | 21 | complements = frame.complements.all() |
22 | if not arguments_exists(complements): | 22 | if not arguments_exists(complements): |
@@ -33,7 +33,7 @@ def frame_valid(lemma, frame, actual_frames): | @@ -33,7 +33,7 @@ def frame_valid(lemma, frame, actual_frames): | ||
33 | error_msg = u'Semantyka: Rama semantyczna %d zawiera argumenty bez zdefiniowanych preferencji selekcyjnych.' % frame.id | 33 | error_msg = u'Semantyka: Rama semantyczna %d zawiera argumenty bez zdefiniowanych preferencji selekcyjnych.' % frame.id |
34 | elif not examples_added(frame): | 34 | elif not examples_added(frame): |
35 | error_msg = u'Semantyka: Rama semantyczna %d nie ma dopiętych przykładów.' % frame.id | 35 | error_msg = u'Semantyka: Rama semantyczna %d nie ma dopiętych przykładów.' % frame.id |
36 | - elif duplicates_exists(frame, actual_frames): | 36 | + elif duplicates_exists(frame, frames): |
37 | error_msg = u'Semantyka: Rama semantyczna %d posiada duplikaty.' % frame.id | 37 | error_msg = u'Semantyka: Rama semantyczna %d posiada duplikaty.' % frame.id |
38 | elif not schemas_reflex_agreed(lemma, frame): | 38 | elif not schemas_reflex_agreed(lemma, frame): |
39 | error_msg = u'Semantyka: Rama semantyczna %d ma dopięte elementy o niezgodnej zwrotności.' % frame.id | 39 | error_msg = u'Semantyka: Rama semantyczna %d ma dopięte elementy o niezgodnej zwrotności.' % frame.id |
@@ -107,8 +107,12 @@ def examples_added(frame): | @@ -107,8 +107,12 @@ def examples_added(frame): | ||
107 | return True | 107 | return True |
108 | return False | 108 | return False |
109 | 109 | ||
110 | -def duplicates_exists(frame, actual_frames): | ||
111 | - frames_to_check = actual_frames.exclude(id=frame.id) | 110 | +def duplicates_exists(frame, frames): |
111 | + # frazeologicznych ram nie sprawdzamy | ||
112 | + if frame.complements.filter(roles__role='Lemma').exists(): | ||
113 | + return False | ||
114 | + | ||
115 | + frames_to_check = frames.exclude(id=frame.id) | ||
112 | if get_structural_matching_frame(frames_to_check, frame): | 116 | if get_structural_matching_frame(frames_to_check, frame): |
113 | return True | 117 | return True |
114 | return False | 118 | return False |
@@ -236,7 +240,7 @@ def validate_schemas(lemma_id): | @@ -236,7 +240,7 @@ def validate_schemas(lemma_id): | ||
236 | return error_msg | 240 | return error_msg |
237 | 241 | ||
238 | def all_schemas_used(lemma): | 242 | def all_schemas_used(lemma): |
239 | - frames = lemma.entry_obj.actual_frames() | 243 | + frames = lemma.entry_obj.visible_frames() |
240 | schemas = lemma.frames | 244 | schemas = lemma.frames |
241 | for schema in schemas.all(): | 245 | for schema in schemas.all(): |
242 | if not schema_is_bad(lemma, schema) and not schema_used(schema, frames): | 246 | if not schema_is_bad(lemma, schema) and not schema_used(schema, frames): |
semantics/views.py
@@ -92,10 +92,7 @@ def create_frames_context(lemma_id, user): | @@ -92,10 +92,7 @@ def create_frames_context(lemma_id, user): | ||
92 | frames_dict = {} | 92 | frames_dict = {} |
93 | frame_units = {} | 93 | frame_units = {} |
94 | 94 | ||
95 | - frames = lemma.entry_obj.actual_frames() | ||
96 | - for entry in connected: | ||
97 | - new_frames = entry.actual_frames() | ||
98 | - frames |= new_frames | 95 | + frames = lemma.entry_obj.all_frames() |
99 | 96 | ||
100 | for frame in frames: | 97 | for frame in frames: |
101 | alternations[frame.id] = {} | 98 | alternations[frame.id] = {} |