From 1eb3103d80e08cbc3ca2d8de466706c5c5127def Mon Sep 17 00:00:00 2001
From: Samuel Gaist <samuel.gaist@idiap.ch>
Date: Mon, 26 Feb 2018 11:55:02 +0100
Subject: [PATCH] [web][experiments][admin] Added action to delete content from
 a cache entry

Also remove the default delete action which should not be used
for the CachedFile objects.
---
 beat/web/experiments/admin.py | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/beat/web/experiments/admin.py b/beat/web/experiments/admin.py
index e64e65849..3a811ac11 100755
--- a/beat/web/experiments/admin.py
+++ b/beat/web/experiments/admin.py
@@ -520,6 +520,18 @@ admin.site.register(ResultModel, Result)
 #----------------------------------------------------------
 
 
+def delete_file_on_fs(modeladmin, request, queryset):
+    '''
+    Delete the files contained in the cache
+    '''
+
+    for obj in queryset:
+        obj.delete_files()
+
+
+delete_file_on_fs.short_description = 'Delete files from the cache'
+
+
 class CachedFile(admin.ModelAdmin):
 
     search_fields = [
@@ -543,10 +555,18 @@ class CachedFile(admin.ModelAdmin):
     # to avoid very slow loading of cached files
     raw_id_fields = ('blocks',)
 
+    actions = [delete_file_on_fs]
+
     def get_queryset(self, request):
         qs = super(CachedFile, self).get_queryset(request)
         return qs.annotate(date=Max('blocks__start_date'))
 
+    def get_actions(self, request):
+        actions = super(CachedFile, self).get_actions(request)
+        if 'delete_selected' in actions:
+            del actions['delete_selected']
+        return actions
+
     def date(self, obj):
         return obj.date
 
-- 
GitLab