from django.http import JsonResponse from common.decorators import ajax_required from entries.views import get_scroller_params from semantics.models import RelationalSelectionalPreference, Frame from unifier.models import UnifiedFrameArgument, UnifiedRelationalSelectionalPreference, UnifiedFrame, \ UnifiedFrame2SlowalFrameMapping @ajax_required def save_synset_preference(request): if request.method == 'POST': frame_id = request.POST['frame_id'] complement_id = request.POST['complement_id'] synset_preference_id = request.POST['synset_preference_id'] unifiedFrameArgument = UnifiedFrameArgument.objects.get(unified_frame_id=int(frame_id), id=int(complement_id)) unifiedFrameArgument.synsets.add(int(synset_preference_id)) unifiedFrameArgument.save() return JsonResponse({}) @ajax_required def save_predefined_preference(request): if request.method == 'POST': frame_id = request.POST['frame_id'] complement_id = request.POST['complement_id'] predefined_preference_id = request.POST['predefined_preference_id'] unifiedFrameArgument = UnifiedFrameArgument.objects.get(unified_frame_id=int(frame_id), id=int(complement_id)) unifiedFrameArgument.predefined.add(int(predefined_preference_id)) unifiedFrameArgument.save() return JsonResponse({}) @ajax_required def save_relational_selectional_preference(request): if request.method == 'POST': frame_id = request.POST['frame_id'] complement_id_from = request.POST['complement_id_from'] complement_id_to = request.POST['complement_id_to'] relation_id = request.POST['relation_id'] unifiedFrameArgument = UnifiedFrameArgument.objects.get(unified_frame_id=int(frame_id), id=int(complement_id_from)) relationalSelectionalPreference = UnifiedRelationalSelectionalPreference(to_id=complement_id_to, relation_id=relation_id) relationalSelectionalPreference.save() unifiedFrameArgument.relations.add(relationalSelectionalPreference) unifiedFrameArgument.save() return JsonResponse({}) @ajax_required def get_unified_frames(request): if request.method == 'POST': errors_dict = dict() scroller_params = get_scroller_params(request.POST) unifiedFrame2SlowalFrameMappings = UnifiedFrame2SlowalFrameMapping.objects.all(); res = {} for mapping in unifiedFrame2SlowalFrameMappings: res[mapping.unified_frame.id] = res.get(mapping.unified_frame.id, []) res[mapping.unified_frame.id].append(mapping) resProcessed = [] for key, value in res.items(): title = value[0].unified_frame.title if value[0].unified_frame.title is not None else '['+value[0].slowal_frame.lexical_units.first().base+']' resProcessed.append({ 'id': str(value[0].unified_frame.id), 'title': title, 'status': value[0].unified_frame.status, 'assignee_username': ( assignment.user.username if (assignment := value[0].slowal_frame.lexical_units.first().assignments.first()) else None ), }) ret = { 'draw' : scroller_params['draw'], 'recordsTotal': len(resProcessed), 'recordsFiltered': len(resProcessed), 'data': resProcessed } return JsonResponse(ret) return JsonResponse({}) # @ajax_required # def get_unified_frame(request): # if request.method == 'POST': # #TODO (*) # #form = EntryForm(request.POST) # unified_frame_id = request.POST['unified_frame_id'] # #TODO (*) # if unified_frame_id.isdigit():# and form.is_valid(): # unified_frame_id = int(unified_frame_id) # # TODO check that Entry has no import errors # unifiedFrame = UnifiedFrame.objects.get(id=unified_frame_id) # # frame_objects = Frame.objects.filter(arguments__argument_connections__schema_connections__subentry__entry=entry).distinct() # # filter out frames by frame properties # if filter_frames: # frame_objects = get_filtered_objects2(frame_forms, frame_objects) # if local_frame_form: # frame_objects = get_filtered_objects(local_frame_form, frame_objects) # frames = [frame2dict(frame, entry.lexical_units.all()) for frame in frame_objects] # alternations, realisation_phrases, realisation_descriptions = get_alternations(all_schema_objects, frame_objects) # examples = get_examples(entry) # # https://docs.djangoproject.com/en/2.2/topics/http/sessions/#when-sessions-are-saved # if [entry.name, entry.id] in request.session['last_visited']: # request.session['last_visited'].remove([entry.name, entry.id]) # request.session['last_visited'].insert(0, (entry.name, entry.id)) # request.session['last_visited'] = request.session['last_visited'][:(MAX_LAST_VISITED + 1)] # request.session.modified = True # return JsonResponse({ 'subentries' : subentries, 'frames' : frames, 'alternations' : alternations, 'realisation_phrases' : realisation_phrases, 'realisation_descriptions' : realisation_descriptions, 'examples' : examples, 'last_visited' : request.session['last_visited'] }) # return JsonResponse({})