From 256d98b77d7cf6e490b9950ea54a84ad99c544d2 Mon Sep 17 00:00:00 2001
From: Eliot Berriot <contact@eliotberriot.com>
Date: Tue, 29 May 2018 22:22:51 +0200
Subject: [PATCH] See #223: delete actions is now dangerous anc cannot be
 applied to all files

---
 api/funkwhale_api/manage/serializers.py            | 1 +
 front/src/components/common/ActionTable.vue        | 4 ++--
 front/src/components/manage/library/FilesTable.vue | 3 ++-
 3 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/api/funkwhale_api/manage/serializers.py b/api/funkwhale_api/manage/serializers.py
index bbd39323..02300ec0 100644
--- a/api/funkwhale_api/manage/serializers.py
+++ b/api/funkwhale_api/manage/serializers.py
@@ -74,6 +74,7 @@ class ManageTrackFileSerializer(serializers.ModelSerializer):
 
 class ManageTrackFileActionSerializer(common_serializers.ActionSerializer):
     actions = ['delete']
+    dangerous_actions = ['delete']
     filterset_class = filters.ManageTrackFileFilterSet
 
     @transaction.atomic
diff --git a/front/src/components/common/ActionTable.vue b/front/src/components/common/ActionTable.vue
index 718e57b1..5221c328 100644
--- a/front/src/components/common/ActionTable.vue
+++ b/front/src/components/common/ActionTable.vue
@@ -21,7 +21,7 @@
                   :class="['ui', {disabled: checked.length === 0}, {'loading': actionLoading}, 'button']">
                   {{ $t('Go') }}</div>
                 <dangerous-button
-                  v-else :class="['ui', {disabled: checked.length === 0}, {'loading': actionLoading}, 'button']"
+                  v-else-if="!currentAction.isDangerous" :class="['ui', {disabled: checked.length === 0}, {'loading': actionLoading}, 'button']"
                   confirm-color="green"
                   color=""
                   @confirm="launchAction">
@@ -36,7 +36,7 @@
               <div class="count field">
                 <span v-if="selectAll">{{ $t('{% count %} on {% total %} selected', {count: objectsData.count, total: objectsData.count}) }}</span>
                 <span v-else>{{ $t('{% count %} on {% total %} selected', {count: checked.length, total: objectsData.count}) }}</span>
-                <template v-if="checkable.length === checked.length">
+                <template v-if="!currentAction.isDangerous && checkable.length === checked.length">
                   <a @click="selectAll = true" v-if="!selectAll">
                     {{ $t('Select all {% total %} elements', {total: objectsData.count}) }}
                   </a>
diff --git a/front/src/components/manage/library/FilesTable.vue b/front/src/components/manage/library/FilesTable.vue
index 7d230cc8..2788006f 100644
--- a/front/src/components/manage/library/FilesTable.vue
+++ b/front/src/components/manage/library/FilesTable.vue
@@ -181,7 +181,8 @@ export default {
       return [
         {
           name: 'delete',
-          label: this.$t('Delete')
+          label: this.$t('Delete'),
+          isDangerous: true
         }
       ]
     }
-- 
GitLab