Sfoglia il codice sorgente

Apply pep8 to volumes

Felix Schultze 9 anni fa
parent
commit
cc9d11f8d7

+ 1 - 2
volumes/forms.py

@@ -4,6 +4,7 @@ from mongodbforms.fields import MongoCharField
 
 from .models import Volume
 
+
 class VolumeForm(DocumentForm):
     class Meta:
         document = Volume
@@ -16,11 +17,9 @@ class VolumeForm(DocumentForm):
         sliceFrom = cleaned_data.get('sliceFrom')
         sliceTo = cleaned_data.get('sliceTo')
 
-        calculateSlices = False
         if sliceFrom is not None and sliceTo is None or sliceFrom is None and sliceTo is not None:
             raise forms.ValidationError('Please provice a value for sliceFrom AND sliceTo')
 
-
         if sliceFrom is not None and sliceTo is not None:
             if sliceFrom > sliceTo:
                 msg = 'sliceFrom has to le than sliceTo'

+ 16 - 18
volumes/models.py

@@ -1,8 +1,8 @@
-import io, os
-import collections
+import io
+import os
 
-from mongoengine import *
-from mongoengine import signals
+from mongoengine import Document, EmbeddedDocument, signals, GridFSProxy
+from mongoengine.fields import BooleanField, IntField, FileField, ListField, EmbeddedDocumentField, StringField
 
 from django.conf import settings
 
@@ -12,10 +12,9 @@ import numpy as np
 
 import logging
 
-import pdb
-
 logger = logging.getLogger(__name__)
 
+
 class OriginalSize(EmbeddedDocument):
     sizex = IntField()
     sizey = IntField()
@@ -38,7 +37,7 @@ class TextureInfo(EmbeddedDocument):
     def from_info_object(infoObject):
         textureInfo = TextureInfo()
         textureInfo.slicesOverX = infoObject['slicesOverX']
-        textureInfo.slicesOverY= infoObject['slicesOverY']
+        textureInfo.slicesOverY = infoObject['slicesOverY']
         textureInfo.numberOfSlices = infoObject['numberOfSlices']
         textureInfo.imgMin = infoObject['imgMin']
         textureInfo.imgMax = infoObject['imgMax']
@@ -73,6 +72,7 @@ class Texture(EmbeddedDocument):
 
         self.sprites.append(proxies)
 
+
 class RawFrame(EmbeddedDocument):
     dataName = StringField()
     frameNumber = IntField()
@@ -83,9 +83,9 @@ class RawFrame(EmbeddedDocument):
         if len(array.shape) != 3:
             raise ValueError('array has not dimension of 3')
 
-        originalSize = OriginalSize();
+        originalSize = OriginalSize()
         originalSize.sizez, originalSize.sizey, originalSize.sizex = array.shape
-        self.originalSize = originalSize;
+        self.originalSize = originalSize
         self.dtype = str(array.dtype)
         self.frameNumber = frameNumber
 
@@ -99,7 +99,6 @@ class RawFrame(EmbeddedDocument):
         logger.debug('RawFrame.setNumpyArray: put buffer to file')
         mmap[:] = array[:]
 
-
     def getNumpyArray(self, path):
         filepath = self.__getpathtofile(path)
         shape = (self.originalSize.sizez, self.originalSize.sizey, self.originalSize.sizex)
@@ -107,8 +106,6 @@ class RawFrame(EmbeddedDocument):
         return mmap
 
     def deleteContent(self, path):
-        print('deleting rawframe content')
-        #self.data.delete()
         try:
             os.remove(self.__getpathtofile(path))
         except OSError:
@@ -117,6 +114,7 @@ class RawFrame(EmbeddedDocument):
     def __getpathtofile(self, path):
         return path + self.dataName
 
+
 class RawFrameGridFsProxy(EmbeddedDocument):
     data = FileField()
     frameNumber = IntField()
@@ -132,7 +130,7 @@ class RawFrameGridFsProxy(EmbeddedDocument):
 
         buff = io.BytesIO()
         buff.write(array)
-        buff.seek(0,0)
+        buff.seek(0, 0)
         gridFSProxy = GridFSProxy()
         gridFSProxy.put(buff)
         self.data = gridFSProxy
@@ -141,7 +139,7 @@ class RawFrameGridFsProxy(EmbeddedDocument):
         array = np.frombuffer(self.data.read(), dtype=np.dtype(self.dtype))
         array = np.reshape(array, (self.originalSize.sizez, self.originalSize.sizey, self.originalSize.sizex))
 
-        self.data.seek(0,0)
+        self.data.seek(0, 0)
 
         return array
 
