From 883afe481b1ed0187f3255737cf59c90a4ab9bc2 Mon Sep 17 00:00:00 2001
From: dcz <dcz@ipipan.waw.pl>
Date: Tue, 28 Jun 2022 12:28:47 +0200
Subject: [PATCH] Change unified frame status

---
 .../entries/js/components/LexicalUnitEdit.js  | 24 ++++++++++++++++++-
 entries/static/entries/js/unification.js      |  1 -
 unifier/urls.py                               |  1 +
 unifier/views.py                              | 18 +++++++++++++-
 4 files changed, 41 insertions(+), 3 deletions(-)

diff --git a/entries/static/entries/js/components/LexicalUnitEdit.js b/entries/static/entries/js/components/LexicalUnitEdit.js
index cf16cb9..540da90 100644
--- a/entries/static/entries/js/components/LexicalUnitEdit.js
+++ b/entries/static/entries/js/components/LexicalUnitEdit.js
@@ -378,6 +378,28 @@ export default {
         }
       }
       $.prompt(duplicate_popup);
+    },
+    changeUnifiedFrameStatusToReady() {
+      let foundNotVerifiedFrame = this.frames.find(frame => !frame.verified);
+      if(foundNotVerifiedFrame) {
+        alert(gettext("Wszystkie podpięte ramy powinny być zweryfikowane."));
+      } else {
+        var data = {'unified_frame_id': this.unified_frame.id};
+        $.ajax({
+          type: 'post',
+          url: '/' + lang + '/unifier/change_unified_frame_status_to_ready/',
+          dataType: 'json',
+          data: data,
+          timeout: 60000,
+          success: function (response) {
+            show_info('Status ramy został zmieniony');
+            this.$emit('goToDisplay')
+          }.bind(this),
+          error: function (request, errorType, errorMessage) {
+            show_error(errorType + ' (' + errorMessage + ')');
+          }
+        });
+      }
     }
   },
   mounted () {
@@ -401,7 +423,7 @@ export default {
           <td id="add-arg" @click="addArgument" style="padding: 10px 15px 10px 15px; color: #000000;">Dodaj argum.</td>
           <td style="padding: 10px 15px 10px 15px; color: #000000;" @click="addSelectivePreference">Dodaj prefer.</td>
           <td id="merge" style="padding: 10px 15px 10px 15px; color: #000000;">Scal</td>
-          <td style="padding: 10px 15px 10px 15px; color: #000000;" @click="$emit('goToDisplay')">Gotowe</td>
+          <td style="padding: 10px 15px 10px 15px; color: #000000;" @click="changeUnifiedFrameStatusToReady">Gotowe</td>
         </tr>
         <tr style="background-color: white;">
           <td id="change-role" @click="changeRole" style="padding: 10px 15px 10px 15px; color: #000000;">Zmień rolę</td>
diff --git a/entries/static/entries/js/unification.js b/entries/static/entries/js/unification.js
index 34df25b..b31f3fb 100644
--- a/entries/static/entries/js/unification.js
+++ b/entries/static/entries/js/unification.js
@@ -32,7 +32,6 @@ function frames2dom_unidief_view(frames) {
         table.className = 'table m-0 table-borderless border border-secondary text-dark';
         var tbody = document.createElement('tbody');
 
-        // roles and selectional preferences
         var roles_row = document.createElement('tr');
 
         var frame_col = document.createElement('th');
diff --git a/unifier/urls.py b/unifier/urls.py
index c881655..ba1b905 100644
--- a/unifier/urls.py
+++ b/unifier/urls.py
@@ -19,5 +19,6 @@ urlpatterns = [
     path('add_argument/', views.add_argument, name='add_argument'),
     path('remove_argument/', views.remove_argument, name='remove_argument'),
     path('duplicate_unified_frame/', views.duplicate_unified_frame, name='duplicate_unified_frame'),
+    path('change_unified_frame_status_to_ready/', views.change_unified_frame_status_to_ready, name='change_unified_frame_status_to_ready'),
 
 ]
diff --git a/unifier/views.py b/unifier/views.py
index d2302da..69696dc 100644
--- a/unifier/views.py
+++ b/unifier/views.py
@@ -10,7 +10,7 @@ from semantics.models import Frame, ArgumentRole, SemanticRole, RoleAttribute
 from syntax.models import Schema
 from unifier.models import UnifiedFrameArgument, UnifiedRelationalSelectionalPreference, UnifiedFrame, \
     UnifiedFrame2SlowalFrameMapping, UnifiedFrameArgumentSlowalFrameMapping
-
+from . import choices
 
 @ajax_required
 @transaction.atomic
@@ -356,3 +356,19 @@ def remove_argument(request):
         newUnifiedFrameArgument = UnifiedFrameArgument.objects.get(id=complement_id)
         newUnifiedFrameArgument.delete()
     return JsonResponse({})
+
+@ajax_required
+@transaction.atomic
+def change_unified_frame_status_to_ready(request):
+    if request.method == 'POST':
+        unified_frame_id = request.POST['unified_frame_id']
+        unifiedFrame = UnifiedFrame.objects.get(pk=unified_frame_id)
+        unifiedFrame.status = choices.UnifiedFrameStatus.READY
+
+        for mapping in unifiedFrame.unified_frame_2_slowal_frame.all():
+            mapping.verified = True
+            mapping.save()
+
+        unifiedFrame.save()
+    return JsonResponse({})
+
-- 
GitLab