From 8192a1476067fafd4df88b14e8cf23b31a2e772f Mon Sep 17 00:00:00 2001
From: dcz <dcz@ipipan.waw.pl>
Date: Fri, 22 Sep 2023 14:00:57 +0200
Subject: [PATCH] Send delete slowal frame API request only after
 superleksykograf acceptance. Full fake API func.

---
 .../unification/shared/LexicalUnitDisplay.vue | 29 ----------------
 semantics/views.py                            | 34 +++++++++++++++----
 unifier/urls.py                               |  3 ++
 unifier/views.py                              | 21 ++++++++----
 4 files changed, 46 insertions(+), 41 deletions(-)

diff --git a/frontend/src/components/unification/shared/LexicalUnitDisplay.vue b/frontend/src/components/unification/shared/LexicalUnitDisplay.vue
index d72961c..1fcce50 100644
--- a/frontend/src/components/unification/shared/LexicalUnitDisplay.vue
+++ b/frontend/src/components/unification/shared/LexicalUnitDisplay.vue
@@ -78,24 +78,6 @@ export default {
                                         show_error(errorType + ' (' + errorMessage + ')');
                                     },
                                     300000)
-
-                                // $("#overlay").fadeIn(300);
-                                // $.ajax({
-                                //     type     : 'post',
-                                //     url      : `/${lang}/unifier/frame_assign/`,
-                                //     dataType : 'json',
-                                //     data: data,
-                                //     timeout  : 300000,
-                                //     success: function (response) {
-                                //         $("#overlay").fadeOut(300);
-                                //         show_info('Rama została stworzona oraz przypisana użytkownikowi.');
-                                //         this.goToEdit(response.unified_frame_id, this.entryId, this.lexicalUnitId);
-                                //     }.bind(this),
-                                //     error: function (request, errorType, errorMessage) {
-                                //         $("#overlay").fadeOut(300);
-                                //         show_error(errorType + ' (' + errorMessage + ')');
-                                //     }
-                                // });
                             } else {
                                 alert(gettext("Nazwa zunifikowanej ramy nie jest unikalna. Proszę wybrać inną nazwę."));
                             }