@@ -204,13 +202,12 @@ class Volume(Document):
         return Volume.objects(id=self.id).update_one(push__textures=textureToAdd)
 
     def remove_texture(self, textureSize):
-        textures = []
         for texture in self.textures:
             if texture.size == textureSize:
                 texture.deleteContent()
                 break
 
-        Volume.objects(id=self.id).update_one(pull__textures={'size' : textureSize })
+        Volume.objects(id=self.id).update_one(pull__textures={'size': textureSize})
 
     def add_frame(self, frame, frameNumber):
         rawFrame = RawFrame()
@@ -267,9 +264,9 @@ class Volume(Document):
 
     @staticmethod
     def read_texture(id, textureSize):
-        volume = Volume.objects(id = id)[0]
+        volume = Volume.objects(id=id)[0]
 
-        if textureSize == None:
+        if textureSize is None:
             logger.debug('returning texture0 with its size: %d' % volume.textures[0].size)
             return volume.textures[0]
 
@@ -281,4 +278,5 @@ class Volume(Document):
 
         raise IndexError('texture with size %s could not be found' % textureSize)
 
+
 signals.pre_save.connect(Volume.pre_save, sender=Volume)

+ 0 - 1
volumes/processing/models.py

@@ -1,7 +1,6 @@
 from mongoengine import Document
 from mongoengine import BooleanField, DateTimeField, StringField, IntField, ListField
 
-from bson.objectid import ObjectId
 
 class SpriteMetaData(Document):
     creationTime = DateTimeField()

+ 8 - 7
volumes/processing/service/MultiProcessUByte.py

@@ -13,26 +13,22 @@ from bson.objectid import ObjectId
 import math
 import numpy as np
 
-import pdb
-
 logger = logging.getLogger(__name__)
 
+
 def multiprocess_img_as_ubyte(frames):
     logger.debug('using single process implementation')
     return img_as_ubyte(frames)
 
-
     pathMmap = settings.PATH_MMAP + 'tmp/'
 
     if os.path.exists(pathMmap) is False:
         os.makedirs(pathMmap)
 
-
     logger.debug('converting %d frames to ubyte' % frames.shape[0])
     cpus = cpu_count()
     inputQueue = Queue()
 
-    imageBeginNumber = 0
     imagesPerProcess = frames.shape[1]
     onlyOneFrame = frames.shape[0] is 1
 
@@ -68,7 +64,6 @@ def multiprocess_img_as_ubyte(frames):
     for process in processes:
         process.join()
 
-    containers = []
     newFrames = np.empty(frames.shape, dtype=np.uint8)
     newFrames[:] = outputFd[:]
 
@@ -86,9 +81,15 @@ class FrameContainer():
         self.numberOfImages = numberOfImages
         self.onlyOneFrame = onlyOneFrame
 
+
 def worker_img_as_ubyte(inputQueue):
     while inputQueue.empty() is False:
         container = inputQueue.get()
         logger.debug('img_as_ubyte frameNumber %d' % container.frameNumber)
-        container.outputFd[container.frameNumber][container.beginNumber:container.beginNumber + container.numberOfImages] = img_as_ubyte(container.frame[container.beginNumber:container.beginNumber + container.numberOfImages])
 
+        frame_number = container.frameNumber
+        begin_number = container.beginNumber
+        number_of_images = container.numberOfImages
+        frame = container.frame
+
+        container.outputFd[frame_number][begin_number: begin_number + number_of_images] = img_as_ubyte(frame[begin_number: begin_number + number_of_images])

+ 2 - 3
volumes/processing/service/Normalizer.py

@@ -1,4 +1,3 @@
-import numpy
 import logging
 
 logger = logging.getLogger(__name__)
@@ -8,7 +7,7 @@ def normalize_image(frames, volumeId):
     logger.debug('volId: %s, float frames detected, normalize them' % volumeId)
     collection_min = frames.min()
     collection_max = frames.max()
-    logger.debug('volId: %s, imagesmin: %d, imagesmax: %d' %(volumeId, collection_min, collection_max))
+    logger.debug('volId: %s, imagesmin: %d, imagesmax: %d' % (volumeId, collection_min, collection_max))
 
     t, z, y, x = frames.shape
 
@@ -17,4 +16,4 @@ def normalize_image(frames, volumeId):
         for j in range(z):
             frames[i, j, :, :] = (frames[i, j, :, :] - collection_min) / (collection_max - collection_min)
 
-    logger.debug('volId: %s, after normalization imagesmin: %d, imagesmax: %d' %(volumeId, frames.min(), frames.max()))
+    logger.debug('volId: %s, after normalization imagesmin: %d, imagesmax: %d' % (volumeId, frames.min(), frames.max()))

+ 23 - 29
volumes/processing/service/SliceGenerator.py

