From c859122b20af7c088d1ac49273c0264aaf4627b3 Mon Sep 17 00:00:00 2001
From: Philip ABBET <philip.abbet@idiap.ch>
Date: Mon, 11 Sep 2017 15:12:49 +0200
Subject: [PATCH] [algorithms] Bugfix: Can't use the admin interface for binary
 algorithms

---
 beat/web/algorithms/admin.py | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
 mode change 100644 => 100755 beat/web/algorithms/admin.py

diff --git a/beat/web/algorithms/admin.py b/beat/web/algorithms/admin.py
old mode 100644
new mode 100755
index 50feac2e2..f03412a9e
--- a/beat/web/algorithms/admin.py
+++ b/beat/web/algorithms/admin.py
@@ -90,6 +90,13 @@ class AlgorithmModelForm(forms.ModelForm):
                     ),
                 }
 
+
+    def __init__(self, *args, **kwargs):
+        super(AlgorithmModelForm, self).__init__(*args, **kwargs)
+
+        if kwargs['instance'].is_binary():
+            del self.fields['source_code_file']
+
     def clean_declaration_file(self):
         """Cleans-up the file data, make sure it is really new"""
 
@@ -231,4 +238,12 @@ class Algorithm(admin.ModelAdmin):
           ),
         )
 
+    def get_form(self, request, obj=None, **kwargs):
+        if obj.is_binary():
+            self.exclude = ('source_code_file',)
+            fieldsets = filter(lambda x: x[0] == 'Definition',self.fieldsets)[0]
+            fieldsets[1]['fields'] = ('hash', 'splittable', 'declaration_file', 'language')
+        form = super(Algorithm, self).get_form(request, obj, **kwargs)
+        return form
+
 admin.site.register(AlgorithmModel, Algorithm)
-- 
GitLab