def collect(self, owner, arguments, callback=None):
        self.isSkip = False

        if self.dataCollect is None:
            msg = "MultiCollect: not properly configured"
            logging.getLogger("HWR").error(msg)
            return (False, msg)

        # Set the keep_sample_loaded key
        prev_sample_code = None
        prev_sample_basket = None
        prev_sample_vial = None
        prev_arg = None
        for arg in arguments:
            current_sample_code = None
            current_sample_basket = None
            current_sample_vial = None
            try:
                current_sample_code = arg["sample_reference"]["code"]
            except KeyError:
                try:
                    current_sample_basket = int(arg["sample_reference"]["container_reference"])
                except (KeyError, ValueError, TypeError):
                    pass
                else:
                    try:
                        current_sample_vial = int(arg["sample_reference"]["sample_location"])
                    except (KeyError, ValueError, TypeError):
                        current_sample_basket = None

            if prev_arg is not None:
                if prev_sample_code is not None and prev_sample_code == current_sample_code:
                    prev_arg["keep_sample_loaded"] = True
                elif (
                    prev_sample_basket is not None
                    and prev_sample_basket == current_sample_basket
                    and prev_sample_vial == current_sample_vial
                ):
                    prev_arg["keep_sample_loaded"] = True

            prev_arg = arg
            prev_sample_code = current_sample_code
            prev_sample_basket = current_sample_basket
            prev_sample_vial = current_sample_vial

        self.currentCollection = arguments
        # print 'MS 2013-07-03 self.currentCollection', self.currentCollection
        self.currentCollectionIndex = 0
        self.currentOwner = owner
        self.currentCallback = callback
        my_callback = None
        if self.currentCallback is not None:
            my_callback = self.collectCallback

        collect_dict = self.currentCollection[self.currentCollectionIndex]
        self.currCollectThread = DataCollectPX2.startActionsThread(
            CollectActions(self.dataCollect, self.currentOwner, collect_dict, my_callback)
        )
        return (True,)
示例#2
0
    def collect(self,owner,arguments,callback=None):
        self.isSkip=False

        if self.dataCollect is None:
            msg='MultiCollect: not properly configured'
            logging.getLogger("HWR").error(msg)
            return (False,msg)

        # Set the keep_sample_loaded key
        prev_sample_code=None
        prev_sample_basket=None
        prev_sample_vial=None
        prev_arg=None
        for arg in arguments:
            current_sample_code=None
            current_sample_basket=None
            current_sample_vial=None
            try:
                current_sample_code=arg['sample_reference']['code']
            except KeyError:
                try:
                    current_sample_basket=int(arg['sample_reference']['container_reference'])
                except (KeyError,ValueError,TypeError):
                    pass
                else:
                    try:
                        current_sample_vial=int(arg['sample_reference']['sample_location'])
                    except (KeyError,ValueError,TypeError):
                        current_sample_basket=None

            if prev_arg is not None:
                if prev_sample_code is not None and prev_sample_code==current_sample_code:
                    prev_arg["keep_sample_loaded"]=True
                elif prev_sample_basket is not None and prev_sample_basket==current_sample_basket and prev_sample_vial==current_sample_vial:
                    prev_arg["keep_sample_loaded"]=True

            prev_arg=arg
            prev_sample_code=current_sample_code
            prev_sample_basket=current_sample_basket
            prev_sample_vial=current_sample_vial

        self.currentCollection=arguments
        #print 'MS 2013-07-03 self.currentCollection', self.currentCollection
        self.currentCollectionIndex=0
        self.currentOwner=owner
        self.currentCallback=callback
        my_callback=None
        if self.currentCallback is not None:
            my_callback=self.collectCallback

        collect_dict=self.currentCollection[self.currentCollectionIndex]
        self.currCollectThread=DataCollectPX2.startActionsThread(CollectActions(self.dataCollect,self.currentOwner,collect_dict,my_callback))
        return (True,)
示例#3
0
 def collectEnded(self,owner,state,message):
     print "MS 17.09.2012. collectEnded"
     if self.isSkip:
         self.isSkip=False
     # Catching exception if self.currentCollectionIndex not int
     try:
         self.currentCollectionIndex += 1
     except TypeError:
         self.currentCollectionIndex = 1
     print 'MS 20.09.2012 debug, self.currentCollection', self.currentCollection
     try:
         collect_dict=self.currentCollection[self.currentCollectionIndex]
     except IndexError:
         self.multiCollectCleanup()
         self.emit('collectEnded', (owner,state,message))
     else:
         if self.currCollectThread is not None:
             self.currCollectThread.respect()
         my_callback=None
         if self.currentCallback is not None:
             my_callback=self.collectCallback
         self.currCollectThread=DataCollectPX2.startActionsThread(CollectActions(self.dataCollect,self.currentOwner,collect_dict,my_callback))