diff --git a/entries/views.py b/entries/views.py index 0de4763e1442c8a422ce0c4299a0f205731d726e..40da2f32b225a6729a07df85351bd8b496f5f02c 100644 --- a/entries/views.py +++ b/entries/views.py @@ -21,7 +21,7 @@ from connections.models import Entry, Subentry, ArgumentConnection, RealisationD from meanings.models import LexicalUnit from syntax.models import NaturalLanguageDescription, Schema from semantics.models import Frame, PredefinedSelectionalPreference, SelectivePreferenceRelations, SemanticRole, \ - RoleAttribute, RoleSubAttribute + RoleAttribute, RoleSubAttribute, SelectionalPreferenceRelation from common.decorators import ajax_required, ajax from unifier.models import UnifiedFrame @@ -1102,7 +1102,7 @@ def ajax_role_sub_attributes(request): @ajax(method='get', encode_result=True) def ajax_relations(request): - relations = [{"id": relation.plwn_id, "content": relation.name} for relation in SelectivePreferenceRelations.objects.all()] + relations = [{"id": relation.id, "content": relation.key} for relation in SelectionalPreferenceRelation.objects.all()] context = { 'relations': relations, diff --git a/unifier/views.py b/unifier/views.py index 6f105c523c028d33f76f842e515863f5127862d5..307eb2027bcc376822f78c3f6d554e14285b7c45 100644 --- a/unifier/views.py +++ b/unifier/views.py @@ -86,6 +86,13 @@ def check_sysnet_hierarchy_constraints(synset_preference_ids, unified_frame_argu synset_ids_list = list(synset_ids_map) synset_ids_list.extend(predefined_synset_ids) + for predefined in unified_frame_argument.predefined.all(): + pred_sel_pref = PredefinedSelectionalPreference.objects.get(id=predefined.pk) + if pred_sel_pref.name == 'ALL': + return {"succ": False, "conflict_hyponym": None, + "conflict_hyperonym": None, + "conflict_exists": "Wybrana preferencja selekcyjna konfliktuje z predefiniowaną preferencją selekcyjną ALL."} + for synset_preference_id in synset_preference_ids: conflict_hyponym, conflict_hyperonym, conflict_exists = synset_hierarchy_constraint_check(int(synset_preference_id), set(synset_ids_list)) @@ -147,6 +154,7 @@ def save_bunch_of_preferences_base(frame_id, complement_id, predefined_preferenc return {'succ': True} + @ajax_required @transaction.atomic def save_predefined_preference(request): @@ -168,21 +176,25 @@ def save_predefined_preference_base(frame_id, complement_id, predefined_preferen predefined_synset_ids = [] pred_sel_pref = PredefinedSelectionalPreference.objects.get(id=predefined_preference_id) - if pred_sel_pref.name == 'ALL' and len(unified_frame_argument.predefined.all()) > 0: - return {"succ": False, "conflict_hyponym": None, + if pred_sel_pref.name == 'ALL': + if len(unified_frame_argument.predefined.all()) > 0 or len(unified_frame_argument.synsets.all()) > 0 or \ + len(unified_frame_argument.relations.all()) > 0: + return {"succ": False, "conflict_hyponym": None, "conflict_hyperonym": None, "conflict_exists": "Predefiniowana preferencja selekcyjna ALL może być dodana tylko, gdy nie na liście nie widnieją inne preferencje selekcyjne."} + else: + check_sysnet_hierarchy_constraints_ret = {"succ": True} else: get_predefined_preference_synsets([pred_sel_pref], predefined_synset_ids) check_sysnet_hierarchy_constraints_ret = check_sysnet_hierarchy_constraints(predefined_synset_ids, unified_frame_argument) - if check_sysnet_hierarchy_constraints_ret['succ'] is True: - unified_frame_argument.predefined.add(int(predefined_preference_id)) - unified_frame_argument.save() - update_argument_preferences_count(unified_frame_argument) + if check_sysnet_hierarchy_constraints_ret['succ'] is True: + unified_frame_argument.predefined.add(int(predefined_preference_id)) + unified_frame_argument.save() + update_argument_preferences_count(unified_frame_argument) - return check_sysnet_hierarchy_constraints_ret + return check_sysnet_hierarchy_constraints_ret @ajax_required @@ -196,9 +208,10 @@ def save_relational_selectional_preference(request): unified_frame_argument = UnifiedFrameArgument.objects.get(unified_frame_id=int(frame_id), id=int(complement_id_from)) - relational_selectional_preference = UnifiedRelationalSelectionalPreference(to_id=complement_id_to, + relational_selectional_preference, xx = UnifiedRelationalSelectionalPreference.objects.get_or_create(to_id=complement_id_to, relation_id=relation_id) relational_selectional_preference.save() + unified_frame_argument.relations.add(relational_selectional_preference) unified_frame_argument.save()