Example #1
0
    def filesOfStatus(self,
                      status,
                      limit=0,
                      loadChecksums=True,
                      doingJobSplitting=False):
        """
        _filesOfStatus_

        Return a Set of File objects that have the given status with respect
        to this subscription.
        """
        existingTransaction = self.beginTransaction()

        status = status.title()
        files = set()
        if limit > 0:
            action = self.daofactory(
                classname="Subscriptions.Get%sFilesByLimit" % status)
            fileList = action.execute(self["id"],
                                      limit,
                                      conn=self.getDBConn(),
                                      transaction=self.existingTransaction())
        else:
            action = self.daofactory(classname="Subscriptions.Get%sFiles" %
                                     status)
            fileList = action.execute(self["id"],
                                      conn=self.getDBConn(),
                                      transaction=self.existingTransaction())

        if doingJobSplitting:
            fileInfoAct = self.daofactory(
                classname="Files.GetForJobSplittingByID")
        else:
            fileInfoAct = self.daofactory(classname="Files.GetByID")

        fileInfoDict = fileInfoAct.execute(
            file=[x["file"] for x in fileList],
            conn=self.getDBConn(),
            transaction=self.existingTransaction())

        #Run through all files
        for f in fileList:
            fl = File(id=f['file'])
            if loadChecksums:
                fl.loadChecksum()
            fl.update(fileInfoDict[f['file']])
            if 'locations' in f.keys():
                fl.setLocation(f['locations'], immediateSave=False)
            files.add(fl)

        self.commitTransaction(existingTransaction)
        return files
Example #2
0
    def filesOfStatus(self, status, limit = 0, loadChecksums = True, doingJobSplitting = False):
        """
        _filesOfStatus_
        
        Return a Set of File objects that have the given status with respect
        to this subscription.        
        """
        existingTransaction = self.beginTransaction()
        
        status = status.title()
        files  = set()
        if limit > 0:
            action = self.daofactory(classname = "Subscriptions.Get%sFilesByLimit" % status)
            fileList = action.execute(self["id"], limit, conn = self.getDBConn(),
                                      transaction = self.existingTransaction())
        else:
            action = self.daofactory(classname = "Subscriptions.Get%sFiles" % status)
            fileList = action.execute(self["id"], conn = self.getDBConn(),
                                      transaction = self.existingTransaction())

        if doingJobSplitting:
            fileInfoAct  = self.daofactory(classname = "Files.GetForJobSplittingByID")
        else:
            fileInfoAct  = self.daofactory(classname = "Files.GetByID")
            
        fileInfoDict = fileInfoAct.execute(file = [x["file"] for x in fileList],
                                           conn = self.getDBConn(),
                                           transaction = self.existingTransaction())
            
        #Run through all files
        for f in fileList:
            fl = File(id = f['file'])
            if loadChecksums:
                fl.loadChecksum()
            fl.update(fileInfoDict[f['file']])
            if 'locations' in f.keys():
                fl.setLocation(f['locations'], immediateSave = False)
            files.add(fl)
            
        self.commitTransaction(existingTransaction)
        return files