def toInfoData(self): return FileInfo( self.fid, self.getName(), self.packageid, self.ownerid, self.getSize(), self.filestatus, self.media, self.added, self.fileorder, DownloadInfo(self.url, self.pluginname, self.hash, self.status, self.getStatusName(), self.error))
def getFileInfo(self, fid, force=False): """get data for specific file, when force is true download info will be appended""" self.c.execute('SELECT fid, name, owner, size, status, media, added, fileorder, ' 'url, plugin, hash, dlstatus, error, package FROM files ' 'WHERE fid=?', (fid,)) r = self.c.fetchone() if not r: return None else: f = FileInfo(r[0], r[1], r[13], r[2], r[3], r[4], r[5], r[6], r[7]) if r[11] > 0 or force: f.download = DownloadInfo(r[8], r[9], r[10], r[11], self.manager.statusMsg[r[11]], r[12]) return f
def getAllFiles(self, package=None, search=None, state=None, owner=None): """ Return dict with file information :param package: optional package to filter out :param search: or search string for file name :param unfinished: filter by dlstatus not finished :param owner: only specific owner """ qry = ( 'SELECT fid, name, owner, size, status, media, added, fileorder, ' 'url, plugin, hash, dlstatus, error, package FROM files WHERE ') arg = [] if state is not None and state != DS.All: qry += 'dlstatus IN (%s) AND ' % state_string(state) if owner is not None: qry += 'owner=? AND ' arg.append(owner) if package is not None: arg.append(package) qry += 'package=? AND ' if search is not None: search = "%%%s%%" % search.strip("%") arg.append(search) qry += "name LIKE ? " # make qry valid if qry.endswith("WHERE "): qry = qry[:-6] if qry.endswith("AND "): qry = qry[:-4] self.c.execute(qry + "ORDER BY package, fileorder", arg) data = OrderedDict() for r in self.c: f = FileInfo(r[0], r[1], r[13], r[2], r[3], r[4], r[5], r[6], r[7]) if r[11] > 0: # dl status != NA f.download = DownloadInfo(r[8], r[9], r[10], r[11], self.manager.statusMsg[r[11]], r[12]) data[r[0]] = f return data