@@ -1,17 +1,12 @@
 import re
-import time
-import math
 import sys
 
-from threading import Thread
-from multiprocessing import Process, cpu_count, Queue
-
 from django.conf import settings
 
-from volumes.models import Volume, Texture, TextureInfo, RawFrame
+from volumes.models import Volume
 from volumes.processing.models import AutomaticProcessing
 
-from skimage import img_as_ubyte, img_as_int
+from skimage import img_as_int
 import numpy as np
 
 from imageprocessing import tiffPreparer, sliceMapCreator, binaryPreparer
@@ -19,33 +14,33 @@ from . import MultiProcessUByte, Normalizer
 
 import logging
 
-import pdb
-
 logger = logging.getLogger(__name__)
 
+
 def generateListOfVolumes(volumesToProcess):
     automaticProcessing = AutomaticProcessing()
     automaticProcessing.finished = False
     automaticProcessing = automaticProcessing.save()
 
     for volumeId in volumesToProcess:
-        AutomaticProcessing.objects(id=automaticProcessing.id).update_one(inc__processed = 1)
-        Volume.objects(id=volumeId).update_one(set__generateSlicesStatus = 'running')
+        AutomaticProcessing.objects(id=automaticProcessing.id).update_one(inc__processed=1)
+        Volume.objects(id=volumeId).update_one(set__generateSlicesStatus='running')
 
         volume = Volume.objects(id=volumeId).first()
 
         sliceGeneratorPlain({}, volume.id)
 
         if 'successful' in Volume.objects(id=volume.id).first().generateSlicesStatus:
-            AutomaticProcessing.objects(id=automaticProcessing.id).update_one(inc__succeeded = 1)
+            AutomaticProcessing.objects(id=automaticProcessing.id).update_one(inc__succeeded=1)
         else:
-            AutomaticProcessing.objects(id=automaticProcessing.id).update_one(inc__errored = 1)
-            AutomaticProcessing.objects(id=automaticProcessing.id).update_one(push__erroredPaths = volume.path)
+            AutomaticProcessing.objects(id=automaticProcessing.id).update_one(inc__errored=1)
+            AutomaticProcessing.objects(id=automaticProcessing.id).update_one(push__erroredPaths=volume.path)
 
 
 def sliceGenerator(request, volumeId):
     sliceGeneratorPlain(request.POST, volumeId)
 
