tasks.py 1.89 KB
from __future__ import absolute_import

from celery.task import Task
from common.models import *

import time
import os

IMAGES_FOLDER = "misc/images"

class analysis(Task):
    '''
        Gets the name of the image to analyze in parameter
        It applies the calibrations, then makes the 
    '''

    def run(self, plan_id):
        # je dois jsute créer mes deux fonctions, une pour les corrections, et l'autre pour les analyses

        plan = Plan.objects.get(id=plan_id)
        image_name = plan.name

        print("analysis : ", image_name)

        new_img = self.apply_calibrations(image_name)
        # TODO: Faire ça uniquement si c'est une image provenant d'une alerte
        self.do_analysis(new_img)

        # TODO: virer tout ça
        time.sleep(1)
        with open(os.path.join(IMAGES_FOLDER, str(image_name) + '_analyzed'), 'w'):
            pass
        message = 'Analyzed image in ' + str(image_name)
        Log.objects.create(agent='Analyzer', message=message)

    def apply_calibrations(self, image_name):
        '''
            Uses the calibration files to correct the image (changes the image bytes)
            Send the new images to the FSC
        '''
        # TODO: récupérer les bonne images dans le dossier analyzer/calibrations, et les appliquer
        # renvoie le nom de l'image calibrée; penser à vérifier que les fichiers de calibration existent à cet endroit
        # TODO: copier l'image dans le bon dossier pour le filesync (lien symbolique)
        return "toto.fits"

    def do_analysis(self, new_img):
        '''
            Use the scientific softwares to create analysis files (doesn't change the image bytes)
            Sends the results to the FSC
        '''
        # TODO: utiliser les programmes scientifiques pour générer les analyses
        # TODO: copier les résultats des analyses dans le bon dossier pour le filesync (lien symbolique)
        pass