Browse Source

Merge branch 'otherteststructure' of git.ipe.kit.edu:schultze/volume-visualization into otherteststructure

Felix Schultze 9 years ago
parent
commit
5ca3797558

+ 0 - 0
automaticimport/__init__.py


+ 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')
+)

+ 93 - 0
automaticimport/views.py

@@ -0,0 +1,93 @@
+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 logging
+
+import pdb
+
+logger = logging.getLogger(__name__)
+
+DEFAULT_SLICE_FOLDER = 'slices_8bit'
+
+def trigger(request):
+    volumes_to_process = []
+    paths = sorted(glob.glob(os.path.join(settings.DEFAULT_IMPORT_PATH, '*')))
+
+    # process dirs with dir DEFAULT_SLICE_FOLDER only
+    dir_paths = []
+    for path in paths:
+        if os.path.isdir(path) and DEFAULT_SLICE_FOLDER in os.listdir(path):
+            dir_paths.append(path)
+
+    paths = dir_paths
+
+    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 = str(volume.id)
+            automatic_import.save()
+
+            # TODO: Why do next line is not work?
+            logger.info("Sequence in dir: " + path + " will be processed")
+            print("Sequence in dir: " + path + " will be processed")
+
+    if len(volumes_to_process) > 0:
+        # TODO: Why do next line is not work?
+        logger.info("Processing sequences in dir: " + settings.DEFAULT_IMPORT_PATH + " ...")
+        print("Processing sequences in dir: " + settings.DEFAULT_IMPORT_PATH + " ...")
+
+        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()
+
+    if len(models) == 0:
+        # TODO: Why do next line is not work?
+        logger.info("No automatic imported volumes!")
+        print("No automatic imported volumes!")
+
+    for automatic_import in models:
+        try:
+            volume = Volume.objects(id=automatic_import.volume_id)[0]
+        except (IndexError, ValidationError) as e:
+            return handleException(request, id, e)
+
+        volume.delete()
+
+        automatic_import.delete()
+
+        # TODO: Why do next line is not work?
+        logger.info("Automaticly generated volume with id: " + automatic_import.volume_id + " deleted!")
+        print("Automaticly generated volume with id: " + automatic_import.volume_id + " deleted!")
+
+
+    return HttpResponse(json.dumps({'deleted': len(models)}), content_type="json")

+ 9 - 0
startNewCronJobForAutomaticImportTrigger.sh

@@ -0,0 +1,9 @@
+#!/bin/sh
+
+#write out current crontab
+crontab -l > mycron
+#echo new cron into cron file
+echo "01 * * * * curl http://anka-visualize.anka.kit.edu/automaticimport/trigger/ >> automaticimport_trigger.log" >> mycron
+#install new cron file
+crontab mycron
+rm mycron

File diff suppressed because it is too large
+ 1 - 1
static/js/threeJsHelper/dist/threeJsHelper.min.js


+ 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'))
 )

Some files were not shown because too many files changed in this diff