+
 def sliceGeneratorPlain(data, volumeId):
     '''
     This file generates the needed information and images to
@@ -91,7 +86,7 @@ def sliceGeneratorPlain(data, volumeId):
             frames = tiffPreparer.processTiffFile(volume.path)
         elif volume.rawData:
             logger.debug('volId: %s, reading raw data' % (volumeId))
-            frames = binaryPreparer.processBinary(volume.path, (volume.width, volume.height), littleEndian = volume.littleEndian)
+            frames = binaryPreparer.processBinary(volume.path, (volume.width, volume.height), littleEndian=volume.littleEndian)
         else:
             raise ValueError('sorry, file currently not supported, is it a raw file?')
 
@@ -105,7 +100,7 @@ def sliceGeneratorPlain(data, volumeId):
         sliceFrom, sliceTo = __defineSliceRange(frames, sliceFrom, sliceTo)
     except Exception:
         logger.error('volId: %s, please provide integers or "" for "sliceFrom" and "sliceTo"' % (volumeId))
-        Volume.objects(id=volume.id).update_one(set__generateSlicesStatus = 'generation failed, please read the logs')
+        Volume.objects(id=volume.id).update_one(set__generateSlicesStatus='generation failed, please read the logs')
         return
 
     if len(frames.shape) is not 4:
@@ -116,24 +111,22 @@ def sliceGeneratorPlain(data, volumeId):
             Normalizer.normalize_image(frames, volumeId)
         except Exception as e:
             logger.error('volId: %s, error while normalization: ' % (str(e)))
-            Volume.objects(id=volume.id).update_one(set__generateSlicesStatus = 'generation failed, please read the logs')
+            Volume.objects(id=volume.id).update_one(set__generateSlicesStatus='generation failed, please read the logs')
             return
     else:
         logger.debug('volId: %s, frames do NOT have to be normalized, dtype is %s' % (volumeId, str(frames.dtype)))
 
     logger.debug('volId: %s, cropping images to be square' % volumeId)
     try:
-        oldshape = frames.shape
         pixelOffset, newSize = sliceMapCreator.calculateXYDimensions(frames[0])
 
         squared_frames = sliceMapCreator.crop_frames(frames, pixelOffset, newSize)
 
     except Exception as e:
         logger.error('volId: %s, error while cropping: ' % (str(e)))
-        Volume.objects(id=volume.id).update_one(set__generateSlicesStatus = 'generation failed, %s' % str(e))
+        Volume.objects(id=volume.id).update_one(set__generateSlicesStatus='generation failed, %s' % str(e))
         return
 
-
     del frames
     logger.debug('volId: %s, memory freed, frames deleted, keeping squared squared_frames' % volumeId)
 
@@ -160,7 +153,7 @@ def sliceGeneratorPlain(data, volumeId):
                 rawFrame = volume.add_frame(squared_frames[frameNumber], frameNumber)
         except Exception as e:
             logger.error('volId: %s, please provide integers or "" for "sliceFrom" and "sliceTo" exception was: %s' % (volumeId, str(e)))
-            Volume.objects(id=volume.id).update_one(set__generateSlicesStatus = 'generation failed, please read the logs')
+            Volume.objects(id=volume.id).update_one(set__generateSlicesStatus='generation failed, please read the logs')
             return
     else:
         rawFrame = volume.rawFrames[0]
@@ -174,7 +167,7 @@ def sliceGeneratorPlain(data, volumeId):
         logger.debug('volId: %s, memory freed, squared_frames deleted, keeping ubyte frames' % volumeId)
     except Exception as e:
         logger.error('volId: %s, exception: %s' % (volumeId, str(e)))
-        Volume.objects(id=volume.id).update_one(set__generateSlicesStatus = str(e))
+        Volume.objects(id=volume.id).update_one(set__generateSlicesStatus=str(e))
         return
 
     logger.debug('volId: %s, converting ended' % volumeId)
@@ -193,14 +186,14 @@ def sliceGeneratorPlain(data, volumeId):
         infoObject = sliceMapCreator.generateInfo(sprites, 0, len(framesUByte) - 1, sliceFrom, sliceTo)
     except Exception as e:
         logger.error('volId: %s, exception: %s' % (volumeId, str(e)))
-        Volume.objects(id=volume.id).update_one(set__generateSlicesStatus = str(e))
+        Volume.objects(id=volume.id).update_one(set__generateSlicesStatus=str(e))
         return
 
     try:
         volume.clear_textures()
     except Exception as e:
         logger.error('volId: %s, exception: %s' % (volumeId, str(e)))
-        Volume.objects(id=volume.id).update_one(set__generateSlicesStatus = str(e))
+        Volume.objects(id=volume.id).update_one(set__generateSlicesStatus=str(e))
         return
 
     try:
@@ -209,18 +202,19 @@ def sliceGeneratorPlain(data, volumeId):
             volume.add_slice_maps(int(key), sprites[key], originalSize, infoObject)
     except Exception as e:
         logger.error('volId: %s, exception: %s' % (volumeId, str(e)))
-        Volume.objects(id=volume.id).update_one(set__generateSlicesStatus = str(e))
+        Volume.objects(id=volume.id).update_one(set__generateSlicesStatus=str(e))
         return
 
-    Volume.objects(id=volume.id).update_one(set__generateSlicesStatus = 'generation successful')
+    Volume.objects(id=volume.id).update_one(set__generateSlicesStatus='generation successful')
     logger.debug('volId: %s, generation successful' % volumeId)
 
 
-'''
+def __defineSliceRange(frames, sliceFrom, sliceTo):
+    '''
     This method returns the range of slices, that
     shall be generated
-'''
-def __defineSliceRange(frames, sliceFrom, sliceTo):
+    '''
+
     if sliceFrom != '':
         sliceFrom = int(sliceFrom)
     else:

+ 23 - 17
volumes/processing/service/SubvolumeCreator.py

@@ -1,14 +1,10 @@
-from datetime import datetime
-
 from django.conf import settings
 from django.core.cache import cache
 
 import io
 import logging
-logger = logging.getLogger(__name__)
 
 import math
-from multiprocessing import Process, cpu_count, Queue
 import numpy as np
 import os
 from PIL import Image
@@ -17,24 +13,24 @@ import time
 from threading import Thread
 
 from volumes.models import Volume
-from visualization.mongodb import gridfshelper
 import loadtests.facade as loadtests
 
+logger = logging.getLogger(__name__)
+
 
-''' this implementation is only needed for testing'''
 class SubvolumeCreator(Thread):
-    def __init__(self, volumeId, x, y, z, t, minWidth, sqrtZ, numberOfLayers, spriteId, requestedRes,starttime, testId):
+    ''' this implementation is only needed for testing'''
+    def __init__(self, volumeId, x, y, z, t, minWidth, sqrtZ, numberOfLayers, spriteId, requestedRes, starttime, testId):
         Thread.__init__(self)
 
         self.volumeId = volumeId
-        self.frameNumber = frameNumber
-        self.numberOfLayers = numberOfLayers
         self.x = x
         self.y = y
         self.z = z
         self.t = t
         self.minWidth = minWidth
         self.sqrtZ = sqrtZ
+        self.numberOfLayers = numberOfLayers
         self.spriteId = spriteId
         self.requestedRes = requestedRes
         self.starttime = starttime
@@ -55,9 +51,10 @@ class SubvolumeCreator(Thread):
                          self.testId)
 
 
-''' this method is either called in view or SubvolumeCreator.SubvolumeCreator thread '''
 def subvolumeCreator(volumeId, x, y, z, t, minWidth, sqrtZ, numberOfLayers, spriteId, spriteformat, requestedRes, starttime, testId):
-    volume = Volume.objects(id = volumeId).first()
+    ''' this method is either called in view or SubvolumeCreator.SubvolumeCreator thread '''
+
+    volume = Volume.objects(id=volumeId).first()
     requestedRes = int(requestedRes)
     requestedShape = (requestedRes, requestedRes)
     logger.debug('running')
@@ -70,9 +67,9 @@ def subvolumeCreator(volumeId, x, y, z, t, minWidth, sqrtZ, numberOfLayers, spri
         format = "jpeg"
         buff = io.BytesIO()
         image.save(buff, format=format, progressive=True, quality=95)
-        buff.seek(0,0)
+        buff.seek(0, 0)
         cache.set(get_sprite_filename(spriteId, spriteformat), buff, settings.SUBVOLUME_CACHING_TIME)
-        #gridfshelper.savefile(get_sprite_filename(spriteId, spriteformat), buff)
+        '''gridfshelper.savefile(get_sprite_filename(spriteId, spriteformat), buff)'''
         return
 
     imageAsArray = volume.get_frame_numpy_array(t)
@@ -92,7 +89,7 @@ def subvolumeCreator(volumeId, x, y, z, t, minWidth, sqrtZ, numberOfLayers, spri
         yoffset = math.floor(layerCounter / sqrtZ) * minWidth
         xoffset = (layerCounter % sqrtZ) * minWidth
 
-        subvolume[yoffset : yoffset+minWidth, xoffset : xoffset+minWidth] = zlayer[y : y+minWidth, x : x+minWidth]
+        subvolume[yoffset: yoffset+minWidth, xoffset: xoffset+minWidth] = zlayer[y: y+minWidth, x: x+minWidth]
 
         layerCounter += 1
 
@@ -100,11 +97,11 @@ def subvolumeCreator(volumeId, x, y, z, t, minWidth, sqrtZ, numberOfLayers, spri
 
     subvolume = img_as_ubyte(subvolume)
     image = Image.fromarray(subvolume)
-    image = image.resize(requestedShape, resample = Image.BILINEAR)
+    image = image.resize(requestedShape, resample=Image.BILINEAR)
     format = spriteformat
     buff = io.BytesIO()
     image.save(buff, format=format, progressive=True, quality=95)
-    buff.seek(0,0)
+    buff.seek(0, 0)
     spriteFilename = get_sprite_filename(spriteId, spriteformat)
 
     bufferValue = buff.getvalue()
@@ -118,11 +115,20 @@ def subvolumeCreator(volumeId, x, y, z, t, minWidth, sqrtZ, numberOfLayers, spri
     processing_duration = processing_endtime - starttime
 
     if testId is not None:
-        loadtests.addTestResult(testId, imageAsArray.shape, (numberOfLayers, minWidth, minWidth), (x, y, z), processing_duration, copy_duration, imageAsArray.dtype)
+        loadtests.addTestResult(
+            testId,
+            imageAsArray.shape,
+            (numberOfLayers, minWidth, minWidth),
+            (x, y, z),
+            processing_duration,
+            copy_duration,
+            imageAsArray.dtype
+        )
     else:
         logger.debug('no testid given')
 
     logger.debug(str(os.getpid()) + 'finished, duration: %s of ' % (str(processing_duration)))
 
+
 def get_sprite_filename(sprite_id, sprite_format):
     return '%s.%s' % (str(sprite_id), sprite_format)

+ 3 - 3
volumes/processing/urls.py

@@ -1,11 +1,11 @@
-from django.conf.urls import patterns, include, url
+from django.conf.urls import patterns, url
 
 from . import views
 
 # volumes processing url file
 
-urlpatterns = patterns('',
-
+urlpatterns = patterns(
+    '',
     url(r'^generate-slice/$', views.generateslice, name='gen-slice'),
     url(r'^sub/(?P<x>[\d]+)/(?P<y>[\d]+)/(?P<z>[\d]+)/(?P<t>[\d]+)/(?P<depth>[\d]+)/$', views.getSubvolume),
     url(r'^sub/(?P<x>[\d]+)/(?P<y>[\d]+)/(?P<z>[\d]+)/(?P<t>[\d]+)/(?P<depth>[\d]+)/(?P<testId>[\da-z]+)/$', views.getSubvolume),

+ 59 - 70
volumes/processing/views.py

@@ -1,19 +1,10 @@
-import io, os
-import re
 import time
 import math
-import copy
 import json
 
-from threading import Thread
-from multiprocessing import Process, cpu_count, Queue
-
 from django.core.urlresolvers import reverse
-from django.shortcuts import render, render_to_response
-from django.template import RequestContext
 from django.http import HttpResponseRedirect, HttpResponse
 from django.contrib import messages
-from django.views.decorators.cache import cache_page
 from django.core.cache import cache
 
 from django.conf import settings
@@ -22,40 +13,27 @@ from mongoengine import ValidationError
 
 from bson.objectid import ObjectId
 
+from multiprocessing import Process
+
 from .models import SpriteMetaData
 from .service import SliceGenerator, SubvolumeCreator
-from ..models import Volume, Texture, TextureInfo, RawFrame
+from ..models import Volume
 from ..views import handleException
 
 from visualization.mongodb import gridfshelper
 
-from loadtests import facade as loadtests
-
 from datetime import datetime, timedelta
 
-from PIL import Image
-from skimage import img_as_ubyte
-import numpy as np
-
 import logging
 
-import pdb
-
 logger = logging.getLogger(__name__)
 
+
 def generateslice(request, id):
     if request.method != 'POST':
         messages.error(request, 'no post')
         return HttpResponseRedirect(reverse('volumes:show', args=(id,)))
 
-    data = request.POST
-    try:
-        if data['destSize'] != '':
-            size = int(data['destSize'])
-    except ValueError:
-        messages.error(request, 'please provide a valid value(s) for "destSize"')
-        return HttpResponseRedirect(reverse('volumes:show', args=(id,)))
-
     try:
         volume = Volume.objects(id=id)[0]
     except (IndexError, ValidationError) as e:
@@ -74,7 +52,7 @@ def generateslice(request, id):
     return HttpResponseRedirect(reverse('volumes:show', args=(id,)))
 
 
-def getSubvolume(request, id, x, y, z, t, depth, testId = None):
+def getSubvolume(request, id, x, y, z, t, depth, testId=None):
     starttime = time.time()
     try:
         volume = Volume.objects(id=id)[0]
@@ -96,27 +74,27 @@ def getSubvolume(request, id, x, y, z, t, depth, testId = None):
 
     if testId is None:
         ''' are there any sprites within 30pixels around the point ? '''
-        spriteMetaDatas = SpriteMetaData.objects(x__gte=(x-sizex/10),
-                                           x__lte=(x+sizex/10),
-                                           y__gte=(y-sizey/10),
-                                           y__lte=(y+sizey/10),
-                                           z__gte=(z-sizez/10),
-                                           z__lte=(z+sizez/10),
-                                           depth=depth,
-                                           volumeId=id)
+        spriteMetaDatas = SpriteMetaData.objects(
+            x__gte=(x-sizex/10),
+            x__lte=(x+sizex/10),
+            y__gte=(y-sizey/10),
+            y__lte=(y+sizey/10),
+            z__gte=(z-sizez/10),
+            z__lte=(z+sizez/10),
+            depth=depth,
+            volumeId=id
+        )
 
         ''' found a generated sprite in the near of the clicked point, just using it '''
         if len(spriteMetaDatas) > 0:
             for spriteMetaData in spriteMetaDatas:
-                print('spritemetadatas found')
-                spritefilename = '%s.%s' %(str(spriteMetaData.spriteId), spriteMetaData.format)
+                spritefilename = '%s.%s' % (str(spriteMetaData.spriteId), spriteMetaData.format)
                 if cache.get(spritefilename) is not None:
                     return HttpResponse(spriteMetaData.jsonInformation, content_type='json')
                 else:
                     spriteMetaData.delete()
     ''' end testId is None '''
 
-
     spriteId = ObjectId()
     format = 'jpeg'
 
@@ -146,7 +124,7 @@ def getSubvolume(request, id, x, y, z, t, depth, testId = None):
 
     minWidthHalf = int(math.floor(minWidth / 2))
 
-    numberOfLayers = minWidth # we want it to be cube
+    numberOfLayers = minWidth  # we want it to be cube
     sqrtZ = int(math.floor(math.sqrt(numberOfLayers)))
     numberOfLayers = int(math.pow(sqrtZ, 2))
 
@@ -185,32 +163,33 @@ def getSubvolume(request, id, x, y, z, t, depth, testId = None):
     else:
         z = z - numberOfLayersHalf
 
-    print('x, y, z, minWidth, sqrtZ', str(x), str(y), str(z), str(minWidth), str(sqrtZ), str(numberOfLayers), str(t));
-
-    #creatorThread = SubvolumeCreator.SubvolumeCreator(volume.id, x, y, z, t, minWidth, sqrtZ, numberOfLayers, spriteId, format, starttime, testId)
-    #creatorThread.start()
+    '''
+    creatorThread = SubvolumeCreator.SubvolumeCreator(volume.id, x, y, z, t, minWidth, sqrtZ, numberOfLayers, spriteId, format, starttime, testId)
+    creatorThread.start()
+    '''
 
     requestedRes = int(request.session.get('requestedRes', 2048))
     if requestedRes is None or requestedRes < 2048:
         requestedRes = 2048
 
-    creatorProcess = Process(target=SubvolumeCreator.subvolumeCreator,
-                             args=(
-                                    volume.id,
-                                    x,
-                                    y,
-                                    z,
-                                    t,
-                                    minWidth,
-                                    sqrtZ,
-                                    numberOfLayers,
-                                    spriteId,
-                                    format,
-                                    requestedRes,
-                                    starttime,
-                                    testId,
-                                  )
-                            )
+    creatorProcess = Process(
+        target=SubvolumeCreator.subvolumeCreator,
+        args=(
+            volume.id,
+            x,
+            y,
+            z,
+            t,
+            minWidth,
+            sqrtZ,
+            numberOfLayers,
+            spriteId,
+            format,
+            requestedRes,
+            starttime,
+            testId,
+        )
+    )
     creatorProcess.start()
 
     infoObject = {}
@@ -232,20 +211,22 @@ def getSubvolume(request, id, x, y, z, t, depth, testId = None):
 
     return HttpResponse(jsonString, content_type='json')
 
+
 def getSubvolumeSprite(request, id, spriteId):
     return getSubvolumeFromCache(request, id, spriteId)
-    #return getSubvolumeFromGridFS(request, id, spriteId)
+    '''return getSubvolumeFromGridFS(request, id, spriteId)'''
+
 
 def getSubvolumeFromGridFS(request, id, spriteId):
     filename = spriteId + '.jpeg'
-    handle = None
     if gridfshelper.fileexists(filename):
         handle = gridfshelper.openfile(spriteId + '.jpeg')
+        return HttpResponse(handle.read(), content_type='image/jpeg')
     else:
         return HttpResponse(None, content_type='image/jpeg')
 
+
 def getSubvolumeFromCache(request, id, spriteId):
-    filename = spriteId + '.jpeg'
     handle = cache.get(spriteId + '.jpeg')
     if handle is None:
         response = HttpResponse(None, content_type='image/jpeg')
@@ -257,17 +238,18 @@ def getSubvolumeFromCache(request, id, spriteId):
 
 
 def subvolumeAvailable(request, id, spriteId):
-    #jsonstring = json.dumps({ 'available' : gridfshelper.fileexists(spriteId + '.jpeg') })
-    jsonstring = json.dumps({ 'available' : cache.get(spriteId + '.jpeg') is not None })
+    '''jsonstring = json.dumps({ 'available' : gridfshelper.fileexists(spriteId + '.jpeg') })'''
+    jsonstring = json.dumps({'available': cache.get(spriteId + '.jpeg') is not None})
     return HttpResponse(jsonstring, content_type='json')
 
-def listfiles(request, id, plain = None):
+
+def listfiles(request, id, plain=None):
     try:
         spriteMetaDatas = SpriteMetaData.objects()
     except (IndexError, ValidationError) as e:
         return handleException(request, id, e)
     print(plain)
-    if plain == None:
+    if plain is None:
         filenames = []
         for spriteMetaData in spriteMetaDatas:
             filenames.append(spriteMetaData.spriteId)
@@ -276,9 +258,10 @@ def listfiles(request, id, plain = None):
 
     print(filenames)
 
-    jsonstring = json.dumps({'files': filenames })
+    jsonstring = json.dumps({'files': filenames})
     return HttpResponse(jsonstring, content_type='json')
 
+
 def deletefiles(request, id):
     try:
         spriteMetaDatas = SpriteMetaData.objects()
@@ -297,5 +280,11 @@ def deletefiles(request, id):
         else:
             kept.append(spriteMetaData.spriteId)
 
-    return HttpResponse(json.dumps({'deleted' : deleted, 'kept' : kept, 'minCachingTime(sec)' : minCachingTime.total_seconds()}), content_type='json')
-
+    return HttpResponse(
+        json.dumps({
+                'deleted': deleted,
+                'kept': kept,
+                'minCachingTime(sec)': minCachingTime.total_seconds()
+            }),
+        content_type='json'
+    )

+ 2 - 1
volumes/urls.py

@@ -6,7 +6,8 @@ from .processing import urls as processingurls
 
 # volumes url file
 
-urlpatterns = patterns('',
+urlpatterns = patterns(
+    '',
     url(r'^$', views.index, name='home'),
     url(r'^add/$', views.add, name='add'),
     url(r'^add-list/$', views.addList, name='addList'),

+ 17 - 20
volumes/views.py

@@ -6,7 +6,6 @@ from django.contrib import messages
 
 from django.conf import settings
 
-from bson import json_util
 import json
 
 from mongoengine import ValidationError
@@ -22,14 +21,14 @@ import logging
 
 import os
 
-import pdb
-
 logger = logging.getLogger(__name__)
 
 # volumes views
 
+
 def index(request):
-    return render(request, 'volumes/index.html', {'volumes': Volume.objects() })
+    return render(request, 'volumes/index.html', {'volumes': Volume.objects()})
+
 
 def show(request, id):
     try:
@@ -37,7 +36,8 @@ def show(request, id):
     except (IndexError, ValidationError) as e:
         return handleException(request, id, e)
 
-    return render(request, 'volumes/show.html', { 'volume': volume })
+    return render(request, 'volumes/show.html', {'volume': volume})
+
 
 def showStatus(request, id):
     try:
@@ -48,7 +48,7 @@ def showStatus(request, id):
     jsonDump = json.dumps({
         'volumeId': str(volume.id),
         'generateSlicesStatus': volume.generateSlicesStatus
-    });
+    })
     return HttpResponse(jsonDump, content_type="json")
 
 
@@ -66,7 +66,8 @@ def add(request):
             messages.error(request, 'input not valid')
             return HttpResponseRedirect(reverse('volumes:home'))
 
-def edit(request, id = None):
+
+def edit(request, id=None):
     if id is not None:
         try:
             volume = Volume.objects(id=id)[0]
@@ -89,11 +90,12 @@ def edit(request, id = None):
         'form': form,
         'submitAction': submitAction,
         'defaultPath': settings.DEFAULT_IMPORT_PATH,
-        #'fileList': json.dumps(__gatherInputFolderList())
+        '''fileList': json.dumps(__gatherInputFolderList())'''
         'fileList': json.dumps([])
     }
     return render_to_response('volumes/edit.html', template_context, RequestContext(request))
 
