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
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