diff --git a/entries/static/entries/js/components/LexicalUnitDisplay.js b/entries/static/entries/js/components/LexicalUnitDisplay.js index 50b503e45303f0bd29a6eb7a3506a175f4dd2b5b..adec5a7a23ef2ea2f3220521f40e7711c3de85ee 100644 --- a/entries/static/entries/js/components/LexicalUnitDisplay.js +++ b/entries/static/entries/js/components/LexicalUnitDisplay.js @@ -22,7 +22,7 @@ export default { take () { $.ajax({ type : 'post', - url : `/${lang}/semantics/frame_assign/${this.frame.id}/`, + url : `/${lang}/semantics/frame_assign/${this.unifiedFrame.pk}/`, dataType : 'json', timeout : 60000, }).then(() => { this.$emit('goToEdit', this.unifiedFrame.pk); }); @@ -43,10 +43,13 @@ export default { timeout: 60000, }).then(() => { this.$emit('refresh'); }); }, - isReadyToProcess() { - return this.isLeksykograf() || (this.frame?.status === 'O' || this.frame?.status === 'G') && this.unifiedFrame?.status === 'O'; + isReadyToProcess () { + return (!this.isLeksykograf() && this.unifiedFrame?.status === 'G') || (this.isLeksykograf() && this.frame?.status === 'O'); }, - isLeksykograf() { + isReadyToGet () { + return this.isLeksykograf() && this.frame?.status === 'N'; + }, + isLeksykograf () { return !has_permission("users.view_assignment"); }, setup_notes () { @@ -84,11 +87,11 @@ export default { <div id="semantics-frames"></div> <div class="text-center mb-3"> <div v-if="unifiedFrame"> - <a class="btn btn-sm btn-outline-dark mr-2" v-if="frame?.status === 'N'" @click="markAsInvalid">{{ gettext('Błędna') }}</a> - <a class="btn btn-sm btn-outline-dark mr-2" v-if="frame?.status === 'N'" @click="take">{{ gettext('Pobierz') }}</a> + <a class="btn btn-sm btn-outline-dark mr-2" v-if="frame?.status === 'N'" @click="markAsInvalid">{{ !isLeksykograf() ? gettext('Zła') : gettext('Błędna') }}</a> + <a class="btn btn-sm btn-outline-dark mr-2" v-if="isReadyToGet()" @click="take">{{ gettext('Pobierz') }}</a> <a class="btn btn-sm btn-outline-dark mr-2" - v-if="isReadyToProcess() || isLeksykograf" + v-if="isReadyToProcess()" @click="$emit('goToEdit', this.unifiedFrame.pk)" > {{ isLeksykograf() ? gettext('Obrabiaj') : gettext('Sprawdź') }} diff --git a/entries/static/entries/js/unification.js b/entries/static/entries/js/unification.js index be5e65ca9c6f6a43473297ccb4192391eb2590b9..bc2d8112431fcfd3ab713f257e6387f5617dce8f 100644 --- a/entries/static/entries/js/unification.js +++ b/entries/static/entries/js/unification.js @@ -51,6 +51,7 @@ function slowal_frames2selecional_preferencies(unified_frame, slowal_frames) { var slowal_frame_argument_mapping = slowal_frame_mapping.slowal_frame_argument_mapping[j]; let slowal_frame_argument = slowal_frame.arguments.find(o => o.argument_id === slowal_frame_argument_mapping.slowal_frame_agrument_id); + let unified_frame_argument = unified_frame.arguments.find(o => o.argument_id === slowal_frame_argument_mapping.unified_frame_agrument_id); let preferenceEntry = unified_argument_2_selecional_preferencies[slowal_frame_argument_mapping.unified_frame_agrument_id]; if(preferenceEntry == null) { diff --git a/semantics/urls.py b/semantics/urls.py index 48d7e8569b2705f16df8dc77f8f8375a122231ff..92a20adb7d47107f06bf760c8c96819bc0fb2c8d 100644 --- a/semantics/urls.py +++ b/semantics/urls.py @@ -6,7 +6,7 @@ app_name = 'semantics' urlpatterns = [ path('frame_mark_as_invalid/<int:frame_pk>/', views.frame_mark_as_invalid, name='frame_mark_as_invalid'), - path('frame_assign/<int:frame_pk>/', views.frame_assign, name='frame_assign'), + path('frame_assign/<int:unified_frame_pk>/', views.frame_assign, name='frame_assign'), path('frame_confirm_invalid/<int:frame_pk>/', views.frame_confirm_invalid, name='frame_confirm_invalid'), path('frame_reject_invalid/<int:frame_pk>/', views.frame_reject_invalid, name='frame_reject_invalid'), ] diff --git a/semantics/views.py b/semantics/views.py index 719f55e2cc916f80a2ba7d48798f6f68fc046c22..d1c35374700861c0a96e1c7a47afcb36b6c13e4d 100644 --- a/semantics/views.py +++ b/semantics/views.py @@ -4,6 +4,7 @@ from django.db import transaction from django.shortcuts import get_object_or_404 from common.decorators import ajax +from unifier.models import UnifiedFrame, UnifiedFrame2SlowalFrameMapping from users.models import Assignment from . import choices @@ -21,14 +22,19 @@ def frame_mark_as_invalid(request, frame_pk): @ajax(login_required=True, method='post') @transaction.atomic -def frame_assign(request, frame_pk): - frame = get_object_or_404( - Frame.objects.filter(status=choices.FrameStatus.NEW).select_for_update(), - pk=frame_pk, +def frame_assign(request, unified_frame_pk): + unifiedFrame = get_object_or_404( + UnifiedFrame.objects, + pk=unified_frame_pk, ) - frame.status = choices.FrameStatus.PROCESSING - Assignment.assign(user=request.user, subject=frame) - frame.save() + + slowal_frames = [connection.slowal_frame for connection in unifiedFrame.unified_frame_2_slowal_frame.all()] + + for slowal_frame in slowal_frames: + slowal_frame.status = choices.FrameStatus.PROCESSING + Assignment.assign(user=request.user, subject=slowal_frame) + slowal_frame.save() + return {}