def delete(self, force=False, rerecord=False): """ Program.delete(force=False, rerecord=False) -> retcode Informs backend to delete recording and all relevent data. 'force' forces a delete if the file cannot be found. 'rerecord' sets the file as recordable in oldrecorded """ be = FileOps(db=self._db) res = int(be.deleteRecording(self, force=force)) if res < -1: raise MythBEError('Failed to delete file') if rerecord: be.forgetRecording(self) return res
def announce(self): if self.mode == 'r': cmd = 'ANN FileTransfer %s 0 0 2000' elif self.mode == 'w': cmd = 'ANN FileTransfer %s 1' res = self.backendCommand( BACKEND_SEP.join( [cmd % self.localname, self.filename, self.sgroup])) if res.split(BACKEND_SEP)[0] != 'OK': raise MythBEError(MythError.PROTO_ANNOUNCE, self.host, self.port, res) else: sp = res.split(BACKEND_SEP) self._sockno = int(sp[1]) self._size = int(sp[2])
def downloadTo(self, url, storagegroup, filename, \ forceremote=False, openfile=False): if openfile: eventlock = self.allocateEventLock(\ re.escape(BACKEND_SEP).\ join(['BACKEND_MESSAGE', 'DOWNLOAD_FILE UPDATE', re.escape(url)])) if filename[0] != '/': filename = '/' + filename res = self.backendCommand(BACKEND_SEP.join((\ 'DOWNLOAD_FILE', url, storagegroup, filename))).\ split(BACKEND_SEP) if res[0] != 'OK': raise MythBEError('Download failed') if openfile: eventlock.wait() return ftopen(res[1], 'r', forceremote, db=self.db, download=True)
def run(self, *args, **kwargs): pgfieldcount = len(Program._field_order) pgrecstatus = Program._field_order.index('recstatus') pgrecordid = Program._field_order.index('recordid') res = self.inst.backendCommand(self.query).split(BACKEND_SEP) for i in xrange(self.header_length): res.pop(0) num_progs = int(res.pop(0)) if num_progs * pgfieldcount != len(res): raise MythBEError(MythBEError.PROTO_PROGRAMINFO) for i in range(num_progs): offs = i * pgfieldcount if self.recstatus is not None: if int(res[offs + pgrecstatus]) != self.recstatus: continue pg = self.handler(res[offs:offs + pgfieldcount], db=self.inst.db) pg = self.func(pg, *args, **kwargs) if pg is not None: yield pg