Skip to content
Snippets Groups Projects
views.py 5.36 KiB
Newer Older
from django.http import JsonResponse

from common.decorators import ajax_required
dcz's avatar
dcz committed
from entries.views import get_scroller_params
from semantics.models import RelationalSelectionalPreference, Frame
dcz's avatar
dcz committed
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({})

dcz's avatar
dcz committed

@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({})