From 2572f5c512a1f11c63cdc2d23cdecd02ccdf6f50 Mon Sep 17 00:00:00 2001
From: Samuel Gaist <samuel.gaist@idiap.ch>
Date: Wed, 22 Apr 2020 13:52:50 +0200
Subject: [PATCH] [libraries][api] Replace put with serializer

---
 beat/web/libraries/api.py | 44 ++++++++++++++++++---------------------
 1 file changed, 20 insertions(+), 24 deletions(-)

diff --git a/beat/web/libraries/api.py b/beat/web/libraries/api.py
index a46b212d5..1e40b3c7b 100644
--- a/beat/web/libraries/api.py
+++ b/beat/web/libraries/api.py
@@ -29,16 +29,20 @@ from .models import Library
 from .serializers import LibrarySerializer
 from .serializers import FullLibrarySerializer
 from .serializers import LibraryCreationSerializer
+from .serializers import LibraryModSerializer
 
 from ..code.api import ShareCodeView, RetrieveUpdateDestroyCodeView
 from ..code.serializers import CodeDiffSerializer
 
-from ..common.api import (CheckContributionNameView, ListContributionView,
-                          ListCreateContributionView)
+from ..common.api import (
+    CheckContributionNameView,
+    ListContributionView,
+    ListCreateContributionView,
+)
 
 from ..code.api import DiffView
 
-#----------------------------------------------------------
+# ----------------------------------------------------------
 
 
 class CheckLibraryNameView(CheckContributionNameView):
@@ -46,10 +50,11 @@ class CheckLibraryNameView(CheckContributionNameView):
     This view sanitizes a library name and
     checks whether it is already used.
     """
+
     model = Library
 
 
-#----------------------------------------------------------
+# ----------------------------------------------------------
 
 
 class ShareLibraryView(ShareCodeView):
@@ -57,21 +62,23 @@ class ShareLibraryView(ShareCodeView):
     This view allows to share a library with
     other users and/or teams
     """
+
     model = Library
 
 
-#----------------------------------------------------------
+# ----------------------------------------------------------
 
 
 class ListLibrariesView(ListContributionView):
     """
     List all available libraries
     """
+
     model = Library
     serializer_class = LibrarySerializer
 
 
-#----------------------------------------------------------
+# ----------------------------------------------------------
 
 
 class ListCreateLibrariesView(ListCreateContributionView):
@@ -79,44 +86,33 @@ class ListCreateLibrariesView(ListCreateContributionView):
     Read/Write end point that list the libraries available
     from a given author and allows the creation of new libraries
     """
+
     model = Library
     serializer_class = LibrarySerializer
     writing_serializer_class = LibraryCreationSerializer
-    namespace = 'api_libraries'
+    namespace = "api_libraries"
 
 
-#----------------------------------------------------------
+# ----------------------------------------------------------
 
 
 class RetrieveUpdateDestroyLibrariesView(RetrieveUpdateDestroyCodeView):
     """
     Read/Write/Delete endpoint for a given library
     """
+
     model = Library
     serializer_class = FullLibrarySerializer
+    writing_serializer_class = LibraryModSerializer
 
 
-    def do_update(self, request, author_name, object_name, version=None):
-        modified, library = super(RetrieveUpdateDestroyLibrariesView, self).do_update(request, author_name, object_name, version)
-
-        if modified:
-            # Delete existing experiments using the library (code changed)
-            experiments = []
-            for item in library.referencing.all():
-                for algorithm in item.used_by_algorithms.all():
-                    experiments.append(list(set(map(lambda x: x.experiment,
-                                                    algorithm.blocks.iterator()))))
-            for experiment in set(experiments): experiment.delete()
-
-        return modified, library
-
-
-#----------------------------------------------------------
+# ----------------------------------------------------------
 
 
 class DiffLibraryView(DiffView):
     """
     This view shows the differences between two libraries
     """
+
     model = Library
     serializer_class = CodeDiffSerializer
-- 
GitLab