@@ -166,17 +148,6 @@ export default {
     setup () {
       $('#lexical-unit-notes').html('');
 
-      // get_entry(this.entryId, false, this.lexicalUnitId).then(entry => {
-      //   this.frame = entry.frames[0];
-      //   this.unifiedFrame = entry.unified_frame;
-      //   this.subentries = entry.subentries;
-      //   this.alternations = entry.alternations;
-      //   this.realisation_phrases = entry.realisation_phrases;
-      //   this.realisation_descriptions = entry.realisation_descriptions;
-      //   this.examples = entry.examples;
-      //   setup_notes($('#lexical-unit-notes'), $('#lexical-unit-notes-template'), this.lexicalUnitId, 'meanings.LexicalUnit', this.setup_notes);
-      // });
-
       var data = { 'entry' : this.entryId, 'no_filters' : false, 'lexical_unit_id': this.lexicalUnitId };
       $.ajax({
         type     : 'post',
diff --git a/semantics/views.py b/semantics/views.py
index da49e6a..8e7a313 100644
--- a/semantics/views.py
+++ b/semantics/views.py
@@ -1,9 +1,11 @@
+import urllib3
 from django.contrib.auth.decorators import permission_required
 from django.core.exceptions import ValidationError
 from django.db import transaction
 from django.shortcuts import get_object_or_404
 
 from common.decorators import ajax
+from shellvalier import settings
 from unifier.models import UnifiedFrame, UnifiedFrame2SlowalFrameMapping, UnifiedFrameArgumentSlowalFrameMapping
 from users.models import Assignment
 
@@ -28,6 +30,10 @@ def frame_confirm_invalid(request, frame_pk):
     frame.status = choices.FrameStatus.BAD
     frame.save()
     removeSlovalFrameMappingsAndAssigments(frame_pk)
+
+    http = urllib3.PoolManager()
+    r = http.request('GET', settings.SLOWAL_FRAME_REMOVE_SERVICE_URL + str(frame_pk))
+
     return {}
 
 
@@ -39,8 +45,13 @@ def frame_reject_invalid(request, frame_pk):
     frame.status = choices.FrameStatus.NEW
     frame.save()
     removeSlovalFrameMappingsAndAssigments(frame_pk)
+
+    http = urllib3.PoolManager()
+    r = http.request('GET', settings.SLOWAL_FRAME_REMOVE_SERVICE_URL + str(frame_pk))
+
     return {}
 
+
 @ajax(login_required=True, method='post')
 @transaction.atomic
 @permission_required('semantics.manage_invalid_lexical_units')
@@ -49,18 +60,24 @@ def frame_mark_as_bad(request, frame_pk):
     frame.status = choices.FrameStatus.BAD
     frame.save()
     removeSlovalFrameMappingsAndAssigments(frame_pk)
+
+    http = urllib3.PoolManager()
+    r = http.request('GET', settings.SLOWAL_FRAME_REMOVE_SERVICE_URL + str(frame_pk))
+
     return {}
 
+
 def removeSlovalFrameMappingsAndAssigments(frame_pk):
     #odpianie z ramy zunifikowanej
-    unifiedFrame2SlowalFrameMappings = UnifiedFrame2SlowalFrameMapping.objects.filter(slowal_frame_id=frame_pk)
-    for unifiedFrame2SlowalFrameMapping in unifiedFrame2SlowalFrameMappings:
-        unifiedFrameArgumentSlowalFrameMappings = UnifiedFrameArgumentSlowalFrameMapping.objects.filter(unified_frame_mapping=unifiedFrame2SlowalFrameMapping)
-        for unifiedFrameArgumentSlowalFrameMapping in unifiedFrameArgumentSlowalFrameMappings:
-            unifiedFrameArgumentSlowalFrameMapping.delete()
-        unifiedFrame2SlowalFrameMapping.delete()
+    unified_frame2_slowal_frame_mappings = UnifiedFrame2SlowalFrameMapping.objects.filter(slowal_frame_id=frame_pk)
+    for unified_frame2_slowal_frame_mapping in unified_frame2_slowal_frame_mappings:
+        unified_frame_argument_slowal_frame_mappings = UnifiedFrameArgumentSlowalFrameMapping.objects.filter(unified_frame_mapping=unified_frame2_slowal_frame_mapping)
+        for unified_frame_argument_slowal_frame_mapping in unified_frame_argument_slowal_frame_mappings:
+            unified_frame_argument_slowal_frame_mapping.delete()
+        unified_frame2_slowal_frame_mapping.delete()
     Assignment.delete(subject_id=frame_pk)
 
+
 @ajax(login_required=True, method='post')
 @transaction.atomic
 @permission_required('semantics.manage_invalid_lexical_units')
@@ -70,6 +87,7 @@ def frame_reject_as_not_matching_unified_frame(request, frame_pk):
     frame.save()
     return {}
 
+
 @ajax(login_required=True, method='post')
 @transaction.atomic
 @permission_required('semantics.manage_invalid_lexical_units')
@@ -78,5 +96,9 @@ def frame_confirm_as_not_matching_unified_frame(request, frame_pk):
     frame.status = choices.FrameStatus.NEW
     frame.save()
     removeSlovalFrameMappingsAndAssigments(frame_pk)
+
+    http = urllib3.PoolManager()
+    r = http.request('GET', settings.SLOWAL_FRAME_REMOVE_SERVICE_URL + str(frame_pk))
+
     return {}
 
diff --git a/unifier/urls.py b/unifier/urls.py
index fe76fed..b7ecbf7 100644
--- a/unifier/urls.py
+++ b/unifier/urls.py
@@ -22,6 +22,9 @@ urlpatterns = [
     path('change_unified_frame_status_to_ready/', views.change_unified_frame_status_to_ready, name='change_unified_frame_status_to_ready'),
     path('remove_selectional_preference/', views.remove_selectional_preference, name='remove_selectional_preference'),
     path('build_unified_frame_xml/', views.build_unified_frame_xml, name='build_unified_frame_xml'),
+    path('frame_statuses_free/', views.frame_statuses_free, name='frame_statuses_free'),
+    path('frame_statuses_take/', views.frame_statuses_take, name='frame_statuses_take'),
+
     path('frame_assign/', views.frame_assign, name='frame_assign'),
     path('delete_unified_frame/<int:unified_frame_id>/', views.delete_unified_frame, name='delete_unified_frame'),
     path('change_unified_frame_status_to_verified_by_superleksykograf/', views.change_unified_frame_status_to_verified_by_superleksykograf, name='change_unified_frame_status_to_verified_by_superleksykograf'),
diff --git a/unifier/views.py b/unifier/views.py
index c164dbd..5dd03ee 100644
--- a/unifier/views.py
+++ b/unifier/views.py
@@ -478,10 +478,6 @@ def change_slowal_frame_status(request):
         frame.status = status
         frame.save()
 
-        if status == FrameStatus.BAD or FrameStatus.INVALID:
-            http = urllib3.PoolManager()
-            r = http.request('GET', settings.SLOWAL_FRAME_REMOVE_SERVICE_URL + str(slowal_frame_id))
-
         return JsonResponse({})
     return JsonResponse({})
 
@@ -655,6 +651,18 @@ def create_unified_frame(frame_id):
     return unified_frame_id
 
 
+@csrf_exempt
+def frame_statuses_free(request):
+    if request.method == 'GET':
+        return HttpResponse()
+
+
+@csrf_exempt
+def frame_statuses_take(request):
+    if request.method == 'GET':
+        return HttpResponse()
+
+
 @csrf_exempt
 def build_unified_frame_xml(request):
     if request.method == 'GET':
@@ -768,8 +776,9 @@ def delete_unified_frame(request, unified_frame_id):
     slowal_frames = UnifiedFrame2SlowalFrameMapping.objects.filter(unified_frame_id=unified_frame_id).all()
     slowal_frames_ids = ','.join(list(map(lambda slowal_frame: slowal_frame.id, slowal_frames)))
 
-    http = urllib3.PoolManager()
-    r = http.request('GET', settings.SLOWAL_FRAME_REMOVE_SERVICE_URL + slowal_frames_ids)
+    if len(slowal_frames_ids) > 0:
+        http = urllib3.PoolManager()
+        r = http.request('GET', settings.SLOWAL_FRAME_REMOVE_SERVICE_URL + slowal_frames_ids)
 
     UnifiedFrame.objects.get(id=unified_frame_id).delete()
 
-- 
GitLab