+
 def addList(request):
     if request.method == 'POST':
         data = request.POST
@@ -111,7 +113,6 @@ def addList(request):
             volume = volume.save()
             volumesToProcess.append(volume.id)
 
-
         process = Process(target=SliceGenerator.generateListOfVolumes, args=(volumesToProcess,))
         process.start()
 
@@ -125,6 +126,7 @@ def addList(request):
 
     return render_to_response('volumes/addList.html', template_context, RequestContext(request))
 
+
 def delete(request, id):
     try:
         volume = Volume.objects(id=id)[0]
@@ -134,6 +136,7 @@ def delete(request, id):
     volume.delete()
     return HttpResponseRedirect(reverse('volumes:home'))
 
+
 def handleException(request, id, e):
     if type(e) is ValidationError:
         messages.error(request, '%s not a valid ObjectId' % id)
@@ -142,6 +145,7 @@ def handleException(request, id, e):
 
     return HttpResponseRedirect(reverse('volumes:home'))
 
+
 def showSprite(request, id, spriteId):
     try:
         sprite, contenttype = Volume.read_sprite(id, spriteId)
@@ -173,6 +177,7 @@ def getTextureInfo(request, id, size):
     jsonDump = texture.to_json()
     return HttpResponse(jsonDump, content_type="json")
 
+
 def deleteTexture(request, id, size):
     try:
         size = int(size)
@@ -188,7 +193,7 @@ def deleteTexture(request, id, size):
     return HttpResponseRedirect(reverse('volumes:show', args=(id,)))
 
 
-def render3D(request, id, res = None):
+def render3D(request, id, res=None):
     try:
         volume = Volume.objects(id=id)[0]
     except (IndexError, ValidationError) as e:
@@ -222,10 +227,12 @@ def render3D(request, id, res = None):
             'defaultSize': defaultSize
         })
 
+
 def __gatherInputFolderList():
     fileList = __controlForSubfolder(settings.DEFAULT_IMPORT_PATH, 0)
     return fileList
 
+
 def __controlForSubfolder(path, depth):
     outputList = [path]
 
@@ -244,13 +251,3 @@ def __controlForSubfolder(path, depth):
             outputList.append(fileItem)
 
     return outputList
-
-
-
-
-
-
-
-
-
-