Browse Source

Add automatic import with trigger and clear

Felix Schultze 9 years ago
parent
commit
13ab19140d

+ 6 - 0
automaticimport/models.py

@@ -0,0 +1,6 @@
+from mongoengine import Document
+from mongoengine.fields import StringField
+
+class AutomaticImport(Document):
+    path = StringField()
+    volume_id = StringField()

+ 11 - 0
automaticimport/urls.py

@@ -0,0 +1,11 @@
+from django.conf.urls import patterns, url
+
+from . import views
+
+# loadtest url file
+
+urlpatterns = patterns(
+    '',
+    url(r'^trigger/$', views.trigger, name='trigger'),
+    url(r'^clear/$', views.clear, name='clear')
+)

+ 54 - 0
automaticimport/views.py

@@ -0,0 +1,54 @@
+import glob
+import os
+from django.conf import settings
+from django.http import HttpResponse
+
+from multiprocessing import Process
+
+from .models import AutomaticImport
+
+from volumes.models import Volume
+from volumes.processing.service import SliceGenerator
+
+from mongoengine import ValidationError
+
+import json
+
+import pdb
+
+DEFAULT_SLICE_FOLDER = 'slices_8bit'
+
+def trigger(request):
+    volumes_to_process = []
+    paths = sorted(glob.glob(os.path.join(settings.DEFAULT_IMPORT_PATH, '*')))
+
+    for path in paths:
+        automatic_import = AutomaticImport.objects(path=path).first()
+        if(automatic_import is None):
+            volume = Volume()
+            volume.imageSequence = True
+            volume.path = os.path.join(path, DEFAULT_SLICE_FOLDER)
+            volume.name = path.replace(settings.DEFAULT_IMPORT_PATH, '')
+            volume = volume.save()
+            volumes_to_process.append(volume.id)
+
+            automatic_import = AutomaticImport()
+            automatic_import.path = path
+            automatic_import.volume_id = volume.id
+
+    if len(volumes_to_process) > 0:
+        process = Process(target=SliceGenerator.generateListOfVolumes, args=(volumes_to_process,))
+        process.start()
+
+    jsonDump = json.dumps({
+        'triggered': True,
+        'number_of_new_volumes': len(volumes_to_process)
+    })
+    return HttpResponse(jsonDump, content_type="json")
+
+def clear(request):
+    models = AutomaticImport.objects()
+    for automatic_import in models:
+        automatic_import.delete()
+
+    return HttpResponse(json.dumps({'deleted': len(models)}), content_type="json")

+ 2 - 1
visualization/settings.py

@@ -70,7 +70,8 @@ INSTALLED_APPS = (
     'django.contrib.messages',
     'django.contrib.staticfiles',
     'volumes',
-    'loadtests'
+    'loadtests',
+    'automaticimport'
 )
 
 MIDDLEWARE_CLASSES = (

+ 7 - 5
visualization/urls.py

@@ -1,11 +1,13 @@
 from django.conf.urls import patterns, include, url
 
-from volumes import urls as volumeurls
-from loadtests import urls as loadtesturls
+from volumes import urls as volume_urls
+from loadtests import urls as loadtest_urls
+from automaticimport import urls as automaticimport_urls
 
 urlpatterns = patterns(
     '',
-    url(r'^$', include(volumeurls)),
-    url(r'^volumes/', include(volumeurls, namespace='volumes', app_name='volumes')),
-    url(r'^loadtests/', include(loadtesturls, namespace='loadtests', app_name='loadtests'))
+    url(r'^$', include(volume_urls)),
+    url(r'^volumes/', include(volume_urls, namespace='volumes', app_name='volumes')),
+    url(r'^loadtests/', include(loadtest_urls, namespace='loadtests', app_name='loadtests')),
+    url(r'^automaticimport/', include(automaticimport_urls, namespace='automaticimport', app_name='automaticimport'))
 )